如何在iPhone和另一台计算机之间同步应用程序数据?

时间:2008-10-09 02:13:08

标签: iphone

我正在开发一个iPhone应用程序,允许查看和编辑我想与桌面应用程序保持同步的数据。我在SDK中没有看到任何直接解决数据同步的问题,也没有找到任何允许我“挂钩”进入iTunes同步过程的内容。

我可以做一些像在照片或地址簿条目中隐藏数据一样的东西,但这似乎是一个坏主意。我可以使用WebDAV或HTTP来获取/放置数据到服务器,但它使应用程序更复杂。

我想我希望这是iPhone应用程序的常见用例(在桌面和iPhone之间同步任意应用程序数据),并且SDK中会有一组API来涵盖这一点。也许有,我找不到它。

7 个答案:

答案 0 :(得分:5)

两种流行的方法是:

通过WiFi直接与桌面应用程序同步(使用Bonjour等发现其他人在此处建议的iPhone /桌面应用程序端点)。

另一个选项是与共享文件位置同步 - FTP,MobileMe,WebDAV,其他服务器上的Web服务等。因此,iPhone和桌面应用程序将读取/写入共享位置,以便另一个可以看到更新。

正如其他人所说,目前还没有Apple提供的方法(使用iTunes或其他方式)并且没有任何迹象表明在不久的将来会发生任何事情,除非它与iPhone未来对第三方的支持捆绑在一起推送更新。 (我真的怀疑情况会如此,但你永远不会知道。)

答案 1 :(得分:5)

答案 2 :(得分:4)

我自己没有试过这个,但我认为Bonjour提供了连接其他机器上的服务的能力,你可能会找到一些答案来研究

答案 3 :(得分:3)

这是一个常见问题,但遗憾的是SDK无法解决。

由于iPhone支持Bonjour服务发布和发现,您可以轻松地在手机上发布服务并在桌面上进行监听,并在他们找到对方时进行连接。 (或者您可以在桌面上发布服务并通过手机连接,无论哪种方式都无关紧要。)所有关于Bonjour for MacO OS X的文档都适用于iPhone OS。

请注意,Bonjour只是宣传一项服务;一旦找到它,您仍然必须使用套接字来连接和传输数据。

基本上,没有简单的方法可以做到这一点,但是有足够的工具可以让用户轻松实现同步体验。

答案 4 :(得分:2)

Bonjour Sync的一个例子: http://cocoa-nut.de/?p=27

答案 5 :(得分:2)

只是为了更新这个答案 - 在提出问题以来的时间里,Apple已经添加了对同步文件到iTunes的支持(并允许用户通过iTunes的“应用”标签访问它们)。

为此,您必须在应用程序的Info.plist文件中将UIFileSharingEnabled键设置为YES。然后,您可以使用标准文件IO API将文件保存到应用程序的Documents目录。

这里有更多信息:http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StandardBehaviors/StandardBehaviors.html#//apple_ref/doc/uid/TP40007072-CH4-SW6

这包括您应该实现的行为(即确保您也支持读取文档中添加的文档 - 尽管我已经看到很多应用程序没有这样做)。

答案 6 :(得分:1)

我还在研究一个需要共享数据的应用程序,我发现从iPhone获取信息的唯一合理/非黑客方式是通过NSURLConnection。

(个人意见)我不认为Apple会为同步过程提供钩子。(/个人意见)