要获取设备设置时间更改通知,我发现我们必须使用UIApplication.significantTimeChangeNotification
通知和func applicationSignificantTimeChange(_ application: UIApplication)
委托方法。
但是就我而言,即使应用程序处于后台或处于终止状态,我也必须向用户显示本地通知,说设备时间已更改。有可能吗,请让我知道我们是否对此有任何解决方案。
答案 0 :(得分:2)
来自applicationSignificantTimeChange上的Apple Document
如果您的应用当前处于暂停状态,则此消息会排队等待,直到您的应用 应用程序返回到前台,此时将其交付。如果 发生了多次时间更改,只有最新的一次发生了。
因此,它清楚地表明,只有在应用程序位于前景中时,此方法才有效。当应用未运行时,它甚至没有排队。
要在应用未运行时显示任何本地通知,应将其安排在过去以在将来触发。当应用程序未运行时,它不可能知道时间更改事件。看来您将无法实现您所要求的。
答案 1 :(得分:1)
我不相信。 iOS无法将通知传递给未运行的应用,并且通知不会在任何地方排队。
但是,一种可能的解决方法是,从可信任的在线来源获取当前UTC值,并将其与设备认为UTC的值进行比较,然后存储该偏移量。应用重新启动后,请重新计算该偏移量,如果与以前存储的偏移量有很大差异,请采取措施应对“重大时间更改”通知。