我可以在下次启动应用时解除本地通知吗?

时间:2013-01-31 04:11:58

标签: ios serialization uilocalnotification notificationcenter

我知道当用户在通知中心点按此通知时,我可以取消通知。但是我可以在其他地方取消通知,我无法从系统获取相关的本地通知。我可以序列化本地通知,并在下次应用程序运行时取消它吗?

很抱歉让你误会!

我想解除通知中心发布的通知,但不是已安排的通知。 所以我想问的是如何保存本地通知对象,然后我可以使用它在下次启动应用程序时自行解除。也许这项工作无法通过当前的sdk来完成。

3 个答案:

答案 0 :(得分:2)

如果您需要取消所有可以使用的通知:

[[UIApplication sharedApplication] cancelAllLocalNotifications];

取消特定通知:

[[UIApplication sharedApplication] cancelLocalNotification:aNotification];

要获得特定通知,您可以使用:

NSArray *notifArray = [[UIApplication sharedApplication] scheduledLocalNotifications];
for (int i = 0; i < [notifArray count]; i++)
{
    UILocalNotification *aEvent = [notifArray objectAtIndex:i];
    NSDictionary *userInfo = aEvent.userInfo;
    NSString *notifId=[NSString stringWithFormat:@"%@",[userInfo valueForKey:@"id"]];
    if ([id isEqualToString:cancelId])
    {
        [[UIApplication sharedApplication] cancelLocalNotification:aEvent];
        break;
    }
}

下面:

  • 您需要在通知的userInfo中存储ID键值对,以识别特定的本地通知
  • cancelId是您要取消的通知ID(存储在用户信息中)

答案 1 :(得分:1)

使用此代码获取所有预定通知:

NSArray *reminderArray=[[UIApplication sharedApplication]scheduledLocalNotifications];

然后您可以选择所需的通知并将其删除。

[[UIApplication sharedApplication]cancelLocalNotification:yourNotification];

答案 2 :(得分:1)

如果您保存指向通知的链接,则可以在发布之前将其取消。

[[UIApplication sharedApplication]cancelLocalNotification:yourNotification];