在Swift中更新徽章计数器

agxfikkp  于 12个月前  发布在  Swift
关注(0)|答案(6)|浏览(130)

通过下面的代码,我在应用程序编译后立即在徽章图标中获得(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。有人知道如何修复它吗?

wnavrhmk

wnavrhmk1#

每当代码被编译时,它都会显示先前存储在应用中的徽章图标。如果您没有在应用中设置徽章图标= 0,则每次编译或进入后台状态时,它都会显示应用中的徽章图标编号。
现在你的问题,使用徽章图标作为

var badgeCount = 0 

 UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount

字符串
此外,每当你完成你的任务,使徽章图标为0,否则它会显示一个徽章图标在您的应用程序

UIApplication.sharedApplication().applicationIconBadgeNumber = 0

uqjltbpv

uqjltbpv2#

除非应用实际打开,否则它不会使用此方法更新徽章编号。如果您希望在收到通知时更新徽章编号,则需要将json push通知的Badge属性设置为所需的编号。
如果你,如果你正在发送一个普通的消息(不使用json),有一个切换来增加徽章号码,只需勾选它。如果你使用Json,然后使用这个:

{
    "aps": {
        "alert": "Test Push Notification",
        "sound": "yourSound.aiff",
        "Badge": "desiredNumber"
    }
}

字符串
请注意,如果您不希望从服务器发送,您也可以使用Parse的客户端推送将其从一个设备发送到另一个设备,进入Parse.com上的应用程序中的设置并启用“客户端推送”,然后您可以将上述JSON发送到另一个用户的设备。

eimct9ow

eimct9ow3#

在Swift 5中,你可以随时更新应用程序的徽章,使用以下代码:

UIApplication.shared.applicationIconBadgeNumber = 0 // YOUR NUMBER DESIRED

字符串

umuewwlo

umuewwlo4#

我曾在类似的情况下工作,我发现的最终解决方案是增加和重置徽章号码。
递增徽章编号
1.我总是保存徽章数量计数在内存中(NSUserDefaults
1.每次我必须设置通知时,我都会获取当前徽章编号增量,并在.applicationIconBadgeNumber上设置该编号,并更新内存中的计数。
重置徽章编号
1.在我的情况下,我必须重置所有的徽章计数一旦应用程序被打开.所以我已经设置UIApplication.sharedApplication().applicationIconBadgeNumber = 0AppDelegatedidFinishLaunchingWithOptions.我还重置了内存中的计数.

xbp102n0

xbp102n05#

这些答案都不再有效了。
您需要查看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.

字符串

xmd2e60i

xmd2e60i6#

UNUserNotificationCenter.current().setBadgeCount(x)

字符串
//已弃用UIApplication.shared.applicationIconBadgeNumber = x

相关问题