iOS6 中的自动增量推送通知徽章

Posted

技术标签:

【中文标题】iOS6 中的自动增量推送通知徽章【英文标题】:Auto Increment Push Notification Badge in iOS6 【发布时间】:2013-03-28 16:51:04 【问题描述】:

我收到来自服务器的推送通知。服务器始终在有效负载中发送 badge=1。

服务器端开发人员对此一无所知。谁能告诉我服务器端开发人员如何处理徽章计数值,以便 ios 应用程序获得更新的徽章计数(自动递增的徽章计数)?

    我可以在 iOS 应用程序端自动增加它吗?如果有,怎么做?

    如果不是,那么服务器开发人员如何处理服务器上的徽章计数?我看到几个链接告诉我服务器端应该处理徽章计数。

任何示例或参考都会有所帮助。

【问题讨论】:

【参考方案1】:

我认为你不能在 iOS 应用程序方面做到这一点。它必须来自服务器。

我做什么:

服务器在数据库中为每个用户存储一个应用程序徽章编号。 当服务器发送通知时,它会将该数字增加 1。 您还需要创建一个 Web 服务来重置您将在启动应用程序时调用的徽章编号。

您可以使用该行更改应用程序中的徽章编号(例如在 applicationDidBecomeActive 中):

- (void)applicationDidBecomeActive:(UIApplication *)application

    application.applicationIconBadgeNumber = 0;

希望对您有所帮助。

【讨论】:

【参考方案2】:

徽章计数是可以在 Apple 推送通知负载中从服务器发送的参数之一。徽章计数通常反映服务器知道并希望提醒应用程序用户的某种新数据(例如未读电子邮件)的数量。 因此,它应该在服务器端完成。应更改当前在徽章计数中始终发送 1 的代码以选择正确的计数。

您可以在客户端执行此操作(每当推送通知到达时将其加一),但这不是一个好主意,因为不能保证推送通知会到达。此外,只有在通知中除了徽章编号之外还包含警报,并且用户点击通知以打开应用程序(否则,如果您的应用程序尚未运行,您的应用程序将不会获得通知数据)。 .

【讨论】:

是的...这是我担心的,好像我的应用程序没有运行我不会得到任何数据,所以无法更新徽章。感谢您的解释。 你能告诉我如果用户收到徽章计数 = 8 并且用户打开应用程序会发生什么。然后我将清除服务器上的徽章计数。然后让我们说在清除服务器上的徽章计数之前,服务器又发送了 1 个带有徽章值 = 9 (8+1) 的推送通知。现在用户将看到徽章计数 = 9。对吗? @iOSAppDev 没错。但是假设此时应用程序将在前台运行(因为用户刚刚打开它),您可以立即清除客户端中的徽章,并且用​​户可能看不到它。 感谢您的回复。假设用户在 count = 8 时打开应用程序并关闭它。然后我们会收到徽章计数 = 9 的推送通知。我们会看到徽章计数 = 9,对吧?

以上是关于iOS6 中的自动增量推送通知徽章的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS推送通知上进行徽章增量

在 iOS13 中接收推送通知时如何自动增加通知徽章编号

Quickblox 简单 iOS 推送徽章增量

Firebase 推送通知徽章计数是不是在 iOS 中自动增加?

推送通知徽章

当应用程序处于后台时,推送通知徽章编号会自动更新[重复]