对于过去的非重复通知,UIApplication scheduledLocalNotifications为空

Pet*_*rbo 3 cocoa-touch objective-c ios uilocalnotification

我已经尝试了3do应用程序,它似乎能够安排非重复通知并删除通知中心的特定通知.它的工作原理如下:当应用程序处于后台时,它们会在通知中心发送,如果您选择其中一个通知,则会打开并且您可以选择点击"完成",如果您点击"完成",则会删除特定通知来自通知中心.如果您没有点击任何内容,通知将留在通知中心.

这是我自己在自己的一个应用程序中遇到的问题,我无法理解如何从通知中心删除单个通知.如果通知没有重复间隔,则scheduledLocalNotificationsUIApplication数组将为空,因此我无法取消该特定通知并将其从通知中心中删除.但是,如果通知具有重复间隔,则scheduledLocalNotifications数组将不为空,我可以删除此通知.但是,如果通知不重复,我该如何处理这种情况呢?

Har*_*nan 10

scheduledLocalNotifications array will show as empty even if you have set local notifications.最好的方法是保留各个本地通知对象.这样您就可以轻松删除它.

设置本地通知时,请像这样保存对象

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

NSString *userDefKey =  @"key";
NSData *dataEnc = [NSKeyedArchiver archivedDataWithRootObject:localNotification];
[[NSUserDefaults standardUserDefaults] setObject:dataEnc forKey:userDefKey];
Run Code Online (Sandbox Code Playgroud)

你应该保留钥匙

如果要删除特定的本地通知

if([[NSUserDefaults standardUserDefaults] objectForKey:userDefKey]){

    NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:userDefKey];
    UILocalNotification *localNotif = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    [[UIApplication sharedApplication] cancelLocalNotification:localNotif];

}
Run Code Online (Sandbox Code Playgroud)