最近在研究蘋果推送,當測試本地推送的時候,發現一個問題,就是一旦你添加了一個本地推動的通知,當你修改代碼,刪除應用,當你再次運行app,它還是會在橫幅上面彈出推送,尼瑪怎么搞都刪除不了,近乎崩潰了,開始以為是ios7的Bug,蘋果爹自ios7之后各種bug曾出不窮,不過最后冷靜思考了一下,有木有可能App本地的推送是設置系統里面,所以你在app刪除本地推送的代碼都沒辦法取消推送,於是終於給我找到了一個 cancelAllLocalNotifications方法,尼瑪,蛋疼的本地推送終於不見了...狗皮膏葯般的惡魔終於不見了.
這個是產生本地推送的一個本地通知,一旦你運行它,那么恭喜,你刪除app,修改代碼,再安裝,橫幅就一直尼瑪的彈呀彈...
UILocalNotification *notification = [[UILocalNotification alloc] init]; //設置10秒之后 NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10]; if (notification != nil) { // 設置推送時間 notification.fireDate = pushDate; // 設置時區 notification.timeZone = [NSTimeZone defaultTimeZone]; // 設置重復間隔 notification.repeatInterval = kCFCalendarUnitDay; // 推送聲音 notification.soundName = UILocalNotificationDefaultSoundName; // 推送內容 notification.alertBody = @"推送內容"; //顯示在icon上的紅色圈中的數子 notification.applicationIconBadgeNumber = 1; //設置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];