iphone - UILocalNotification 应用角标(Badge)编号重复

标签 iphone ios objective-c cocoa-touch

我在我的应用中使用 UILocalNotification。有时我安排重复通知,有时安排不重复通知。每当通知触发时,我想增加应用程序角标(Badge)编号。所以我这样做 localNotification.applicationIconBadgeNumber = badNumber; 这工作正常...除非通知是重复通知,因为如果我之前设置了角标(Badge)编号为 1 的重复通知,那么我设置了另一个非-重复通知,角标(Badge)编号为 2。

流程是这样的:

Notification 1 fires (first time) - Badge number = 1 (OK!) 
Notification 2 fires              - Badge number = 2 (OK!) 
Notification 1 fires (repeating)  - Badge number = 1 (ERROR)

如您所知,当通知 1 再次触发时,我仍然希望应用角标(Badge)编号显示 2(对于 2 个错过的通知)。我可以实现这种行为吗?或者有什么明显的事情我错过了?对我来说,重复通知的更合乎逻辑的角标(Badge)行为是,它第一次设置角标(Badge)编号,并且在随后的时间里,它不会更改角标(Badge)编号。

最佳答案

简单:对不起,戴夫。恐怕我做不到。

使用 UILocalNotification 时,无法让角标(Badge)计数保持在您希望的“最高”计数。

角标(Badge)计数将始终设置为您在安排通知时设置的值(正如您所知)。您不能假设用户每当收到通知时都会打开您的应用程序,因此在每次应用程序启动时更新已安排的通知(重复和非重复)的角标(Badge)计数肯定不起作用,也不是一个选项。

您可以做到这一点的唯一方法是使用推送通知,跟踪服务器上的所有“未读”通知,并在用户启动您的应用程序后立即在服务器上将通知标记为“已读”。

关于iphone - UILocalNotification 应用角标(Badge)编号重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14243828/

相关文章:

ios - 具有单一数据库和单一登录的多个 iOS 应用程序

iphone - 应用程序在发送和接收特殊字符时崩溃

ios - AudioQueueStart 在 iOS 7 的后台进程中失败并显示 -16981

iphone - 如何在 UITextField 中插入蓝色文本标记?

objective-c - NSURLRequests 的默认缓存过期时间是多少?

ios - 当状态为 "waiting for review"时,iTunes 连接替换二进制文件

iphone - UiTextField 中的第一个字母小写

iphone - 以编程方式实现 UIScrollView

ios - 快速传递带参数的闭包作为参数

objective-c - 类扩展中@property(非原子,只读)和@property 之间的区别?