Jus*_*ant 8 multitasking reachability ios
我正在指定一个iOS应用程序(将在我们公司之外构建),它将用户的数据条目上传到服务器.如果设备未连接到Internet,我们希望在设备上保存数据并在重新连接网络时上传数据.(该应用程序将主要在大多数时间将断开连接的iPod Touch设备上运行).
如果用户在重新连接网络后解锁设备并重新打开我们的应用程序,那么上传到服务器应该很容易,因为应用程序正在运行.
但是,如果应用程序没有运行,"未运行"可能意味着以下一个或多个:
在上述情况下,有没有办法(理想情况下是节省电池的方式)确保在恢复互联网连接后很快上传本地数据?答案是否有所不同取决于上述哪些案例导致应用程序无法运行?
是否有设备所需的最低iOS版本,以便在应用程序未运行时仍能上传部分(或全部)上述未运行的案例?
如果这些是明显的新手问题我很抱歉 - 我不是iOS专家.
Instapaper和News.me(这项技术的先驱)使用了一种有趣的技术,您可以使用区域监控来启动后台下载或上传.Marco(Instapaper)在博客和谈话中(在Build and Analyze播客的第80集中)讲述了他与Apple的沟通,因此它应该是App Store中允许的.
简而言之,该技术是您设置某些区域(地理围栏),如"home"或"work",并响应locationManager:didEnterRegion:(和类似的)回调.进入预先指定的区域后,您的应用程序将从后台唤醒,您可以检查是否有任何数据要上传.
此技术无法保证在网络重新连接时上传数据,但是当iPod Touch用户回到其WiFi网络时,它将允许您的应用自动上传信息.
这应该最有可能是每天至少一次,可能会或可能不会经常发生.您可以在尝试初始上载时添加时间戳,并在成功获取服务器上正确的事件顺序(数据条目)后沿上载发送该时间戳.
没有办法保证这一点。如果您的应用程序“未运行”(根据问题中描述的定义),它将无法响应设备网络状态的更改。应将其设置为在应用程序下次再次运行时恢复上传操作。
编辑:您描述的某些案例确实可能为您的应用程序提供不同的机会。具体来说,如果用户通过按主页按钮“退出”应用程序或在前台启动另一个应用程序,您的应用程序可能会继续在后台运行,并可能响应网络可达性的变化。
后台可能执行的操作以及持续时间的性质都有详细记录,并且任何支持多任务处理的 iOS 版本都支持。我建议您查看有关应用程序状态和后台服务的文档。