【问题标题】:Synchronize Directory of Files Between Server and iOS Application在服务器和 iOS 应用程序之间同步文件目录
【发布时间】:2015-02-24 22:23:59
【问题描述】:

我正在构建一个内部 iOS 应用程序(所以 - 它永远不会出现在应用商店中),我需要在服务器和 iOS 应用程序的每个实例之间保持内容目录同步。如果我只是想每次都删除并重新下载此内容,这将很容易,但我宁愿使用类似于 rsync 的东西来仅下载已更改的元素。

我还没有找到任何使用 rsync 的好方法。我曾考虑将 Objective-Git 视为一种可能性,但乍一看,似乎仍然有很多对远程存储库的支持尚不支持。

最后一点,虽然这不会出现在应用商店中,但我不会越狱这些设备,并且我宁愿不依赖任何私有 API(尽管如果有一个使用私有 API 的优雅解决方案,我可以考虑)。

想法?

附加说明:这需要是一个独立的解决方案。我不会依赖外部服务(如 Dropbox、Box.net 等)。这需要仅在设备和服务器(与设备位于本地网络上)之间工作。

【问题讨论】:

  • 感谢您的反馈,但老实说,您的回答在这里并不适用。 HTTP + REST 不是解决方案——它只是一种可以实现解决方案的方式。老实说,如果 rsync 和 Objective-Git 在为 iOS 编译时功能齐全,它们都可以完美地解决问题。目前两者都存在限制,无法实现这一点。有许多可能的解决方案——有些使用 HTTP,有些不使用。最后,我主要关心的是找到有用的东西。
  • 在这种情况下,我使用的是企业分发。你可以在这里了解更多信息:developer.apple.com/programs/ios/enterprise
  • 谢谢你——不过,这只是在 OS X 上通过 Obj-C 运行 rsync。目前没有可在 iOS 上运行的 rsync 编译版本(我已经找到)。跨度>
  • 嗨@dtuckernet。很抱歉没有建设性的评论,但你最终找到了解决方案吗?

标签: iphone objective-c ios


【解决方案1】:

使用 HTTP 列出服务器上每个文件夹的内容。 将每个文件的最后修改时间与设备上的比较,并识别添加/删除的文件。 获取添加和修改的文件,删除已删除的文件。

【讨论】:

  • 我很欣赏有关该方法的建议,但这并不是真正的解决方案(只是一种通用方法)。许多解决方案都在其中一种或另一种中实现了“更改更新”——如果可能的话,利用其中一种而不是从头开始编写它是有意义的。
【解决方案2】:

听起来您可能正在要求一个已经这样做的库,但是如果您没有找到一个库,那么使用服务器上的 stat(2) 从头开始​​编写它显然是相当容易的,并且相同或iOS 设备上的更高级别的等效项。让 iPhone 将带有修改日期的文件树发送到服务器,并返回一个插入/删除/更新操作列表,以处理每个操作的 url(或其他),以便您可以在后台线程上逐步执行它们。让来自服务器的新/更新文件的信息包括服务器具有的 mod 日期,以便您可以在 iOS 设备上将其设置为相同,并在向服务器询问每个文件的状态时发送该日期(使用文件系统来存储它,但它可以工作)。

【讨论】:

  • dtuckernet 明确表示他正在寻找现有的解决方案,但赏金转到了另一种通用方法。
【解决方案3】:

为什么不直接设置一个 RESTful 接口并通过 HTTP 来实现呢?这样您就可以轻松地查询修改时间以确定是否需要更新客户端或服务器文件。您可能还想跟踪客户端上的哪些文件已同步,以便您可以轻松知道要添加或删除哪些文件。这可以通过一个简单的 .sync 文件或使用 plist / sqlite / 等来完成。

【讨论】:

  • HTTP 已经包含了用于同步目录的所有内容,不需要自己的 REST 服务。
【解决方案4】:

如果您考虑使用 FTP,可以使用一些非常高级的客户端库。

例如,iOS Chilkat bundle 包含一个支持双向同步的 FTP 客户端库。它不是免费的,但很便宜——而且你会得到一大堆其他东西,这些东西有一天可能会被证明是有用的。这是一个 iOS 拉下所有添加和更改的示例(模式 2):

http://www.example-code.com/ios/ftp_syncLocalTree.asp

一个警告 - 仅从示例来看,它似乎没有同步删除。如果这是一项要求,您可以在同步后立即自行完成,而无需付出太多努力。

【讨论】:

    【解决方案5】:

    acrosync(请参阅https://acrosync.com/library.html)考虑到最初的问题似乎很合适,但是我自己还没有使用它。

    【讨论】:

    • 有人试过这个吗???它看起来确实很有希望,但我害怕实施和可能的警告......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2011-06-14
    • 2014-05-01
    相关资源
    最近更新 更多