我正在考虑构建一款离线和在线都同样有效的应用程序。由于在离线状态下应用无法与服务器进行通信,因此需要进行某种程度的同步。
在规划iPhone的离线操作和同步时,有哪些好的工具可供参考和思考?
创建自己的工具和使用苹果已经提供的工具来帮助解决这个问题,各需哪些工具?
我正在考虑构建一款离线和在线都同样有效的应用程序。由于在离线状态下应用无法与服务器进行通信,因此需要进行某种程度的同步。
在规划iPhone的离线操作和同步时,有哪些好的工具可供参考和思考?
创建自己的工具和使用苹果已经提供的工具来帮助解决这个问题,各需哪些工具?
这是我目前需要处理的问题的简要概述... 希望能对您有所帮助。
App store上有许多应用程序同时依赖于在线和离线数据
在您的应用程序启动时,您应该运行一个后台线程(静默运行,使用户永远看不到任何延迟)。此线程从服务器下载最新数据并将其推入本地数据库(SQLite是最佳选择)
确保实现某种数据版本控制,以便您的应用程序仅下载自上次下载以来实际发生更改的数据-否则,您将不必要地下载整个数据集,数据集可能相当巨大(取决于您的应用程序要求)
在执行此操作时还要确保测试网络连接性。如果没有网络连接,请务必通知用户
这样您可以同时获得最佳效果。当用户离开互联网时,他们仍然可以使用带有本地sqlite数据的应用程序
在iPhone os 3.0中,苹果引入了推送服务-您可以简单地“PUSH”您的数据而不是进行“PULL”,但这在当前的iPhone OS(2.x.x)中不可用
我会将离线收集的所有信息存储在SQLite数据库中。然后,在用户请求时,您可以使用HTTP或自定义TCP/IP协议将所有存储的信息与服务器同步。
我已经在Palm OS应用程序中使用这种方法将近10年了,并且它们非常有效。
据我所知,实现此目的唯一的工具就是使用Cocoa Touch的纯粹的OBJECTIVE-C。虽然如果您决定实现自己的协议,可以使用一些TCP/IP C++库来使生活更加轻松。
不知道您是否考虑使用同步框架来管理同步。如果您感兴趣,可以看看开源项目OpenMobster的同步服务。您可以执行以下同步操作:
此外,所有修改都会自动跟踪并与云同步。当网络连接断开时,您可以将应用程序离线。它会跟踪任何更改,并在连接恢复时自动在后台将其与云同步。它还提供了像iCloud一样跨多个设备的同步。
此外,云中的修改使用推送通知进行同步,因此即使数据存储在本地,数据始终是最新的。
这是开源项目的链接:http://openmobster.googlecode.com
这是iPhone应用程序同步的链接:http://code.google.com/p/openmobster/wiki/iPhoneSyncApp