iOS-在设备设置中,如果我更改时间,即使在应用程序后台,终止状态下也应得到通知

时间:2019-04-29 11:13:59

标签: ios uiapplicationdelegate uiapplication

要获取设备设置时间更改通知,我发现我们必须使用UIApplication.significantTimeChangeNotification通知和func applicationSignificantTimeChange(_ application: UIApplication)委托方法。

但是就我而言,即使应用程序处于后台或处于终止状态,我也必须向用户显示本地通知,说设备时间已更改。有可能吗,请让我知道我们是否对此有任何解决方案。

2 个答案:

答案 0 :(得分:2)

来自applicationSignificantTimeChange上的Apple Document

  

如果您的应用当前处于暂停状态,则此消息会排队等待,直到您的应用   应用程序返回到前台,此时将其交付。如果   发生了多次时间更改,只有最新的一次发生了。

因此,它清楚地表明,只有在应用程序位于前景中时,此方法才有效。当应用未运行时,它甚至没有排队。

要在应用未运行时显示任何本地通知,应将其安排在过去以在将来触发。当应用程序未运行时,它不可能知道时间更改事件。看来您将无法实现您所要求的。

答案 1 :(得分:1)

我不相信。 iOS无法将通知传递给未运行的应用,并且通知不会在任何地方排队。

但是,一种可能的解决方法是,从可信任的在线来源获取当前UTC值,并将其与设备认为UTC的值进行比较,然后存储该偏移量。应用重新启动后,请重新计算该偏移量,如果与以前存储的偏移量有很大差异,请采取措施应对“重大时间更改”通知。