0

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

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

我是否有可能从以前的安装中获得了孤立的 UILocalNotification (是的,这对我来说似乎也极不可能)。

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

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

有没有人见过这种行为?

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

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

}
4

1 回答 1

1

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

[[UIApplication sharedApplication] cancelAllLocalNotifications];
于 2013-03-14T18:47:43.037 回答