ios - 阻止应用发送通知(如果已经有通知)
ios - prevent app from sending notification if already one there
我似乎找不到它,而且我不确定如何 Google。在我的应用程序中,我使用后台提取来进行检查,如果有新数据,我会使用 UILocalNotification
向用户发送通知。现在,如果已经有一个通知,我该如何防止应用程序向用户发送新通知?当我几个小时不看 phone 时,我现在收到了 5 条相同的通知。
谢谢!
您可以使用 UIApplication 的 属性 scheduledLocalNotifications
示例代码如下:
NSMutableArray *notifications = [[NSMutableArray alloc] init]; [notifications addObject:notification]; myApp.scheduledLocalNotifications = notifications;
//Equivalent: [myApp setScheduledLocalNotifications:notifications];
UIApplication *myApp = [UIApplication sharedApplication];
NSArray *eventArray = [myApp scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
NSDictionary *userInfoCurrent = oneEvent.userInfo;
NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]];
if ([uid isEqualToString:uidtodelete])
{
//Cancelling local notification
[myApp cancelLocalNotification:oneEvent];
break;
}
}
NSArray *arrayOfLocalNotifications = [[UIApplication sharedApplication] scheduledLocalNotifications] ;
for (UILocalNotification *localNotification in arrayOfLocalNotifications) {
if ([localNotification.alertBody isEqualToString:savedTitle]) {
NSLog(@"the notification this is canceld is %@", localNotification.alertBody);
[[UIApplication sharedApplication] cancelLocalNotification:localNotification] ; // delete the notification from the system
}
}
希望这有助于找到解决方案。
避免首先取消某些内容的最好方法就是不发送它。
想办法知道用户之前有没有被通知过,如果有,就不要再通知了:)
这更清洁,更高效,将永远持续下去,并且永远不会适得其反。
此外,这回答了您 "not sending a notification again" 的问题,而不是发送它并在之后取消,如果您考虑一下,这不是一个好主意。
我似乎找不到它,而且我不确定如何 Google。在我的应用程序中,我使用后台提取来进行检查,如果有新数据,我会使用 UILocalNotification
向用户发送通知。现在,如果已经有一个通知,我该如何防止应用程序向用户发送新通知?当我几个小时不看 phone 时,我现在收到了 5 条相同的通知。
谢谢!
您可以使用 UIApplication 的 属性 scheduledLocalNotifications
示例代码如下:
NSMutableArray *notifications = [[NSMutableArray alloc] init]; [notifications addObject:notification]; myApp.scheduledLocalNotifications = notifications;
//Equivalent: [myApp setScheduledLocalNotifications:notifications];
UIApplication *myApp = [UIApplication sharedApplication];
NSArray *eventArray = [myApp scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
NSDictionary *userInfoCurrent = oneEvent.userInfo;
NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]];
if ([uid isEqualToString:uidtodelete])
{
//Cancelling local notification
[myApp cancelLocalNotification:oneEvent];
break;
}
}
NSArray *arrayOfLocalNotifications = [[UIApplication sharedApplication] scheduledLocalNotifications] ;
for (UILocalNotification *localNotification in arrayOfLocalNotifications) {
if ([localNotification.alertBody isEqualToString:savedTitle]) {
NSLog(@"the notification this is canceld is %@", localNotification.alertBody);
[[UIApplication sharedApplication] cancelLocalNotification:localNotification] ; // delete the notification from the system
}
}
希望这有助于找到解决方案。
避免首先取消某些内容的最好方法就是不发送它。 想办法知道用户之前有没有被通知过,如果有,就不要再通知了:) 这更清洁,更高效,将永远持续下去,并且永远不会适得其反。
此外,这回答了您 "not sending a notification again" 的问题,而不是发送它并在之后取消,如果您考虑一下,这不是一个好主意。