Yahoo Weather 应用程序正在执行不可撤销的操作 - iOS

Yahoo Weather app doing the undoable - iOS

6 个月前,我想从后台(已终止的应用程序)唤醒我的应用程序 30 秒,以下载几行 XML 并解析它,但在尝试使用后台获取和静默推送并在线阅读文章后我得出结论,我想要完成的事情是不可能的。

直到我找到 Yahoo Weather app,它允许用户设置一天中 he/she 想要收到明天天气通知的时间;通知是本地的,数据每天都在后台下载。雅虎是怎么做到的?

我看不到他们的代码,所以我不能告诉你他们是怎么做的,但是我可以告诉你我是如何实现类似的东西的。

您可以要求系统在有资源时在后台启动应用程序。这个叫后台刷新,你可以查一下

当您的应用程序因后台应用程序刷新而在后台启动时,您可以下载所需的数据,然后在每次发生这种情况时重新安排新的本地通知。这意味着当用户实际收到通知时,它将保留尽可能最新的数据。

在天气应用方面。他们的应用程序每天在后台更新几次,并且能够获取当前的天气数据。他们每次都会安排通知,当您实际收到通知时,它具有最新的数据。

一段时间后我弄明白了。该应用程序也不使用后台获取或静默推送,因为如果用户终止该应用程序,它们将不会 运行。应用程序 24 小时跟踪用户位置,位置更新后,本地通知将下载数据并安排。

阅读更多: Will iOS wake up the terminated app if it's registered with location for UIBackgroundModes?

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html