使用以下代码,应用程序编译后,我会立即在徽章图标中看到 (2):
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let installation = PFInstallation.currentInstallation()
installation.setDeviceTokenFromData(deviceToken)
installation.badge = 2
installation.saveInBackground()
}
我确实尝试了下一个变体:初始化了一个新的
var badgeCount = 0
,后来:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
badgeCount++
let installation = PFInstallation.currentInstallation()
installation.setDeviceTokenFromData(deviceToken)
installation.badge = badgeCount
installation.saveInBackground()
}
但是当我收到新通知时,它不会更新为+1。有谁知道如何解决吗?
每当编译代码时,它都会显示之前存储在您的应用程序中的徽章图标。如果您未在应用程序中设置徽章图标 = 0,则每次编译或进入后台状态时,都会在应用程序中显示徽章图标编号。
现在针对您的问题,请使用徽章图标作为
var badgeCount = 0
UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount
此外,每当您完成任务时,请将徽章图标设置为 0,否则它将在您的应用程序中显示徽章图标
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
除非应用程序实际打开,否则不会使用此方法更新徽章编号。如果您想在收到通知时更新徽章编号,则需要将 json 推送通知的 Badge 属性设置为所需的编号。
如果您发送普通消息(不使用 json),则有一个开关可以增加徽章编号,只需勾选即可。如果你使用 Json 那么使用这个:
{
"aps": {
"alert": "Test Push Notification",
"sound": "yourSound.aiff",
"Badge": "desiredNumber"
}
}
请注意,如果您不想从服务器发送此信息,您也可以利用 Parse 的客户端推送将其从一台设备发送到另一台设备,进入 Parse.com 上应用程序的设置并启用“客户端推送”,您然后可以将上述 Json 发送到另一个用户的设备。
在 Swift 5 中,您可以随时使用以下代码更新应用程序的徽章:
UIApplication.shared.applicationIconBadgeNumber = 0 // YOUR NUMBER DESIRED
我研究过类似的场景,最终找到的解决方案是增加和重置徽章编号。
增加徽章编号
NSUserDefaults
).applicationIconBadgeNumber
并更新内存中的计数。重置徽章号码
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
设置在didFinishLaunchingWithOptions
的AppDelegate
中。我还重置了内存中的计数。这些答案都不再有效。
您需要查看您的 Push 代码,而不是您的 AppDelegate
来自解析文档:
badge: (iOS/OS X only)
the value indicated in the top right corner of the app icon.
This can be set to a value or to Increment in order to increment the current value by 1.
UNUserNotificationCenter.current().setBadgeCount(x)
// 已弃用
UIApplication.shared.applicationIconBadgeNumber = x