代码之家  ›  专栏  ›  技术社区  ›  davidavr

如何在iPhone和其他计算机之间同步应用程序数据?

  •  13
  • davidavr  · 技术社区  · 16 年前

    我正在开发一款iPhone应用程序,它允许查看和编辑我想与桌面应用程序保持同步的数据。我在SDK中看不到任何直接处理数据同步的内容,也找不到任何允许我“钩住”到iTunes同步进程的内容。

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

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

    7 回复  |  直到 10 年前
        1
  •  5
  •   Adam Byram    16 年前

    两种常用的方法是:

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

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

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

        2
  •  5
  •   oldbeamer    16 年前
        3
  •  4
  •   Robert Gould    16 年前

    我自己也没试过,但我想 Bonjour 提供了与其他计算机上的服务连接的能力,您可能会找到一些有关此问题的答案

        4
  •  3
  •   benzado    16 年前

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

    由于iPhone支持Bonjour服务发布和发现,因此您可以轻松地在手机上发布服务,并在桌面上收听,在发现彼此时进行连接。(或者你可以在桌面上发布该服务并通过手机进行连接,无论哪种方式都不重要。)Bonjour for Maco OS X的所有文档都适用于iPhone OS。

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

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

        5
  •  2
  •   sara    15 年前

    Bonjour同步示例: http://cocoa-nut.de/?p=27

        6
  •  2
  •   John    13 年前

    只是为了更新这个答案——在被问到这个问题之后,苹果已经增加了对将文件同步到iTunes的支持(并允许用户通过iTunes的“应用程序”选项卡访问这些文件)。

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

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

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

        7
  •  1
  •   lajos    16 年前

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

    (个人意见)我没有预见到苹果会为同步进程提供钩子。(/个人意见)