如何在iPhone和另一台电脑之间同步应用程序数据?

13

我正在开发一款iPhone应用程序,它可以查看和编辑我想要与桌面应用程序同步的数据。我没有在SDK中找到任何直接解决数据同步的内容,也找不到任何允许我“连接”到iTunes同步过程的东西。

我可以做一些笨拙的事情,比如将数据隐藏在照片或通讯录条目中,但这似乎是个坏主意。我可以使用WebDAV或HTTP将数据获取/放置到服务器上,但这会使应用程序变得更加复杂。

我想这可能是iPhone应用程序的常见用例之一(在桌面和iPhone之间同步任意应用程序数据),并且有一组API在SDK中涵盖了此功能。也许有,但我找不到。

7个回答

5
两种常用的方法如下:
1. 通过WiFi直接与桌面应用程序同步(使用Bonjour等工具发现iPhone/桌面应用程序的端点,正如其他人在这里建议的那样)。
2. 另一种选择是与共享文件位置同步 - 可以是FTP、MobileMe、WebDAV、另一台服务器上的Web服务等。因此,iPhone和桌面应用程序将读写到共享位置,以便另一个应用程序可以看到更新内容。
正如其他人所说,在目前没有任何苹果提供的方法(使用iTunes或其他方式)的情况下,并且没有任何迹象表明除非它与iPhone未来支持第三方推送更新捆绑在一起,否则在不久的将来将会发生任何类似的事情。(我真的很怀疑这会是这种情况,但你永远不知道。)

5

看起来不错。我希望有人能推出这样的东西,而不是为每个应用重新发明轮子。 - neonski

4

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


3

这是一个常见的问题,但不幸的是SDK没有涉及到它。

由于iPhone支持Bonjour服务发布和发现,您可以轻松地在手机上发布一个服务,并在桌面上侦听它,在它们找到彼此时连接。(或者您可以在桌面上发布服务并从手机连接,两种方式都可以。)所有关于MacOS X上Bonjour的文档都适用于iPhone OS。

请注意,Bonjour只是广告服务;一旦您找到它,仍然需要使用套接字来连接和传输数据。

基本上,没有简单的方法来做到这一点,但有足够的工具可供使用,以使同步体验对用户无痛苦。


2

仅作为更新此答案 - 自问题提出以来,苹果已经添加了支持将文件同步到iTunes(并允许用户通过iTunes的应用程序选项卡访问它们)的功能。

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

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

这包括您应该实现的行为(即确保您还支持读取添加到您的文档目录中的文档 - 尽管我看到了很多不这样做的应用程序)。


是的,在iOS 5中还有iCloud支持。如果你的应用程序使用核心数据,那么实现可以由iPhone应用程序、桌面应用程序或Web应用程序访问的云存储将相对简单。 - Mac

2

1

我也在开发一个需要共享数据的应用程序,我找到的唯一合理/非黑客方式将信息输入和输出 iPhone 的方法是通过 NSURLConnection。

(个人观点) 我不预见 Apple 会提供与同步过程相关的钩子。(/个人观点)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接