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

抱歉让您误会了!

我想在通知中心关闭发布的通知,而不是预定的。
因此,我想问的是如何保存本地通知对象,然后在下次启动应用程序时将其关闭。也许当前的sdk无法完成此工作。

最佳答案

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

[[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(存储在用户信息中)
  • 10-06 05:45
    查看更多