【问题标题】:How to change badge count?如何更改徽章数量?
【发布时间】:2017-11-18 15:40:14
【问题描述】:

我正在使用 CKSubscription 发送推送通知,我发送它们并且设备正确接收所有内容,但我的徽章计数总是比以前 +1?应用程序运行后如何将其设置为 0?

我已将此代码添加到 func 应用程序 didFinishLaunchingWithOptions

UIApplication.shared.applicationIconBadgeNumber = 0

但是当您运行应用程序时,徽章会消失,收到下一个推送通知,数字会再次上升。

【问题讨论】:

    标签: ios swift apple-push-notifications cloudkit cksubscription


    【解决方案1】:

    通过 CKModifyBadgeOperation 将其放入 applicationDidBecomeActive 解决了这个问题

    let badgeOp = CKModifyBadgeOperation(badgeValue: 0)
    badgeOp.modifyBadgeCompletionBlock = { (error) -> Void in 
    if error != nil { print (“error with the badge”)
    } 
    else {
    UIApplication.shared.applicationIconBadgeNumber = 0 }
    }
    CKContainer.default().add(badgeOp)
    }
    

    一切正常!!!!好开心!!!!

    【讨论】:

      【解决方案2】:

      听起来你只是没有在正确的地方归零?

      didFinishLaunchingWithOptions 不会在您的应用从后台恢复时调用,只有在实际启动时才会调用。我能想到的徽章最常见的用途是当您收到通知并且您希望在用户看到通知时将其归零。所以这就是你必须设置你的applicationIconBadgeNumber = 0

      例如,如果您的应用只是带有消息列表的单个视图,并且仅看到该列表就足以告诉您用户已阅读该消息,您可以改用 applicationWillEnterForeground。每次你从后台回来时都会调用它。

      不过,当应用在前台时收到通知时,您仍然必须将其归零。

      【讨论】:

      • 谢谢您的回答!实际上我已经尝试过了,我什至尝试将这段代码放在 func 应用程序中(... didReceiveRemoteNotification ...)我认为问题可能是我没有在订阅类型中更新 CloudKit 仪表板中的徽章计数,因此它增加了,但我不知道该怎么做......
      猜你喜欢
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 2015-06-03
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      相关资源
      最近更新 更多