【问题标题】:Yahoo Weather app doing the undoable - iOS雅虎天气应用程序可以撤消 - iOS
【发布时间】:2015-02-24 23:35:58
【问题描述】:

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

直到我找到Yahoo Weather app,它允许用户设置他/她想要获取关于明天天气的通知的时间;通知是本地的,每天都会在后台下载数据。雅虎是如何做到这一点的?

【问题讨论】:

  • 终止和后台不是一回事。但是,通过使用你提到的工具,你想要的后台应用程序是可能的……后台获取和静默推送。你可能在实现中做错了什么。
  • 是的,我知道,我说的是终止的应用程序。
  • 如果用户使用进程切换器(双击 Home 键并向上滑动)终止了您的应用程序,那么您的应用程序进程将被终止,Apple 将不会启动它来接收推送。是这个意思吗?
  • 是的,但 Yahoo 仍然设法在后台启动应用程序。

标签: ios background-process uilocalnotification


【解决方案1】:

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

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

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

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

【讨论】:

  • 当应用程序在后台时这一切都很好,但雅虎应用程序即使在应用程序终止时也能工作。
  • 如果雅虎可以不顾 Apple 公布的规则做到这一点,那么雅虎与 Apple 签订了合同,这是您可能不会得到的。
  • @Ty096 你可以终止应用程序,关键是系统可以重新启动它一小段时间,比如收集一些数据。了解后台应用刷新。
  • 我阅读了有关后台刷新的文章(6 个月前,今天又一次),它涉及到后台获取和静默推送。但是当用户终止应用程序时,后台获取或静默推送都不起作用。您可以感觉到无声推送(振动),但应用程序不会处理它(当它终止时)。但雅虎还是成功了。
  • Per Apples docs - "该应用程序需要定期从网络获取新内容。在方便时,系统会在后台启动或恢复应用程序并提供少量下载任何新内容的时间。iOS 7.0 及更高版本支持此值。基本上,如果实施得当,它会做天气应用所做的事情。
【解决方案2】:

一段时间后,我想通了。该应用程序也不使用后台获取或静默推送,因为如果用户终止该应用程序,它们将不会运行。应用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2012-08-16
    • 2013-02-09
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多