0

Ich benutze CKSubscription, um Push-Benachrichtigungen zu senden, ich sende sie gut und das Gerät empfängt alles korrekt, aber meine Badge zählt immer +1 zu dem, was es vorher war? Wie kann ich es nach dem Ausführen der App auf 0 setzen?Wie kann ich die Badge-Anzahl ändern?

Ich habe diesen Code zu func Anwendung didFinishLaunchingWithOptions hinzugefügt

UIApplication.shared.applicationIconBadgeNumber = 0 

Aber wenn Sie die App laufen, verschwindet das Abzeichen, das nächste Push-Benachrichtigung empfängt die Zahl wieder steigt.

Antwort

0

Es klingt, als würden Sie es nicht einfach an der richtigen Stelle auf Null setzen?

didFinishLaunchingWithOptions wird nicht aufgerufen, wenn Ihre App aus dem Hintergrund gestartet wird, nur wenn sie tatsächlich gestartet wird. Die gebräuchlichste Verwendung des Kennzeichens, das ich mir vorstellen kann, ist, wenn Sie Benachrichtigungen erhalten und Sie sie auf Null setzen möchten, wenn der Benutzer die Benachrichtigungen gesehen hat. Hier müssen Sie also Ihre applicationIconBadgeNumber = 0

Wenn Ihre App nur eine einzige Ansicht mit einer Liste von Nachrichten ist und nur diese Liste reicht Ihnen zu sagen, dass der Benutzer die Nachricht gelesen hat, könnten Sie stattdessen applicationWillEnterForeground verwenden. Das nennt man jedes Mal, wenn man aus dem Hintergrund kommt.

Sie müssen es immer noch auf Null setzen, wenn eine Benachrichtigung eingeht, während die App jedoch im Vordergrund ist.

+0

Vielen Dank für Ihre Antwort! Eigentlich habe ich es versucht, ich habe sogar versucht, dieses Stück Code in func-Anwendung (... didReceiveRemoteNotification ...) Ich dachte, dass das Problem sein könnte, dass ich die Anzahl der Abzeichen im CloudKit-Dashboard in meinem Abonnement-Typ nicht aktualisieren, also steigt es, aber ich habe keine Ahnung, wie das geht ... –

0

es gelöst mit CKModifyBadgeOperation es in applicationDidBecomeActive

let badgeOp = CKModifyBadgeOperation(badgeValue: 0) 
badgeOp.modifyBadgeCompletionBlock = { (error) -> Void in 
if error != nil { print (“error with the badge”) 
} 
else { 
UIApplication.shared.applicationIconBadgeNumber = 0 } 
} 
CKContainer.default().add(badgeOp) 
} 

alle Werke setzen !!!! So glücklich!!!!

Verwandte Themen