徽章计数未在iOS应用程序中显示
徽章计数未显示在我的应用程序中用于背景和终止情况。 我的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)")
打印显示正确的计数。但未在应用程序中显示。
其实我不需要更新每个通知的徽章数量。对于某些股份或类似情况,我们需要更新徽章数量。所以我创建了一个方法并更新了计数。从
的应用
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.如果为零,则不会显示 –
您需要将其增加以显示 –
您已将此代码写入didFinishLaunchingWithOptions
,该代码仅被调用一次。那么它将如何更新徽章号码。 只添加UIApplication.shared.applicationIconBadgeNumber = 0
在didFinishLaunchingWithOptions
而是使用,
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
中,然后相应地获取它。
请尝试评论此行UIApplication.shared.applicationIconBadgeNumber = 0 并再次检查 – KKRocks
请您分享您的有效负载信息。 – Nirmalsinh