与 Dropbox Core 同步 API

Sync with Dropbox Core API

我正在尝试通过核心 API 将我的 iOS 应用程序的文档目录与 Dropbox 同步。我只需要非常基本的同步功能,让 Documents 目录与 App 的 Dropbox 目录保持一致。

然而,我发现自己不得不马上考虑硬同步问题,比如检查文件中的差异,弄清楚如何确定是否需要更新本地目录,允许外部更改,等等 -- 非常高级的东西以及我认为 Dropbox SDK 会抽象掉的东西。

感觉我正在解决同步问题并重新发明轮子,而不是专注于我的应用程序。

听起来我真正需要的是 Sync API,但它已被弃用。

是否有通过核心实现同步行为的指南API,或者如果没有,是否有通过云服务实现同步的通用指南?

这是一个比较宽泛的问题,具体情况在很大程度上取决于每个应用程序。 Dropbox 不提供像这样实现同步的一般指南,但我会尝试指出一些有用的资源。

首先,您可能需要使用 iOS Core SDK (download, tutorial). Alternatively, you can develop directly against the Core API HTTP endpoints.

当您的应用在本地发生变化时,您需要上传相关文件的新版本。用于上传的 Dropbox API 端点提供了一些参数,可让您控制 overwrite/conflict 行为:

https://www.dropbox.com/developers/core/docs#files_put

我们建议使用 parent_rev,以避免意外覆盖并最终丢失数据。

要了解远程发生了什么变化,您可以使用 /delta(iOS Core SDK 中的loadDelta):

https://blogs.dropbox.com/developers/2013/12/efficiently-enumerating-dropbox-with-delta/

对于客户端应用程序,使用 /longpoll_delta 是了解事情何时发生变化的好方法(即知道何时调用 /delta):

https://blogs.dropbox.com/developers/2013/11/low-latency-notification-of-dropbox-file-changes/

该端点目前尚未在 iOS 核心 SDK 中实现,但该 SDK 是开源的,因此您可以根据需要对其进行修改 if/as。