更新Swift中的徽章计数器
使用以下代码,我可以在应用程序编译后立即在徽章图标中获得(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。 有谁知道如何解决它?
除非应用程序实际打开,否则不会使用此方法更新徽章号码。 如果您希望在收到通知时更新徽章号码,则需要将json推送通知的徽章属性设置为所需的号码。
如果你,如果你发送一个正常的消息(不使用儿子)有一个切换到递增的徽章号码,只是勾选。 如果你正在使用Json,那么使用这个:
{ "aps": { "alert": "Test Push Notification", "sound": "yourSound.aiff", "Badge": "desiredNumber" } }
请注意,如果您不希望从服务器发送此消息,也可以使用Parse的客户端推送将消息从一台设备发送到另一台设备,进入Parse.com应用程序中的设置并启用“客户端推送”,您可以然后将上面的Json发送给另一个用户的设备。
无论何时编译代码,都会显示先前存储在您的应用中的徽章图标。 如果您的应用程序中没有设置徽标图标= 0,则每次编译或在后台状态下都会在应用程序中显示徽章图标编号。
现在为您的问题,使用徽章图标
var badgeCount = 0 UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount
此外,每当您完成任务使徽章图标为0,否则它会在您的应用程序中显示徽章图标
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
我已经在类似的情况下工作,最后的解决scheme,我发现增加和重置徽章号码。
增加徽章号码
- 我总是将徽章号码计数保存在内存中(
NSUserDefaults
) - 每次我必须设置通知,我得到当前的徽章数量增量,并将该数字设置在
.applicationIconBadgeNumber
并更新内存中的计数。
重置徽章号码
- 在我的情况下,一旦应用程序打开,我必须重置所有的徽章计数。 所以我在
didFinishLaunchingWithOptions
中设置了UIApplication.sharedApplication().applicationIconBadgeNumber = 0
。 我也重置内存中的计数。
这些答案都不再有效。
您需要查看您的Push代码,而不是您的AppDelegate
从parsing文档:
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.