长时间运行上传任务在后台

时间:2013-12-13 21:27:16

标签: ios background-process

我正在为iPhone开发一个应用程序,它从车辆中收集大量数据,然后将其上传到远程服务器。该应用程序本身将坐在车辆中,连接到电池供电,并在其大部分时间内收集数据而无需太多用户交互。鉴于此,重要的是这些上传在后台发生,应用程序被“唤醒”是进行上传的系统。此外,这是一个企业应用程序,因此该应用程序不需要通过Apple的批准。

鉴于这些要求,我认为Apple的新iOS 7后台获取API对我的问题来说是一个很好的解决方案。当然,由于我没有完全按照预期使用它,有些事情可能会给我带来一些问题,我想要澄清一下。

  1. 在新API上观看WWDC视频后,我了解到iOS会尝试识别该应用的使用模式,并在使用之前将其唤醒。如果该应用程序很少打开,是否会导致它最终停止进行这些后台更新?

  2. 当我使用此API时,我给出的完成处理程序块将UIBackgroundFetchResult作为参数。如果我每次传入UIBackgroundFetchResultFailed,是否会导致iOS认为我仍然需要这些新数据并继续唤醒应用程序?

  3. 最后,由于我明显以不同于预期的方式使用此API,有人可以推荐一种更符合我要求的更好方法吗?

4 个答案:

答案 0 :(得分:3)

有了这样的说法:“应用程序本身将坐在车内,连接到电池供电,并且在其大部分时间内没有太多用户交互的情况下收集数据”和“此外,这是一个企业应用程序,所以应用程序不需要通过Apple的批准。“,为什么还要使用后台获取API呢?

选择背景模式(如VOIP),然后在后台模式下运行任务。即使屏幕被锁定,您的网络连接也会保持活跃并执行任何发送/接收。

答案 1 :(得分:2)

我知道它已经有一段时间了,但只是为了记录。

我建议您使用AFNetworking,它有后台支持。 您需要知道的几乎所有内容都在github页面中。

要在后台运行,请检查以下问题: afnetworking-background-file-upload。 不知道问题中的代码是否有效,但答案可能有所帮助。

答案 2 :(得分:0)

IMO,新的ios 7 api功能不足以满足您的应用需求。

  1. 后台转接服务需要wifi(车上有无线网络吗?)如果你不使用后台转接服务,你只需要30秒就可以上传你的东西。
  2. 不经常调用后台提取。从我的测试来看,大部分时间是在用户解锁手机时发生的。
  3. 也就是说,位置服务可能非常适合这里。任何时候你的车辆移动到不同的牢房塔,你的应用程序可以运行大约3分钟。

    https://developer.apple.com/library/ios/documentation/userexperience/conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html

答案 3 :(得分:0)

我相信你可以使用静音推送通知唤醒应用程序,而后者又可以进行后台上传。