ios - 阻止应用程序发送通知(如果已有)

时间:2015-08-04 07:14:21

标签: ios uilocalnotification

我似乎无法找到它并且我不确定如何Google。在我的应用程序中,我使用后台提取进行检查,如果有新数据,我会使用UILocalNotification向用户发送通知。现在如何阻止应用向用户发送新通知(如果已存在)?当我不看电话几个小时后,我现在收到5条相同的通知。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用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

    }

}

希望这有助于找出解决方案。

答案 1 :(得分:0)

避免首先取消它的最好方法也就是不发送它。 找到一种方法来了解用户之前是否已收到通知,如果有,则不要再次通知:) 这是更清洁,更有效,将永远持续,并且永远不会适得其反。

此外,这回答了您的问题&#34;没有再次发送通知&#34;而不是发送它并在之后取消,如果你考虑它不是一个好主意。