ios – 即使我的应用没有运行,网络重新连接后保证上传的传输

我正在指定一个iOS应用程序(将在我们公司之外构建),它将用户的数据条目上传到服务器.如果设备未连接到Internet,我们希望在设备上保存数据并在重新连接网络时上传数据. (该应用程序将主要在大多数时间将断开连接的iPod Touch设备上运行).

如果用户在重新连接网络后解锁设备并重新打开我们的应用程序,那么上传到服务器应该很容易,因为应用程序正在运行.

但是,如果应用程序没有运行,“不运行”可能意味着以下一个或多个:

>设备重启电源
>用户已锁定设备并将其放在口袋中
> app崩溃了
>用户退出了应用程序
>用户开始使用其他应用程序,因此我们的应用程序不再在前台运行
>还有其他情况吗?

在上述情况下,有没有办法(理想情况下是节省电池的方式)确保在恢复互联网连接后很快上传本地数据?答案是否有所不同,具体取决于上述哪些案例导致应用程序无法运行?

设备是否需要最低iOS版本,以便在应用程序未运行时仍能上传部分(或全部)上述未运行的案例?

如果这些是明显的新手问题我很抱歉 – 我不是iOS专家.

解决方法

有一种有趣的技术可供 InstapaperNews.me(此技术的先驱)使用,您可以使用区域监控来启动后台下载或上传. Marco(Instapaper)在博客上发表了关于他与Apple沟通的博客( episode 80 of the Build and Analyze podcast),因此它应该是App Store中允许的.

简而言之,该技术是您设置某些区域(地理围栏),如“home”或“work”,并响应locationManager:didEnterRegion :(和类似的)回调.进入预先指定的区域后,您的应用程序将从后台唤醒,您可以查看是否有任何数据要上传.

此技术无法保证在网络重新连接时上传数据,但是当iPod Touch用户回到WiFi网络时,它将允许您的应用自动上传信息.

这应该最有可能是每天至少一次,可能会或可能不会经常发生.您可以在尝试初始上载时添加时间戳,并在成功获取服务器上正确的事件顺序(数据条目)后沿上载发送该时间戳.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...