我正在开发具有推送通知和本地通知的iOS应用程序,我知道如何从中心删除1和所有通知,
使用
[[UIApplication sharedApplication]cancelAllLocalNotifications];但我的问题是如果我安排了一些本地通知,
并且到达了一个推送通知,所以在didReceiveRemoteNotification中我正在编写
[[UIApplication sharedApplication]cancelAllLocalNotifications];为透明通知中心,
但我所有的LocalNotification都被清除了.
编辑,如果NC中总共有3条通知,即1来自本地通知,2来自推送(来自服务器),在这种情况下,我如何处理它?我是点击第一次通知(来自服务器)在NC。在这种情况下,该做什么,我的应用程序徽章应该是2。
那我该怎么办?
发布于 2013-10-07 12:14:02
cancelAllLocalNotifications只会取消本地通知,即使在名称中也是如此!而不是您可以在文档中读到的推送通知:
取消所有计划本地通知的传递。
由于推送通知是服务器端的,所以在应用程序中需要取消。要从通知中心删除推送通知,只需将applicationBadegNumber设置为0。
发布于 2013-10-07 12:49:47
有一个选项,每个通知都包含一个字典,所以当您创建任何本地通知时,在字典中添加指定此通知用于本地notification.so的任何键时,您可以检查如果它不是我的本地通知,那么我将删除它。
-(void)scheduleLocalNotification{
[self cancelAlarm]; //clear any previous alarms
UILocalNotification *alarm = [[UILocalNotification alloc] init];
alarm.alertBody = @"alert msg";
alarm.fireDate = [NSDate dateWithTimeInterval:alarmDuration sinceDate:startTime];
alarm.soundName = UILocalNotificationDefaultSoundName;
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"localNotification" forKey:@"localNotification"];
alarm.userInfo = userInfo;
[[UIApplication sharedApplication] scheduleLocalNotification:alarm];}
-(void)cancelNotification{
for (UILocalNotification *notification in [[[UIApplication sharedApplication] scheduledLocalNotifications] copy]){
NSDictionary *userInfo = notification.userInfo;
if (![self.key isEqualToString:[userInfo objectForKey:localNotification]]){
[[UIApplication sharedApplication] cancelLocalNotification:notification];
}
}}
发布于 2013-10-08 16:45:59
应用程序编号由您管理。删除计划通知不会更改该编号。你必须自己处理。我刚才做了个演讲也许会有帮助。http://www.youtube.com/watch?v=ixQqZWtn0pg在11:50开始收看。
https://stackoverflow.com/questions/19224434
复制相似问题