2017-07-17 60 views
0

徽章計數未顯示在我的應用程序中用於背景和終止情況。 我的appdelegate didfinishlaunch添加該代碼徽章計數未在iOS應用程序中顯示

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)") 

打印顯示正確的計數。但未在應用程序中顯示。

其實我不需要更新每個通知的徽章數量。對於某些股份或類似情況,我們需要更新徽章數量。所以我創建了一個方法並更新了計數。從

​​
+0

請嘗試評論此行UIApplication.shared.applicationIconBadgeNumber = 0 並再次檢查 – KKRocks

+0

請您分享您的有效負載信息。 – Nirmalsinh

回答

0

的應用

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

callthis方法是不會用這種方法來更新證件號碼,除非應用程序實際上是開放的。如果您想在收到通知時更新徽章號碼,則必須在通知的有效負載中設置徽章號碼。下面是有效載荷的樣例。把你想要的號碼放在那裏,併發送它將工作。

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

通知由雲服務器本身以徽章計數0 –

+0

這就是問題所在。徽章計數不應該爲0.如果爲零,則不會顯示 –

+0

您需要將其增加以顯示 –

0

您已將此代碼寫入didFinishLaunchingWithOptions,該代碼僅被調用一次。那麼它將如何更新徽章號碼。 只添加UIApplication.shared.applicationIconBadgeNumber = 0didFinishLaunchingWithOptions

而是使用,

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

    application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1; 
} 

對於推送通知的使用,

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

    application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1; 
} 

根據您的更新問題,你沒有得到正確的徽章計數時,應用程序是進入後臺或終止,而你得到適當的日誌。這是因爲要處理這些情況,我們需要在某處存儲徽章數量。您可以將它存儲在UserDefaults中,然後相應地獲取它。

相關問題