【问题标题】:Can I show badge count on app when my app is not running and receive push notification iOS当我的应用程序未运行并接收推送通知 iOS 时,我可以在应用程序上显示徽章计数吗
【发布时间】:2016-04-11 13:10:54
【问题描述】:

我在我的应用程序中使用推送通知,当用户点击通知并启动应用程序时,我会更新徽章计数,但如果应用程序没有运行并且连续接收通知,它永远不会更新计数。

有什么办法可以在后台做。

iOS 是否提供 api 或通知,我可以像 andoroid 一样在本地注册和处理徽章

【问题讨论】:

  • 是的,除了这个还有什么办法吗?
  • 添加代码,我们会看看你做错了什么。
  • didReceiveRemoteNotification 它的更新工作也很好,但如果我的应用程序没有运行,那么徽章在我打开应用程序之前不会更新
  • didReceiveRemoteNotification 是正确的方法。每当您收到推送时,它都会被调用。您必须在有效负载中发送徽章。

标签: ios push-notification


【解决方案1】:

徽章计数由服务器端管理。为此,您的后端必须在 Push 中发送特定的 JSON Payload。

{
    "aps" : {
        "alert" : {
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
            "action-loc-key" : "PLAY"
        },
        "badge" : 5
    },
    "acme1" : "bar",
    "acme2" : [ "bang",  "whiz" ]
}

类似上面的东西,其中徽章值是 5。 当此推送在 iOS 上出现时,它会自动在 App 的徽章上显示此计数。

那么下一个问题可能是,那么如何更新徽章。 在应用启动时,只需使用

重置应用徽章
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];

同时还调用一个新的 Web 服务将 0 更新为服务器端的徽章计数,以便在下一次推送 Web 服务可以发送 1。同时要求您的支持者在非常推送时增加此计数。但是,这取决于您的应用案例。我刚才解释的一个是考虑到在应用启动时所有通知都必须被视为已读。

【讨论】:

    【解决方案2】:

    通常您会使用以下命令通过推送添加新计数:

    badge: Int
    

    您将计算此服务器端并将其添加到有效负载中。

    Here 是有效载荷参数的链接。

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多