iOS - 在设备设置中,如果我改变时间,即使在应用程序后台,杀死状态也应该得到通知

问题描述 投票:2回答:2

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

但在我的情况下,即使应用程序处于后台或处于被杀死状态,然后我必须向用户显示本地通知,说明设备时间已更改。是否有可能,如果我们有任何解决方案,请告诉我。

ios uiapplicationdelegate uiapplication
2个回答
2
投票

来自applicationSignificantTimeChange上的Apple Document

如果您的应用程序当前已暂停,则此消息将排队,直到您的应用程序返回到前台,此时它将被传递。如果发生多个时间更改,则仅传递最新的时间。

因此,它清楚地表明,只有当应用程序位于Foreground时才会起作用。当应用程序未运行时,它甚至没有排队。

要在应用程序未运行时显示任何本地通知,应在过去安排它以便将来触发它。并且应用程序无法在未运行时了解时间更改事件。看起来你无法实现你的要求。


1
投票

我不相信。 iOS无法向未运行的应用程序发送通知,并且不会在任何地方排队。

然而,一种可能的解决方法可能是从受信任的在线源获取当前UTC值,并将其与设备认为的UTC进行比较并存储该偏移量。应用程序重新启动后,再次计算此偏移量,如果它与之前存储的偏移量明显不同,请执行您为响应重要时间更改通知而采取的操作。

© www.soinside.com 2019 - 2024. All rights reserved.