2017-07-17 7 views
0

バッジ数は、バックグラウンドや終了のケースで私のアプリに表示されません。 私はプリントが正しい数を示しiOS Appにバッジカウントが表示されない

UIApplication.shared.applicationIconBadgeNumber = 0 

     if #available(iOS 10, *) 
     { 
      UNUserNotificationCenter.current().delegate = self 
      UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in 

       guard error == nil else 
       { 
        return 
       } 
       if granted 
       { 
        UIApplication.shared.registerForRemoteNotifications() 
       } 
      } 
     } 
     else 
     { 
      let settings : UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .sound , .badge], categories: nil) 
      UIApplication.shared.registerUserNotificationSettings(settings) 
      UIApplication.shared.registerForRemoteNotifications() 
     } 



UIApplication.shared.applicationIconBadgeNumber += 1 
print("Badge Count ===> \(UIApplication.shared.applicationIconBadgeNumber)") 

appdelegate didfinishlaunchにこのコードを追加しました。しかし、アプリには表示されません。

実際、通知ごとにバッジ数を更新する必要はありません。いくつかのシェアのために、私たちはバッジカウントを更新する必要があります。だから私はメソッドを作成し、カウントを更新します。

func setBadgeCount() 
     { 
      if(self.currentAppState() == 1 || self.currentAppState() == 3) 
      { 
       sleep(2) 
       UIApplication.shared.applicationIconBadgeNumber += 1 
       print("Badge Count ===> \(UIApplication.shared.applicationIconBadgeNumber)") 
    } 
     } 

callthis方法

​​
+0

この行にコメントしようとします。UIApplication.shared.applicationIconBadgeNumber = 0 と再度確認してください。 – KKRocks

+0

あなたのペイロード情報を共有してください。 – Nirmalsinh

答えて

0

からアプリはアプリが実際に開いている場合を除き、この方法でバッジ番号を更新するつもりはありません。通知を受け取ったときにバッジ番号を更新する場合は、通知のペイロードにバッジ番号を設定する必要があります。以下は、ペイロードのサンプルです。そこにあなたの希望の番号を入れ、それが動作する送信します。

{ 
    "aps": { 
     "alert": "Test Push Notification", 
     "sound": "yourSound.aiff", 
     "Badge": "desiredNumber" 
    } 
} 
+0

通知は、バッジ数0の –

+0

でクラウドサーバー自体によって与えられます。これは問題です。バッジ数は0であってはなりません。ゼロの場合は表示されません。 –

+0

表示するにはインクリメントする必要があります –

0

このコードはdidFinishLaunchingWithOptionsに書かれていますが、これは1回だけ呼び出されます。では、バッジ番号をどのように更新するのですか? のみ、アプリがバックグラウンドに入っているときに、適切なバッジの数を取得していない、あなたの更新質問、あたりとして

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { 

    application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1; 
} 
プッシュ通知用の

func application(application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 

    application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1; 
} 

UIApplication.shared.applicationIconBadgeNumber = 0代わりに使用

didFinishLaunchingWithOptionsにを追加します適切なログを取得している間に終了してください。これは、これらのケースを処理するためにバッジ数をどこかに格納する必要があるためです。 UserDefaultsにそれを格納し、それに応じてそれをフェッチすることができます。

関連する問題