【问题标题】:iOS - in device settings if i change time it should get notified even in app background, killed stateiOS - 在设备设置中,如果我更改时间,即使在应用程序后台、已终止状态下也应该得到通知
【发布时间】:2019-04-29 11:13:59
【问题描述】:

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

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

【问题讨论】:

    标签: ios uiapplicationdelegate uiapplication


    【解决方案1】:

    来自applicationSignificantTimeChange上的 Apple 文档

    如果您的应用当前处于暂停状态,此消息将排队等待您的 应用程序返回到前台,此时它被交付。如果 发生多次时间更改,仅交付最近的一次。

    因此,它清楚地表明这仅在应用程序处于前台时才有效。当应用程序未运行时,它甚至不会排队。

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

    【讨论】:

    • 好的,但是在杀死应用程序之后,如果我更改设备时间,那么如果我打开应用程序,我会收到时间更改通知吗?
    • 根据苹果文件,这是不可能的。当应用程序处于终止模式时,它不会知道任何事情。如果是背景,是可以的。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-09
      • 2021-02-17
      • 2023-01-31
      • 2021-08-14
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      相关资源
      最近更新 更多