iOS清除角标,通知栏“通知”保留

头一次写博客。。。纪念一下花了好半天解决的问题


话不多,开始!


概念:

1.收到推送以后,程序内不要用 

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

来设置角标。因为可以控制角标的有三个对象

分别是

1.本地推送UILocalNotificationapplicationIconBadgeNumber属性

2.远程推送的badge字段

3.UIApplication的applicationIconBadgeNumber属性

在这里,我们使用本地通知来控制角标。



2.远程推送收到消息的时候有个“badge”值,

badge>0  更新角标

badge<=0  角标维持不变


解决方案:

我习惯在applicationDidBecomeActive中控制角标(大神请勿鄙视)


/********applicationDidBecomeActive*******/

if ([UIApplication sharedApplication].applicationIconBadgeNumber>0){

    [self resetBageNumber];

}


-(void)resetBageNumber{

    UILocalNotification *clearEpisodeNotification= [[UILocalNotification alloc] init];

    clearEpisodeNotification.fireDate =[NSDate dateWithTimeIntervalSinceNow:(1*1)];

    clearEpisodeNotification.applicationIconBadgeNumber =-1;//这是最关键的代码,设置-1

    [[UIApplication sharedApplication] scheduleLocalNotification:clearEpisodeNotification];

}


写完运行!结果失败!!

后来突然发现didReceiveLocalNotification中写了无数的垃圾代码


修改后的didReceiveLocalNotification内的代码:

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{


}



全部删除!!!!再运行!!!大功告成!!


特别感谢:

http://blog.csdn.net/focusonlovingfreedom/article/details/52248957

https://segmentfault.com/a/1190000003942425

http://blog.csdn.net/u012361288/article/details/51658581

你可能感兴趣的:(iOS清除角标,通知栏“通知”保留)