iPhone关机时的UILocalNotification

Posted

技术标签:

【中文标题】iPhone关机时的UILocalNotification【英文标题】:UILocalNotification when iPhone switched off 【发布时间】:2011-12-20 09:07:33 【问题描述】:

在设备关闭时安排 UILocalNotofication 会发生什么。

例如。我每天下午 3 点安排一次 UILocalNotification。但该设备在下午 3:00 至下午 4:00 期间关闭。我猜以下任何一种情况都会成立。

设备重启后不会触发任何通知。 设备重启时即在下午 4:00 触发通知

我没有设备,无法在模拟器上进行测试。

注意:关闭是指设备已关闭,而不是睡眠/待机模式

【问题讨论】:

【参考方案1】:

关闭和打开设备后将触发本地通知。

我编写了一个小型测试应用程序来验证这种行为:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    [[UIApplication sharedApplication] cancelAllLocalNotifications];

    NSDate *nowDate = NSDate.date;

    for (int i = 1; i <= 50; i++) 
        UILocalNotification *n = [[UILocalNotification alloc]init];

        n.fireDate = [nowDate dateByAddingTimeInterval:60 * i ];
        n.applicationIconBadgeNumber = 0;

        n.alertAction = @"Open";
        n.alertBody = [NSString stringWithFormat:@"ln %@ %@", @(i), n.fireDate];
        [[UIApplication sharedApplication] scheduleLocalNotification:n];
    
    return YES;

【讨论】:

【参考方案2】:

当您关闭设备时,通知将不存在,因此当您重新打开设备时,如果不重新创建该通知,将不会发生任何事情。

因此,如果您在下午 3 点安排活动,并且您的设备在下午 2 点 59 分关闭,然后在下午 3 点 59 分重新开启,则通知不会触发,因为它必须重新创建。

【讨论】:

这不正确。本地通知确实会持续重启,它不会丢失,除非它的触发时间是在设备关闭时。 那么,对此有何判决?有没有人有任何引用来支持这两种理论? 嗨,一个简单的问题?假设,我设置了明天上午 11 点的通知。然后关闭应用程序。并去设置日期时间,并更改明天和上午 10:55 的时间。那么,5分钟后,我能收到通知吗?目前我没有收到任何通知。你能帮忙吗?并分享你的想法。非常感谢。 这个答案不正确,我测试过,重启时通知仍然存在 如果您阅读了答案,在这种情况下,通知会在设备关闭时触发,因此这是正确的行为。

以上是关于iPhone关机时的UILocalNotification的主要内容,如果未能解决你的问题,请参考以下文章

qml 苹果关机按钮

iPhone长期不关机?隐患居然这么大!

iPhone冻傻了!权威发布:手机跑电关机预警地图!

如何检测用户何时按下 iPhone 中的幻灯片关机按钮?

亲测有效iPhone实现定时关机开机 - 远离手机 准时睡觉

亲测有效iPhone实现定时关机开机 - 远离手机 准时睡觉