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

3

我从服务器接收了推送通知。 服务器始终在负载中发送badge=1。

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

  1. 我能否在iOS应用程序端自动递增它? 如果可以,怎么做?

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

任何样例或参考资料都将是有帮助的。

2个回答

6

我认为你不能在iOS应用程序端完成这个功能,必须从服务器端实现。

我的做法:

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

您可以使用以下代码更改应用程序中的标记数(例如,在applicationDidBecomeActive中):

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    application.applicationIconBadgeNumber = 0;
}

希望这能帮到你。

4
徽章计数是可以从服务器发送的苹果推送通知有效负载中的参数之一。徽章计数通常反映了某种新数据(例如未读电子邮件)的数量,服务器希望提醒应用程序用户。 因此,应该在服务器端完成。当前始终将1发送到徽章计数的代码应更改为选择正确的计数。
您可以在客户端执行此操作(每当推送通知到达时将其递增1),但这不是一个好主意,因为不能保证推送通知会到达。此外,仅当通知除了徽章数字之外还包含警报,并且用户点击通知以打开应用程序时,才有可能进行此操作(否则,如果应用程序尚未运行,则不会获取通知数据)。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接