0

所以我的推送通知工作得很好,除了徽章通知只会上升到 3,然后,即使它显示了这些通知,徽章编号也不会超过那个。这是启动时的徽章注册和清除代码以清除徽章

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
 (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

我没有其他代码设置徽章。

我很乐意回答任何问题,但我需要解决这个问题^^; 提前感谢您的帮助!

以斜体字编辑。

4

2 回答 2

1

如果您打算在收到推送通知后更新徽章计数,您可能应该在服务器中设置其值(使用badge推送通知的属性)。

当您的服务器向您的应用程序发送推送通知时,不能保证它们会到达。如果您在短时间内发送多个通知,Apple 可能只会发送其中的一部分。因此,当通知到达时增加应用程序中的徽章计数不是一个好习惯。

这不是一个好的做法的另一个原因是,如果您在应用程序中以编程方式更新徽章,则更新只会在用户点击通知时发生(如果用户通过启动图标打开应用程序,您甚至不会知道有通知,所以你不会知道更新徽章)。

徽章的想法是服务器将其作为推送通知的一部分发送。即使您没有点击通知,iOS 也会在应用程序图标上显示徽章。这告诉用户他/她有新信息要在应用程序中查看。当应用程序启动时,您应该显示新数据并清除标记(通过将其值设置为 0)。

通常,服务器返回的徽章编号包含服务器上可供应用程序用户使用的新数据项的数量(例如未读电子邮件的数量)。当用户可以通过多个设备从服务器访问数据时,让服务器维护这个数字就更有意义了。如果您在笔记本电脑上阅读了所有新电子邮件,您不希望您的电子邮件应用程序显示一个指示未读邮件的徽章编号。

于 2013-07-19T23:36:02.553 回答
0

请注意,这setApplicationIconBadgeNumber不是累积的。它不会为你做算术。您需要将徽章编号设置为您想要的确切值。因此,如果您希望汇总通知,则需要检查当前值,applicationIconBadgeNumber然后为每个通知添加 1。

在 a 的上下文中发送 0 表示“没有变化”,而在 的上下文中发送 0 表示UILocalNotification“隐藏” UIApplication

于 2013-07-19T18:01:39.687 回答