在 Swift 更新徽章计数器
Update badge counter in 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),则有一个开关可以增加徽章编号,只需勾选它即可。如果你使用 Json 然后使用这个:
{
"aps": {
"alert": "Test Push Notification",
"sound": "yourSound.aiff",
"Badge": "desiredNumber"
}
}
请注意,如果您不想从服务器发送它,您也可以使用 Parse 的客户端推送将它从一台设备发送到另一台设备,进入 Parse.com 上的应用程序设置并启用"client push",然后您可以将上述 Json 发送到其他用户的设备。
每当编译代码时,它都会显示以前存储在您的应用程序中的徽章图标。如果你没有在你的应用程序中设置 badge icon = 0,它会在你每次编译它或进入后台状态时在你的应用程序中显示 badge icon 编号。
现在针对您的问题,使用徽章图标作为
var badgeCount = 0
UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount
此外,每当您完成任务时,将徽章图标设为 0,否则它会在您的应用中显示徽章图标
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
我研究过类似的场景,我找到了增加和重置徽章编号的最终解决方案。
增加徽章数量
- 我总是在内存中保存徽章数量(
NSUserDefaults
)
- 每次我必须设置通知时,我都会获取当前徽章编号递增并将该编号设置为
.applicationIconBadgeNumber
并更新内存中的计数。
重置徽章编号
- 就我而言,打开应用程序后我必须重置所有徽章计数。所以我在
AppDelegate
的didFinishLaunchingWithOptions
中设置了UIApplication.sharedApplication().applicationIconBadgeNumber = 0
。我还重置了内存中的计数。
None 这些答案仍然有效。
您需要查看您的 Push 代码,而不是您的 AppDelegate
来自 Parse 文档:
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.
在 Swift 5 中,您可以随时更新应用程序的徽章,使用此代码:
UIApplication.shared.applicationIconBadgeNumber = 0 // YOUR NUMBER DESIRED
使用以下代码,我在应用编译后立即在徽章图标中得到 (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),则有一个开关可以增加徽章编号,只需勾选它即可。如果你使用 Json 然后使用这个:
{
"aps": {
"alert": "Test Push Notification",
"sound": "yourSound.aiff",
"Badge": "desiredNumber"
}
}
请注意,如果您不想从服务器发送它,您也可以使用 Parse 的客户端推送将它从一台设备发送到另一台设备,进入 Parse.com 上的应用程序设置并启用"client push",然后您可以将上述 Json 发送到其他用户的设备。
每当编译代码时,它都会显示以前存储在您的应用程序中的徽章图标。如果你没有在你的应用程序中设置 badge icon = 0,它会在你每次编译它或进入后台状态时在你的应用程序中显示 badge icon 编号。
现在针对您的问题,使用徽章图标作为
var badgeCount = 0
UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount
此外,每当您完成任务时,将徽章图标设为 0,否则它会在您的应用中显示徽章图标
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
我研究过类似的场景,我找到了增加和重置徽章编号的最终解决方案。
增加徽章数量
- 我总是在内存中保存徽章数量(
NSUserDefaults
) - 每次我必须设置通知时,我都会获取当前徽章编号递增并将该编号设置为
.applicationIconBadgeNumber
并更新内存中的计数。
重置徽章编号
- 就我而言,打开应用程序后我必须重置所有徽章计数。所以我在
AppDelegate
的didFinishLaunchingWithOptions
中设置了UIApplication.sharedApplication().applicationIconBadgeNumber = 0
。我还重置了内存中的计数。
None 这些答案仍然有效。
您需要查看您的 Push 代码,而不是您的 AppDelegate
来自 Parse 文档:
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.
在 Swift 5 中,您可以随时更新应用程序的徽章,使用此代码:
UIApplication.shared.applicationIconBadgeNumber = 0 // YOUR NUMBER DESIRED