该应用程序需要能够离线工作,以便以后通过 WiFi 或蜂窝连接上传

Posted

技术标签:

【中文标题】该应用程序需要能够离线工作,以便以后通过 WiFi 或蜂窝连接上传【英文标题】:The application will need to have the ability to work off line for later upload via WiFi or cellular connection 【发布时间】:2012-10-31 23:02:56 【问题描述】:

我正在开发一个应用程序,我需要将数据上传到服务器,因为如果网络不存在,我需要检查网络连接(wifi/3G),它将存储在某个地方,直到网络可用,一个网络找到它自动上传到服务器。我没有任何概念来处理这种情况..谁能告诉我如何工作......

【问题讨论】:

你要上传什么样的数据? 我需要上传图片和文本数据才能上传到网站 好吧,你应该检查@whiteagle提到的可达性。将数据复制到 Documents 文件夹并在网络启动时尝试上传。我会使用 AFNetworking 上传文件。 我也有一个疑问,假设我已经保存在某个地方并设置计时器以在一段时间后检查网络连接,一旦找到网络连接就会上传,但假设在此期间用户重新启动手机现在如何将上传... Reachability 有回调,如果出现网络 【参考方案1】:

使用Reachability 框架来检测连接类型。将其包装到某个后台循环中进行检查,然后就完成了。

【讨论】:

我知道我们用来检查网络连接的可达性假设上传时我没有网络连接,那么它应该自动将它存储到缓存中,并且一旦它可用就需要不断检查连接它应该自动上传.... 如果你有小数据,你可以使用 CoreData 作为存储 除非您提供有关您要上传的具体内容以及上传方式的更多详细信息,否则我怀疑有人可以回答这个问题。一种方法是将数据存储在某处,然后使用 NSUrlConnection 将其发布到服务器,但这取决于您要发布的内容。这里的关键是要有一些后台线程,它会不断检查连接可用性并在继续时完成这项工作。 @whiteagle 请你帮忙看看如果用户在检查连接可用性的同时重启手机会发生什么以及在这种情况下如何上传数据...... 在 NSUserDefaults 中使用一些标志,只有在数据上传成功时才可以。在此处放置一些时间戳或其他内容以区分最新上传的版本。当然,您可能会为此使用本地数据库,但在这种情况下这将是一个矫枉过正。

以上是关于该应用程序需要能够离线工作,以便以后通过 WiFi 或蜂窝连接上传的主要内容,如果未能解决你的问题,请参考以下文章

强制 Android 应用连接到某个 WiFi 网络

Windows Phone 8.1 上的 WiFi 直连

iOS 中的离线通知

iPhone 室内定位应用

.NET Web应用配置本地IIS(实现Visual Studio离线运行与调试)

Win10中修改wifi和局域网访问优先级