【问题标题】:orphaned UILocalNotification - confirmed孤立的 UILocalNotification - 确认
【发布时间】:2013-03-15 02:47:43
【问题描述】:

我正在使用的应用程序允许用户设置和删除 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);

}

【问题讨论】:

    标签: ios uilocalnotification


    【解决方案1】:

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

    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    

    【讨论】:

    • 感谢您的回复。不过让我想知道:这不是一个错误吗,因为在删除应用程序时应该删除所有应用程序数据。
    • 来自这篇文章:stackoverflow.com/questions/4923028/… 根据 Apple 的说法,这不是错误(我提交了错误报告)。系统会将已卸载应用的 UILocalNotifications 保留 24 小时,以防用户意外删除应用程序,如果在该时间范围内重新安装应用程序,系统将恢复所述 UILocalNotifications。
    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2010-10-05
    • 2015-12-28
    相关资源
    最近更新 更多