2017-07-17 66 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中,然后相应地获取它。

相关问题