使用以下代码,我会在应用程序编译后立即在徽章图标中获取(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 :(得分:15)
除非应用程序实际处于打开状态,否则不会使用此方法更新徽章编号。如果要在收到通知时更新徽章编号,则需要将json推送通知的Badge属性设置为所需的编号。
如果您正在发送正常消息(不使用json),则会有一个切换来增加徽章编号,只需勾选即可。如果您正在使用Json,请使用:
{
"aps": {
"alert": "Test Push Notification",
"sound": "yourSound.aiff",
"Badge": "desiredNumber"
}
}
请注意,如果您不希望从服务器发送此内容,您也可以使用Parse的客户端推送将其从一台设备发送到另一台设备,在Parse.com上的应用程序中进入您的设置并启用"客户端推送",然后您可以将上述Json发送到另一个用户的设备。
答案 1 :(得分:14)
每当编译代码时,它都会显示以前存储在您应用中的徽章图标。如果您未在应用中设置徽章图标= 0,则每次编译时都会在应用中显示徽章图标编号或进入后台状态。
现在针对您的问题,使用徽章图标
var badgeCount = 0
UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount
此外,无论何时完成任务,请将徽章图标设为0,否则会在您的应用中显示徽章图标
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
答案 2 :(得分:5)
我已经研究过类似的场景,并且我找到了最终解决方案来增加和重置徽章编号。
增量徽章编号
NSUserDefaults
).applicationIconBadgeNumber
上设置该编号并更新内存中的计数。重置徽章编号
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
的{{1}}中设置了didFinishLaunchingWithOptions
。我也重置了内存中的计数。答案 3 :(得分:0)
这些答案都不再有效。
您需要查看推送代码,而不是AppDelegate
来自Parse docs:
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.
答案 4 :(得分:0)
在Swift 5中,您可以使用以下代码随时更新应用程序的徽章:
UIApplication.shared.applicationIconBadgeNumber = 0 // YOUR NUMBER DESIRED