更新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,我发现增加和重置徽章号码。

增加徽章号码

  1. 我总是将徽章号码计数保存在内存中( NSUserDefaults
  2. 每次我必须设置通知,我得到当前的徽章数量增量,并将该数字设置在.applicationIconBadgeNumber并更新内存中的计数。

重置徽章号码

  1. 在我的情况下,一旦应用程序打开,我必须重置所有的徽章计数。 所以我在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.