9

最近開始されたプッシュ通知サービスは非常にクールで、以前は必要だったポーリングよりも大幅に改善されているように見えます。

ドライブの共有フォルダ内のすべてのファイルを監視できるようにする方法を知りたいのですが。すべての変更のリストを保持し、エンタープライズ ドライブ フォルダ全体のレポートを有効にするドライブ監視ツールに取り組んでいます。

変更フィードの新しいオブジェクトに関する通知を使用できることを認識しています。残念ながら、 Changes リソースから何が変更されたかを検出することはできません。

ファイル リソースを監視しているときに、ファイルに関する変更内容 (親、権限、メタデータなど) を示す通知を受け取ることができます。これは素晴らしいことですが、ドライブ内のすべてのファイルに対してプッシュ通知ハンドラーを登録することはできないようです。ドキュメントには、常に提供する必要があると書かれていますfileId。これは、私たちのシナリオでは何百万ものファイルに対して監視リクエストを行うことを意味します (プッシュ API チャネルを時々更新することについては言及しません)。

変更通知を使用して手動で何が変更されたかを検出するよりも適切な方法を知っていますか (これはかなり多くの API 呼び出しであり、かなり時間がかかります)。

4

1 に答える 1

10

要するに、いいえ。

現在のところ、プッシュ通知はファイルと変更の監視のみをサポートしています。ご存じかもしれませんが、Google ドライブのフォルダは特別な mimeType を持つファイルです。つまり、フォルダーに対して Files.Watch() リクエストを行うことで、特定のフォルダーを監視できます。ただし、再帰的にではなく、直接の子の変更のみを通知します。これは、おそらくあなたが望んでいたことではありません。

最善のアプローチは、すべてのファイルのメタデータをアプリケーションにコピーし、変更が発生したときにそれを比較することです。これがあまり効率的でないことはわかっていますが、今のところ、これがこの目標を達成できる唯一の方法です。

そして、あなたが望む機能が作成されるかどうか私に尋ねても、そうではありません. プッシュ通知は Drive API だけのものではありません。これは、すべての Google API が任意の API リソースを監視し、その変更を検出できるように設計されています。基本的に、Files.Watch() リクエストを行うと、Files.get() の結果のコピーが保持され、変更があったときに通知されます。これが、Files.watch がより多くの有用な詳細を持っている理由です。変更については、Changes.list() に変更があるたびに通知します。したがって、Changes リソースが現在実行できることよりも優れた情報を提供することはできません。設計上、ご希望の機能が Drive API に追加されるとは思えません。

于 2013-08-09T16:13:30.897 に答える