2017-03-10 4 views
2

Ich habe die Push-Benachrichtigung in das CloudKit integriert, so dass bei jeder Änderung in der iCloud eine Benachrichtigung auf meinem iPhone erscheint und die Icon-Nummer der Badge-App entsprechend hinzugefügt wird. Allerdings, wenn ich den Code verwendet:Wie setzt man die Icon-Nummer der Badge-App zurück?

application.applicationIconBadgeNumber = 0

diese Zahl in den applicationDidBecomeActive(_ application: UIApplication) zurückgesetzt, bemerkte ich, dass das Abzeichen App Ikonnummer wirklich verschwunden, aber wenn wieder eine neue Meldung wieder kommt, wird die Nummer nicht ab wieder wie angenommen, aber fügen Sie einfach eine vor dem Zurücksetzen zur ursprünglichen Gesamtzahl hinzu. Daher wird die Anzahl immer größer. Ich frage mich, wie ich dieses Problem lösen kann?

Antwort

1

finde ich, dass ich nicht nur die Anwendungsseite wie setzen soll

UIApplication.sharedApplication().applicationIconBadgeNumber = 0 

aber ich sollte auch die iCloud Seite in CKContainer gesetzt. Daher ist der vollständige Code wie folgt:

let operation = CKModifyBadgeOperation(badgeValue: 0) 
operation.modifyBadgeCompletionBlock = {(error) in 
    if let error = error{ 
     print("\(error)") 
     return 
    } 
    application.applicationIconBadgeNumber = 0 
} 
CKContainer.default().add(operation) 
3

Das Problem ist Ihre APNs Nutzlast, es enthält Abzeichen Zählung mehr als 1, müssen Sie auch die Nutzlast zurückgesetzt werden.

Wenn Sie application.applicationIconBadgeNumber = 0 einstellen, wird die Plakettenanzahl nur lokal und nicht auf dem Server zurückgesetzt.

Lösung würde die Badge Anzahl für den Benutzer im Server auch zurückgesetzt werden.

Update: APNs Payload

{ 
    "aps" : { 
     "alert" : { 
      "title" : "Push", 
      "body" : "Hello User" 
     }, 
     "badge" : 5 
    } 

} 

Die App das Abzeichen über gleiche wie in der APNs Nutzlast zählen zeigen, müssen Sie das Abzeichen Wert in der Nutzlast vom Server über zurücksetzen.

Ich hoffe, es hilft.

Prost.

+0

Ich verstehe, was Sie meinen, aber könnten Sie mir einige spezifische Codes zeigen, um die Server-Seite zurückzusetzen? Ich habe einige Wege versucht, aber keiner von ihnen funktioniert. – Jaheny

+0

@Jaheny Es muss etwas API-Service geben, den Sie in der App verwenden müssen? Der Push wird durch die Server-App gesendet und nicht gesendet. Wenn sie also eine 'apns'-Nachricht im Server erstellen, müssen sie eine Datenbank verwenden, die sich um die Anzahl der Plaketten kümmert wo man es ändert. – iphonic

Verwandte Themen