2012-10-09 21 views
5

Uygulamamdaki özelliklerden biri, kullanıcının uygulamadan çıkış yapması durumunda uzaktan puschotification'dan kaydını kaldırmaktır. Cihaz uçak (offline) modundayken kullanıcı oturumu kapattığında push mesajı uygulamasının kaydını silebileceğim bir yol var mı?IOS unregisterForRemoteNotifications uçak modunda çalışmaz

Bu kodu denedim ancak çevrimiçi geri döndüğümde bildirim almaya devam ediyorum, [[UIApplication sharedApplication] unregisterForRemoteNotifications];

Aygıt uçak modundayken, uygulamalardan birinin bildirim merkezinden nasıl kaldırılacağı konusunda yardımcı olabilir misiniz?

+1

Kayıt olmak için internete bağlı olmanız gerekmiyor mu? – DGund

+0

@DGund Aynı yanlış anlamadaydım, ancak gerçekte bildirimin kaydını başarıyla almak için çevrimiçi olmanız gerekiyor. Bağlantınız olmasa da kayıtsız olmanız durumunda hala bildirim alırsınız. – user1732255

cevap

0

bir bayrak veya benzeri ekle Aradığınızda, (eğer ShouldRecallUnregister gibi istersen diyoruz)

[[UIApplication sharedApplication] unregisterForRemoteNotifications];

internet bağlantı varsa sen EVET olarak ayarlanmış

ve bırakın kayıtsızlık çalışıyorsa

UserDefaults ([[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ShouldRecallUnregister"];) saklayın onu ve applicationDidBecomeActive: yılında değerini kontrol örneğin (veya yere o uygulama en uygun).

EVET ise, tekrar [[UIApplication sharedApplication] unregisterForRemoteNotifications]; numaralı telefonu arayın.

+0

Bunun gibi, uçak saatinin kapanmasından ve uygulama etkinleşmesinden zaman çizelgesinde daha fazla bildirim alacaksınız. – ilmiacs

+0

Çözüm için teşekkürler. unregisterForRemoteNotifications, kayıt silme işleminin başarılı olup olmadığını izlemek için bir etkinlik çağrısına sahip değil mi? Takip etmenin bir yolu var mı? – user1732255

+0

@rdurand Bu çözüm, kullanıcı uygulamadan çıktıktan sonra bildirim almamam gerektiği için gereksinimi karşılamadı.Bu çözümde kayıt silme işlemi yalnızca kullanıcı yeniden başlatıldığında veya uygulamayı ön plana getirdiğinde tamamlanır. O zamana kadar hala bildirim alırız. Daha iyi bir dokuma var mı? – user1732255

2

Apple, uzaktan push bildirimlerini denetler. Çevrimdışıysanız mantıksal olarak devre dışı bırakamazsınız. Apple sizi ilk kez çevrimiçi olarak gördüğünde ve iterler devre dışı bırakılmadığında, size iterek gönderir. Uygulamanın elinde olmadığı için Apple'ın kullanıcıya gönderdiği itmeleri göstermesi için iDevice'i durdurmanın bir yolu yoktur.

Bu yüzden sadece bir olasılık var: Cihaz tekrar çevrimiçi olduktan sonra HATIRLATMALARI devre dışı bırakmanız gerekiyor. Ve yine de bir şans meselesi, Apple'ın önce hangi mesajı aldığını, çevrimiçi olduğunuzu veya itmeyi devre dışı bıraktığınızı. Ayrıca, Apple'ın çevrimdışıyken cihaza göndermek istediği bildirimlere ne olacağı sorusu da var. Çevrimiçi olduğunda bunları tekrar gönderecek mi yoksa ilk devre dışı bırakıldığında bunları atacak mı? Bilmiyorum. Araştırmayı yapman gerekecek.

Kullanıcıların çevrimiçiyken uygulamanız arka planda ise, sahip olduğunuz tek şans. Sistem bildirimlerine yanıt verebilmek için uygulamanızın askıya alınmasını (here's bunun nasıl gerçekleştirileceğini) engellemeniz gerekir. İhtiyacınız olan bildirim çevrimiçi durumun değişmesidir, sadece var olduğunu biliyorum. This resource yardımcı olabilir. Cihaz çevrimiçi olduğunda, arka planda bekleyen (askıya alınmayan) uygulamanızı bilgilendirir. O zaman, hemen frm uzaktan itirafı kaydıyla tepki verebilirsiniz.

Bu yönde gerçekleştirebileceğiniz en iyi şey budur. Bu yardımcı olur umarım.

+0

Tekrar, çözümünüz yasal görünüyor. – rdurand

İlgili konular