最近在研究苹果推送,当测试本地推送的时候,发现一个问题,就是一旦你添加了一个本地推动的通知,当你修改代码,删除应用,当你再次运行app,它还是会在横幅上面弹出推送,尼玛怎么搞都删除不了,近乎崩溃了,开始以为是ios7的Bug,苹果爹自ios7之后各种bug曾出不穷,不过最后冷静思考了一下,有木有可能App本地的推送是设置系统里面,所以你在app删除本地推送的代码都没办法取消推送,于是终于给我找到了一个 cancelAllLocalNotifications方法,尼玛,蛋疼的本地推送终于不见了...狗皮膏药般的恶魔终于不见了.
这个是产生本地推送的一个本地通知,一旦你运行它,那么恭喜,你删除app,修改代码,再安装,横幅就一直尼玛的弹呀弹...
UILocalNotification *notification = [[UILocalNotification alloc] init]; //设置10秒之后 NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:]; if (notification != nil) { // 设置推送时间 notification.fireDate = pushDate; // 设置时区 notification.timeZone = [NSTimeZone defaultTimeZone]; // 设置重复间隔 notification.repeatInterval = kCFCalendarUnitDay; // 推送声音 notification.soundName = UILocalNotificationDefaultSoundName; // 推送内容 notification.alertBody = @"推送内容"; //显示在icon上的红色圈中的数子 notification.applicationIconBadgeNumber = ; //设置userinfo 方便在之后需要撤销的时候使用 NSDictionary *info = [NSDictionary dictionaryWithObject:@"name"forKey:@"key"]; notification.userInfo = info; //添加推送到UIApplication UIApplication *app = [UIApplication sharedApplication]; [app scheduleLocalNotification:notification];
怎么才能取消这种流氓行为呢?只需要3行代码,世界瞬间清净了...顺带删除掉那个1的小红点
UIApplication *app = [UIApplication sharedApplication];
app.applicationIconBadgeNumber = 0;
[app cancelAllLocalNotifications];