APNS清空icon数字的多种姿势

关于iOS的推送角标,实在是比较坑爹

对于apns来讲,如果app收到了多条推送,推送通知栏会有多条消息,当用户启动app,我们最常用的方式就是调用下面的方法清空角标 :

  [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

在进入后台一看,嗯,确实清掉了角标
拉开通知中心一看,尼玛,推送呢? 一条也没了。。。
那么如何在不影响通知栏消息的基础上清掉角标呢?

变化规律
  1. 本地推送UILocalNotification的applicationIconBadgeNumber属性只会影响角标的显示,不会影响通知栏的通知处理。
  • 当applicationIconBadgeNumber>0时,角标会随applicationIconBadgeNumber而变化。
  • 当applicationIconBadgeNumber=0时,角标维持推送前状态不变。
  • 当applicationIconBadgeNumber<0时,角标置0不显示。
  1. 远程推送的badge字段,只会影响角标的显示,不会影响通知栏的通知处理。
  • 当badge>0时,角标会随badge而变化。
  • 当badge=0时,角标维持不变。
  • 当badge<0时,角标维持不变。
  1. UIApplication的applicationIconBadgeNumber属性既会影响角标的显示,又会影响通知栏通知的处理。
  • 当applicationIconBadgeNumber>0时,角标会随之变化,通知栏通知不变。
  • 当applicationIconBadgeNumber=0时,角标变为0不显示,通知栏通知清空。
  • 当applicationIconBadgeNumber<0时,角标变为0不显示,通知栏通知清空。

这时一个优雅的方案就出现了:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    //清空徽标 -  会保留通知栏信息
    if (application.applicationIconBadgeNumber <= 0) {
        return;
    }
    UILocalNotification *local = [[UILocalNotification alloc] init];
    local.fireDate = [NSDate date];
    local.applicationIconBadgeNumber = -1; // 置空
    [application scheduleLocalNotification:local];
}

如此以来 ,再也不用担心通知中心被清空啦~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转自:http://blog.csdn.net/u012361288/article/details/516565...
    枫枫大世界阅读 3,987评论 0 2
  • iOS里清程序角标的时候会把通知栏的推送消息也清了。试验了好久得到了一些结论,记录下结果。推送分为远程推送和本地推...
    向晚forever阅读 9,602评论 0 1
  • jQuery对象插件编写方法 在上一篇文章中,我写到jQuery类插件的编写方法,这个方法是针对jquery本身的...
    fangdown阅读 1,319评论 0 1
  • 她,一个神经质的女孩,天天疯疯傻傻的,好像自带绝缘,别人的不开心她听听,自动屏蔽,然后会聊聊那些搞笑的奇葩事...
    放慢吧脚步阅读 1,720评论 0 3

友情链接更多精彩内容