2

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

很抱歉让您误会了!

我想取消在通知中心发布的通知,但不是预定的通知。所以我想问的是如何保存本地通知对象,然后我可以在下次启动应用程序时使用它自行关闭。也许现在的sdk无法完成这项工作。

4

3 回答 3

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;
    }
}

这里:

  • 您需要在通知中存储一个 id 键值对,userInfo以识别特定的本地通知
  • cancelId是您要取消的通知的ID(存储在用户信息中)
于 2013-01-31T04:45:57.327 回答
1

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

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

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

[[UIApplication sharedApplication]cancelLocalNotification:yourNotification];
于 2013-01-31T04:14:20.833 回答
1

如果您保存通知的链接,那么您可以在它触发之前取消它。

[[UIApplication sharedApplication]cancelLocalNotification:yourNotification];
于 2013-01-31T04:16:06.480 回答