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

Posted

技术标签:

【中文标题】如何在 iPhone 和另一台计算机之间同步应用程序数据?【英文标题】:How do I sync application data between an iPhone and another computer? 【发布时间】:2008-10-09 02:13:07 【问题描述】:

我正在开发一个 iPhone 应用程序,该应用程序允许查看和编辑我希望与桌面应用程序保持同步的数据。我在 SDK 中看不到任何直接处理数据同步的内容,也找不到任何可以让我“挂钩”到 iTunes 同步过程的内容。

我可以做一些笨拙的事情,比如将数据隐藏在照片或地址簿条目中,但这似乎是个坏主意。我可以使用 WebDAV 或 HTTP 来获取/发送数据到服务器,但这会使应用程序更加复杂。

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

【问题讨论】:

【参考方案1】:

两种流行的方法是:

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

另一种选择是与共享文件位置同步 - FTP、MobileMe、WebDAV、另一台服务器上的网络服务等。因此 iPhone 和桌面应用程序将读取/写入共享位置,以便对方可以看到更新。

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

【讨论】:

【参考方案2】:

看看:

http://sourceforge.net/projects/syncdocs/

【讨论】:

看起来不错。我希望有人会推出类似的东西,而不是为每个推出的应用重新发明***。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

由于 iPhone 支持 Bonjour 服务发布和发现,您可以轻松地在手机上发布服务并在桌面上监听,找到时连接。 (或者您可以在桌面上发布服务并从手机连接,无论哪种方式都没有关系。)Bonjour for MacO OS X 上的所有文档都适用于 iPhone 操作系统。

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

只是为了更新这个答案 - 自提出问题以来,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

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

【讨论】:

是的,iOS 5 还支持 iCloud。如果您的应用程序使用核心数据,那么实现可以通过 iPhone 应用程序、桌面应用程序访问的云存储将相对简单或网络应用程序。【参考方案7】:

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

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

【讨论】:

以上是关于如何在 iPhone 和另一台计算机之间同步应用程序数据?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 RFCOMM 蓝牙协议在 iOS 设备和另一台设备之间共享数据吗?

如何在一台机器上使用资源(.txt 文件)和另一台机器上的脚本在 ssh 上运行 shell 脚本?

两台电脑如何同步文件?

如何在 Ruby 和另一种语言之间共享文本文件(或互斥体/信号量)?

如何使用 node.js 和 socket.io 将文件从 iPhone 发送到另一台 iPhone?

AVAudioPlayer 无法在某些设备上播放