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" 的问题,而不是发送它并在之后取消,如果您考虑一下,这不是一个好主意。