在没有推送通知的情况下更新iOS徽章


86

我看到一些待办事项应用程序会在午夜更新其应用程序徽章,并始终显示正确数量的到期任务。他们无需使用推送通知即可执行此操作-所以我的问题是:他们如何做到这一点?他们是否使用本地通知-如果这样,则在设备关闭时会被调用吗?我有些困惑,不胜感激。

Answers:


137

试试这个

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];

要通过本地通知执行此操作,您必须在 applicationIconBadgeNumber

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.applicationIconBadgeNumber = 1;// set here the value of badge

1
这是更改徽章编号的方法-但要在应用程序处于后台或手机处于睡眠状态时进行更改,可能需要查看本地通知或预定任务。
Jasarien

2
在iOS 8.0和更高版本中,您的应用程序必须先使用-[UIApplication registerUserNotificationSettings:]注册用户通知,然后才能设置图标标志。
unom

17

对于使用新的闪亮Swift的所有人:

UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber

斯威夫特3:

UIApplication.shared.applicationIconBadgeNumber = someNumber

2
在建议快速答案时,最好包括您要覆盖的版本,因为它现在非常动态。
Juan Boero

你是对的 ; 但是,在这种情况下,语法中没有任何内容可以更改(它是简单的赋值),因此可能不需要:)
Jiri Trecak 2015年

3
吉里(Jiri),事后有趣的评论;-)
蒂姆(Tim)

13

从iOS 4.0开始,您可以在至少运行iOS 4.0的所有设备上触发本地通知。查看UILocalNotification课程,它使您可以在午夜设置徽章,而无需运行您的应用。


嗯,iPhone甚至在关机时也无法启动闹钟,因此不会,徽章那时不会更新。但是,当您重新打开它时,它将触发将更新徽章的通知。
JustSid 2011年

好的,这就是我想知道的。谢谢!
fabian789 '02

7

在应用程序运行时,在代码中设置UIApplicationapplicationIconBadgeNumber属性:

[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber;

0

对于目标C,您必须使用:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];            

0

迅捷5

UIApplication.shared.applicationIconBadgeNumber = someNumber
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.