9

最近推出的推送通知服务非常酷,看起来比以前需要的轮询有了很大的改进。

我想知道如何启用查看云端硬盘共享文件夹中的所有文件。我们正在开发 Drive 监控工具,该工具会保留所有更改的列表并启用整个企业 Drive 文件夹的报告。

我知道我可以在更改提要中使用有关新对象的通知。不幸的是,您无法从 Changes 资源中检测到发生了什么变化。

观看文件资源时,您可以收到通知,说明文件发生了哪些变化(父级、权限、元数据等)。这很棒,但是似乎无法为 Drive 中的所有文件注册推送通知处理程序。文档说你总是需要提供fileId. 这意味着在我们的场景中对数百万个文件进行监视请求(更不用说不时更新 Push API 通道)。

您是否知道比使用更改通知更合适的方法并手动检测已更改的内容(这是相当多的 API 调用,而且执行起来相当慢)。

4

1 回答 1

10

长话短说,没有。

推送通知目前仅支持观看文件和更改。您可能知道,Google Drive 中的文件夹是具有特殊 mimeType 的文件。也就是说,您可以通过向文件夹发出 Files.Watch() 请求来监视特定文件夹。但是,它只会告诉您其直接子代的变化,而不是递归地告诉您,这可能不是您想要的。

您可以采取的最佳方法是将所有文件的元数据复制到您的应用程序中,并在发生任何更改时进行比较。我知道这不是很有效,但就目前而言,这是实现这一目标的唯一方法。

如果你问我是否会创建你想要的功能,不太可能。推送通知不仅适用于 Drive API。它专为所有 Google API 设计,以监视任何 API 资源并检测它们的更改。基本上,当您发出 Files.Watch() 请求时,它会保留 Files.get() 结果的副本,并在发生任何更改时通知您。这就是为什么 Files.watch 有更多有用的细节的原因。对于 Changes,它会在 Changes.list() 中有更改时告诉您。因此,它不能告诉您比 Changes 资源当前可以做的更好的事情。从它的设计来看,我认为您想要的功能不会被添加到 Drive API 中。

于 2013-08-09T16:13:30.897 回答