关于 Icon Badge Number 的问题

2011-01-04 00:49:16 +08:00
 Kai
一个 Local Notification 在生成提醒的时候可以选择开启 applicationIconBadgeNumber 并且设置一个参数。

我的理解是这个参数应该是指当前系统 Icon 显示的 Badge Number 总数,并且系统不会为你做加法减法。这样一来当需要一次有多个事件触发的时候,就需要在生成那个提醒的时候将 Badge Number 总数算好。

按照这个思路,我的 Local Notification 创建时候的部分代码如下:
http://pastie.org/1425960

可是似乎这样不太对,因为多事件触发后 badge number 还是一直显示为 "1" ......
5977 次点击
所在节点    iDev
8 条回复
Kai
2011-01-04 00:50:44 +08:00
Livid
2011-01-04 01:01:07 +08:00
如果是这样会发生什么?

localNotif.applicationIconBadgeNumber = localNotif.applicationIconBadgeNumber + 1;
Kai
2011-01-04 01:14:10 +08:00
@Livid 还是一样的。

我在想,现在这种情况是,假设定时之前,系统还没有收到触发的提醒事件( applicationIconBadgeNumber == 0 )。所以这个时候创建提醒的话,似乎就没有办法比较容易的获得一个准确的 Icon Badge Number 总数?
Kai
2011-01-04 02:36:41 +08:00
似乎 iOS 4 下 Local Notification 的 applicationIconBadgeNumber 还需要不断完善的,这里有相关讨论:
http://stackoverflow.com/questions/3200608/how-can-i-increment-app-icon-badge-when-multiple-local-notifications-fire
Kai
2011-01-04 02:37:43 +08:00
Livid
2011-01-04 02:46:15 +08:00
看来需要自己维护一个计数器。
Kai
2011-01-04 03:15:25 +08:00
只好这样了。

p.s. 这下科幻了,系统也没有预设的(即将)接到本地通知的 method, 那个 didReceiveLocalNotification: 也只是给前台运行时候准备的。
Kai
2011-01-04 09:10:16 +08:00
最后还是通过做了一个简单的计数器搞定了这个问题。

一个小 tip,或许对以后碰到这个问题的朋友们有帮助:
扎堆添加 Local Notification 会比较方便;同时 applicationLocalNotification 的数字是按照从大到小的顺序反着排列的,也就是说第一个加入定时的事件 Badge Number 应该是最大值,然后递减到 1。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/6703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX