iOS - 在设备设置中,如果我更改时间,即使在应用程序后台、已终止状态下也应该得到通知
Posted
技术标签:
【中文标题】iOS - 在设备设置中,如果我更改时间,即使在应用程序后台、已终止状态下也应该得到通知【英文标题】:iOS - in device settings if i change time it should get notified even in app background, killed state 【发布时间】:2019-04-29 11:13:59 【问题描述】:要获取设备设置时间更改通知,我发现我们必须使用UIApplication.significantTimeChangeNotification
通知和func applicationSignificantTimeChange(_ application: UIApplication)
委托方法。
但在我的情况下,即使应用程序处于后台或终止状态,我也必须向用户显示本地通知,说明设备时间已更改。有可能吗,如果我们对此有任何解决方案,请告诉我。
【问题讨论】:
【参考方案1】:来自applicationSignificantTimeChange上的 Apple 文档
如果您的应用当前处于暂停状态,此消息将排队等待您的 应用程序返回到前台,此时它被交付。如果 发生多次时间更改,仅交付最近的一次。
因此,它清楚地表明这仅在应用程序处于前台时才有效。当应用程序未运行时,它甚至不会排队。
要在应用未运行时显示任何本地通知,应在过去安排它以在将来触发它。并且应用程序无法在未运行时知道时间更改事件。看起来您将无法实现您的要求。
【讨论】:
好的,但是在杀死应用程序之后,如果我更改设备时间,那么如果我打开应用程序,我会收到时间更改通知吗? 根据苹果文件,这是不可能的。当应用程序处于终止模式时,它不会知道任何事情。如果是背景,是可以的。【参考方案2】:我不相信。 ios 无法向未运行的应用程序发送通知,并且它们不会在任何地方排队。
然而,一种可能的解决方法是从可信的在线来源获取当前的 UTC 值,并将其与设备认为的 UTC 值进行比较,然后存储该偏移量。一旦您的应用重新启动,请再次计算此偏移量,如果它与您之前存储的偏移量显着不同,请采取您应采取的措施来响应“重大时间更改”通知。
【讨论】:
以上是关于iOS - 在设备设置中,如果我更改时间,即使在应用程序后台、已终止状态下也应该得到通知的主要内容,如果未能解决你的问题,请参考以下文章
即使您在手机中启用横向设置,如何禁止活动更改方向? [复制]
在 iOS 设置中更改通知时,Amazon SNS 如何禁用/重新启用设备?