2017-03-10 7 views
2

私はCloudKitにPush Notificationを統合して、iCloudのすべての変更が私のiPhoneで通知をポップアップし、それに対応してバッジアプリのアイコン番号が追加されるようにしました。しかし、私は、コードを使用する場合、:applicationDidBecomeActive(_ application: UIApplication)にその数をリセットするためにバッジアプリのアイコン番号をリセットするにはどうすればよいですか?

application.applicationIconBadgeNumber = 0

を、私はバッジアプリアイコンの数が本当に消えたことに気づいたが、別の新しい通知が再び来た場合、数はから起動しませんもう一度想定していますが、リセット前の元の合計数に1を加算してください。したがって、その数はますます大きくなりつつあります。私はこの問題をどのように解決するのだろうか?

答えて

1

は、私は私だけのようなアプリケーション側を設定するべきではないことがわかります。したがって、完全なコードは以下のようになります:

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

問題は、それ以上の1は、あなたにもペイロードをリセットする必要がバッジの数が含まれている、あなたののAPNペイロードです。

application.applicationIconBadgeNumber = 0を設定すると、サーバではなくローカルでバッジカウントがリセットされます。

解決方法は、サーバー内のユーザーのバッジ数もリセットされます。

更新:APNSペイロード

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

} 

アプリはバッジが上記のAPNペイロードと同じカウントを示し、あなたは上記のサーバからペイロードにバッジ値をリセットする必要があります。

希望します。

乾杯。

UIApplication.sharedApplication().applicationIconBadgeNumber = 0 

が、私はまたCKContainerでのiCloud側を設定する必要があります。

+0

私はあなたが意味することを理解していますが、サーバー側をリセットするための特定のコードを表示できますか?私はいくつかの方法を試しましたが、どれも動作しません。 – Jaheny

+0

@Jahenyあなたはアプリで使用しなければならないいくつかのAPIサービスが必要ですか?プッシュはサーバーアプリケーションから送信されますので、送信しないでください。サーバーで「apns」メッセージを作成すると、バッジ数を処理するデータベースを使用する必要があります。「私の更新を見てください。どこを変更するか。 – iphonic

関連する問題