2016-06-13 16 views
5

Czytałem w kilku stanowisk (jak ten https://forums.developer.apple.com/thread/7598), że ustawienieWyczyść applicationIconBadgeNumber bez usuwania powiadomień nie działa

application.applicationIconBadgeNumber = -1 

na applicationDidBecomeActive lub applicationWillEnterForeground pozwoli mi usunąć numer karty identyfikacyjnej bez usuwania powiadomień centrum powiadomień. Kiedy ustawiam application.applicationIconBadgeNumber na liczbę ujemną (jak -1), kasowane są wszystkie moje powiadomienia z Notification Center. Czy istnieje inny sposób na wyczyszczenie numeru identyfikatora bez usuwania notifications?

+0

co się dzieje, kiedy ustawić go na wartość dodatnią jak 1 i ma 5 notif w centrum notyfikacji. – Shubhank

+0

To bardzo dobre pytanie. W rzeczywistości nie ma kontroli nad liczbą powiadomień w centrum powiadomień. Możesz policzyć je ręcznie, ale są sytuacje, w których dostaniesz błąd, który właśnie opisałeś, gdzie znaczek ikony pokazuje numer 1, ale faktycznie masz 5 w centrum powiadomień. Przyda mi się jednak w mojej aplikacji tylko po to, aby wyczyścić numer identyfikacyjny ikony i pozostawić powiadomienia w centrum powiadomień, gdy użytkownik ich potrzebuje. –

+0

tak, nie chciałem powiedzieć, że jako rozwiązanie. Chciałem tylko wiedzieć, co się stanie w takim przypadku. Czy powiadomienia zostaną wyczyszczone lub pozostawione do końca 1? Także, skoro masz do czynienia z powiadomieniem push, wierzę - czy nie możesz ustawić liczby znaczników na 0? – Shubhank

Odpowiedz

2

Ustawienie plakietki aplikacji na -1 pośrednio z pustym powiadomieniem lokalnym zadziałało, ale jest hackem do utrzymywania powiadomień na tacce podczas odliczania znaczka aplikacji.

if(badgeCount == 0) { 
    //set application badge indirectly with UILocalNotification 
    UILocalNotification *ln = [[UILocalNotification alloc]init]; 
    ln.applicationIconBadgeNumber = -1; 
    [[UIApplication sharedApplication] presentLocalNotificationNow:ln]; 
} 
else { 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeCount]; 
} 

Swift Wersja

if badgeCount == 0 { 
    //set application badge indirectly with UILocalNotification 
    var ln = UILocalNotification() 
    ln.applicationIconBadgeNumber = -1 
    UIApplication.sharedApplication().presentLocalNotificationNow(ln) 
} 
else { 
    UIApplication.sharedApplication().applicationIconBadgeNumber = badgeCount 
} 

testowane na iOS 9 i 10. Podejście

+1

Dziękuję za zredagowanie twojej odpowiedzi, Irfan. – Moritz

+0

Nie ma za co. –

+0

Czy ktoś sprawdził, czy to działa również na iOS 11? – SpacyRicochet

Powiązane problemy