我正在为iPhone开发一个应用程序,它从车辆中收集大量数据,然后将其上传到远程服务器。该应用程序本身将坐在车辆中,连接到电池供电,并在其大部分时间内收集数据而无需太多用户交互。鉴于此,重要的是这些上传在后台发生,应用程序被“唤醒”是进行上传的系统。此外,这是一个企业应用程序,因此该应用程序不需要通过Apple的批准。
鉴于这些要求,我认为Apple的新iOS 7后台获取API对我的问题来说是一个很好的解决方案。当然,由于我没有完全按照预期使用它,有些事情可能会给我带来一些问题,我想要澄清一下。
在新API上观看WWDC视频后,我了解到iOS会尝试识别该应用的使用模式,并在使用之前将其唤醒。如果该应用程序很少打开,是否会导致它最终停止进行这些后台更新?
当我使用此API时,我给出的完成处理程序块将UIBackgroundFetchResult作为参数。如果我每次传入UIBackgroundFetchResultFailed,是否会导致iOS认为我仍然需要这些新数据并继续唤醒应用程序?
最后,由于我明显以不同于预期的方式使用此API,有人可以推荐一种更符合我要求的更好方法吗?
答案 0 :(得分:3)
有了这样的说法:“应用程序本身将坐在车内,连接到电池供电,并且在其大部分时间内没有太多用户交互的情况下收集数据”和“此外,这是一个企业应用程序,所以应用程序不需要通过Apple的批准。“,为什么还要使用后台获取API呢?
选择背景模式(如VOIP),然后在后台模式下运行任务。即使屏幕被锁定,您的网络连接也会保持活跃并执行任何发送/接收。
答案 1 :(得分:2)
我知道它已经有一段时间了,但只是为了记录。
我建议您使用AFNetworking,它有后台支持。 您需要知道的几乎所有内容都在github页面中。
要在后台运行,请检查以下问题: afnetworking-background-file-upload。 不知道问题中的代码是否有效,但答案可能有所帮助。
答案 2 :(得分:0)
IMO,新的ios 7 api功能不足以满足您的应用需求。
也就是说,位置服务可能非常适合这里。任何时候你的车辆移动到不同的牢房塔,你的应用程序可以运行大约3分钟。
答案 3 :(得分:0)
我相信你可以使用静音推送通知唤醒应用程序,而后者又可以进行后台上传。