Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中更新徽章计数器_Ios_Swift_Parse Platform_Push Notification_Badge - Fatal编程技术网

Ios 在Swift中更新徽章计数器

Ios 在Swift中更新徽章计数器,ios,swift,parse-platform,push-notification,badge,Ios,Swift,Parse Platform,Push Notification,Badge,使用以下代码,我在应用程序编译后立即在徽章图标中获得(2): func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { let installation = PFInstallation.currentInstallation() installation.setDeviceTokenFromData(de

使用以下代码,我在应用程序编译后立即在徽章图标中获得(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应用程序中的设置并启用“客户端推送”,然后,您可以将上述Json发送到其他用户的设备。

每当编译代码时,它都会显示以前存储在应用程序中的徽章图标。如果您没有在应用程序中设置徽章图标=0,则每次编译徽章图标或在后台状态下输入徽章图标时,它都会在应用程序中显示徽章图标编号

现在针对您的问题,使用徽章图标作为

var badgeCount = 0 

 UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount
此外,每当您完成任务时,请将徽章图标设置为0,否则它将在您的应用程序中显示徽章图标

UIApplication.sharedApplication().applicationIconBadgeNumber = 0

我曾经在类似的场景中工作过,并且找到了增加和重置徽章编号的最终解决方案

增加徽章号码

  • 我总是将徽章号码计数保存在内存中(
    NSUserDefaults
  • 每次我必须设置通知时,我都会获取当前的徽章编号增量,并在
    .applicationBadgeNumber
    上设置该编号,并更新内存中的计数
  • 重置徽章号码

  • 在我的情况下,打开应用程序后,我必须重置所有徽章计数。因此,我在
    中设置了
    UIApplication.sharedApplication().applicationBadgeNumber=0
    ,并使用
    AppDelegate
    的选项完成了启动。我还重置了内存中的计数

  • 这些答案都不再有效

    您需要查看推送代码,而不是AppDelegate

    从解析文档:

    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中,您可以随时使用以下代码更新de应用程序的徽章:

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

    如何从服务器发送?我怎么知道有多少通知未读?我看你在使用parse.com,对吗?如果你,如果你正在发送一条普通信息(不使用son),则有一个增加徽章编号的开关,只需勾选该开关即可。如果您使用的是Json,请使用以下命令:{“aps”:{“警报”:“测试推送通知”,“声音”:“yourSound.aiff”,“徽章”:“numberYouNeed”}这是答案-请花一点时间阅读Swinny89实际发布的内容。Swinny89-您可以使用编辑您的答案和您的评论再次阅读我的答案的第一行确保消息类型设置为纯文本,增量标记为是,键入您的消息并发送。如果应用程序未打开,则标记将为您更新。在打开应用程序,或者在需要时,确保使用UIApplication.sharedApplication()将徽章设置回0.applicationBadgeNumber=0并同时使用CurrentInstallation.badge=0,然后将其保存在后台我将其粘贴到
    didRegisterForRemoteNotificationsWithDeviceToken
    中,如:
    let notif=UIApplication.sharedApplication()notif.applicationBadgeNumber=++BadgeScont安装。saveInBackground()
    and nothing again=/如果您不将徽章图标设置为0,它将一直显示。请描述您的应用程序流程,以便我们可以调整图标编号。例如,推送通知时,图标编号最初为0,在一些任务递减后,您可以共享您的代码和解析设置,因为您似乎解决了问题,并且我有同样的问题,但我无法解决。我现在不使用解析,但如果你能成功更新徽章计数,我将使用它。非常感谢。