2016-06-13 9 views
5
Entfernen

ich in ein paar Beiträge gelesen habe (wie dieser https://forums.developer.apple.com/thread/7598), dassKlar applicationIconBadgeNumber ohne Benachrichtigungen nicht funktioniert

application.applicationIconBadgeNumber = -1 

auf applicationDidBecomeActive oder applicationWillEnterForeground Einstellung würde mir erlauben, ohne entfernen die Benachrichtigungen von der Ausweisnummer zu löschen das Benachrichtigungszentrum. Wenn ich application.applicationIconBadgeNumber auf eine negative Zahl (wie -1) setze löscht es alle meine Benachrichtigungen von der Notification Center. Gibt es eine andere Möglichkeit, die Ausweisnummer zu löschen, ohne die notifications zu entfernen?

+0

, was passiert, wenn man es auf einen positiven Wert wie 1 gesetzt und haben 5 notif im notif Zentrum. – Shubhank

+0

Das ist eine sehr gute Frage. Es gibt eigentlich keine Kontrolle darüber, wie viele Benachrichtigungen im Benachrichtigungscenter vorhanden sind. Sie können sie manuell zählen, aber es gibt Situationen, in denen Sie den Fehler, den Sie gerade beschrieben haben, bekommen würden, wenn Ihr Icon-Badge die Nummer 1 anzeigt, aber Sie tatsächlich 5 in der Benachrichtigungszentrale haben. Allerdings wäre es in meiner App nur sinnvoll, die Icon-Badge-Nummer zu löschen und die Benachrichtigungen im Benachrichtigungscenter zu belassen, wenn der Benutzer sie benötigt. –

+0

ja ich wollte das nicht als lösung sagen. Ich wollte nur wissen, was in diesem Fall passieren würde. Werden die Benachrichtigungen gelöscht oder nur für 1 belassen? Auch da Sie mit Push-Benachrichtigungen zu tun haben, glaube ich - können Sie nicht einfach die Plakettennummer auf 0 setzen? – Shubhank

Antwort

2

Einstellung Abzeichen auf -1 indirekt mit einer leeren lokalen Benachrichtigung funktionierte für mich, aber es ist ein Hack, um Benachrichtigungen in der Taskleiste zu bleiben, während die Anzahl der Anwendung Abzeichen zu löschen.

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 Version

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

Ansatz auf iOS getestet 9 und 10

+1

Vielen Dank für die Bearbeitung Ihrer Antwort, Irfan. – Moritz

+0

Gern geschehen. –

+0

Hat jemand überprüft, ob dies auch auf iOS 11 funktioniert? – SpacyRicochet

Verwandte Themen