【问题标题】:Background fetch is not working after killing the app杀死应用程序后后台获取不起作用
【发布时间】:2016-05-30 10:58:30
【问题描述】:

我正在尝试通过后台获取从 url 获取数据。我的 func 尝试获取数据,如果有新数据,它会发送本地通知。当我最小化应用程序时,后台获取大约 10 - 20 分钟后工作。但是当我杀死应用程序时(双击主页按钮并关闭应用程序)它不起作用。我等了大约 1 小时,但没有成功。我在android中使用后台服务,它运行成功。有没有办法从 url 获取数据并在应用程序关闭时发送本地通知?我正在使用 Xcode 6 和 swift 1.2

【问题讨论】:

标签: ios swift background-process background-fetch


【解决方案1】:

在用户在多任务 UI 中将其杀死后,后台获取将不会在您的应用中发生。这是设计使然。

看看Apple's documentation 提到:

支持后台执行的应用程序可能会被系统重新启动 处理传入事件。如果应用程序因任何原因被终止 除了用户强制退出之外,系统会启动应用程序...

在大多数情况下,系统在应用程序被强制后不会重新启动它们 由用户退出。一个例外是位置应用程序,它在 iOS 8 和 后来被用户强制退出后重新启动。其他 但是,在某些情况下,用户必须明确启动应用程序或重新启动 应用程序可以在设备启动前自动进入 系统后台。

正如您在文档中所注意到的,如果应用被强制终止,只有 1 个例外会重新启动:使用定位服务。很遗憾,这不适用于您。

此外,您无法检测应用是否被用户强行杀死。检查这个StackOverflow answer

【讨论】:

  • 在 ios 10 swift 3.0 中应用程序终止后是否有可能执行代码???
  • @PatelJigar 否。iOS 10 在这种方式下与 iOS 9 和 8 的行为相同。同样,这是设计使然。
【解决方案2】:

用户从后台杀死应用程序后,后台获取将不会在您的应用程序中更新。这是不可能的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2016-08-15
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    相关资源
    最近更新 更多