孤儿UILocalNotification - 已确认

时间:2013-03-14 17:22:41

标签: ios uilocalnotification

我正在使用的应用程序允许用户设置和删除UILocalNotifications。在开发过程中,我添加并删除了UILocalNotifications进行测试,似乎正在运行。

但是我看到了奇怪的行为,在从设备中删除我的应用并再次运行设置任何通知后,我将获得UILocalNotification。此通知未在此全新安装中设置(通过在我的通知设置方法中添加断点进行检查)。

我是否有可能从之前的安装中获得孤立的UILocalNotification(是的,我似乎也不太可能)。

我已尝试通过将通知alertBody设置为特定于每个新安装的内容来调试此操作,但此唯一字符串不会显示在警报中。例如:

notif.alertBody = [NSString stringWithFormat:@"Alert for: %@", alertName];

之前有没有人见过这种行为?

更新:刚刚确认孤立的UILocalNotifications:从设备中删除了该应用,并在viewDidAppear的rootViewController中运行了以下代码。我在控制台中获得以下输出:

2013-03-14 14:20:07.439 TestApp[16606:907] found alert: uigffhy
2013-03-14 14:20:07.444 TestApp[16606:907] found alert: uigffhy

此用户来自之前的某些安装。啊。

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

for (UILocalNotification *notif in notificationArray) {
    NSDictionary * info = notif.userInfo;
    NSString * name = [info objectForKey:@"sequenceName"];
    NSLog(@"found alert: %@", name);

}

1 个答案:

答案 0 :(得分:1)

只需检测它是否为全新安装(使用NSUserDefaults)并在applicationDidFinishLaunching:中执行以下操作

[[UIApplication sharedApplication] cancelAllLocalNotifications];