我正在使用的应用程序允许用户设置和删除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);
}
答案 0 :(得分:1)
只需检测它是否为全新安装(使用NSUserDefaults
)并在applicationDidFinishLaunching:
中执行以下操作
[[UIApplication sharedApplication] cancelAllLocalNotifications];