为了获得设备设置时间更改通知,我发现我们必须使用UIApplication.significantTimeChangeNotification
通知和func applicationSignificantTimeChange(_ application: UIApplication)
委托方法。
但在我的情况下,即使应用程序处于后台或处于被杀死状态,然后我必须向用户显示本地通知,说明设备时间已更改。是否有可能,如果我们有任何解决方案,请告诉我。
来自applicationSignificantTimeChange上的Apple Document
如果您的应用程序当前已暂停,则此消息将排队,直到您的应用程序返回到前台,此时它将被传递。如果发生多个时间更改,则仅传递最新的时间。
因此,它清楚地表明,只有当应用程序位于Foreground时才会起作用。当应用程序未运行时,它甚至没有排队。
要在应用程序未运行时显示任何本地通知,应在过去安排它以便将来触发它。并且应用程序无法在未运行时了解时间更改事件。看起来你无法实现你的要求。
我不相信。 iOS无法向未运行的应用程序发送通知,并且不会在任何地方排队。
然而,一种可能的解决方法可能是从受信任的在线源获取当前UTC值,并将其与设备认为的UTC进行比较并存储该偏移量。应用程序重新启动后,再次计算此偏移量,如果它与之前存储的偏移量明显不同,请执行您为响应重要时间更改通知而采取的操作。