2013-08-09 16 views
8

Niedawno uruchomiona usługa powiadomień push jest bardzo fajna i wygląda na to, że była to znacząca poprawa w stosunku do sondowania, które było wcześniej konieczne.Google Drive SDK Push Powiadomienia - oglądać zmiany we wszystkich plikach?

Zastanawiam się jednak, jak włączyć oglądanie wszystkich plików w udostępnionym folderze na Dysku. Pracujemy nad narzędziem do monitorowania Dysku, które przechowuje listę wszystkich zmian i umożliwia raportowanie całych folderów Dysku korporacyjnego.

Mam świadomość, że mogę używać powiadomień o nowych obiektach w pliku danych zmian. Niestety, nie jesteś w stanie wykryć , co zmieniło się z Zmiany zasobów.

Podczas oglądania zasobów plików można otrzymywać powiadomienia informujące, co zostało zmienione w pliku (rodzice, uprawnienia, metadane itp.). To świetnie, ale wydaje się, że nie można zarejestrować programu obsługi powiadomień Push dla wszystkich plików na Dysku. Dokumenty mówią, że zawsze musisz podać fileId. Oznaczałoby to, że w naszym scenariuszu wysyłane będą żądania monitorowania milionów plików (nie wspominając o odnawianiu kanałów Push API od czasu do czasu).

Czy znasz jakiś inny sposób niż niż wykryć zmiany i wykryć, co zostało zmienione ręcznie (co jest dość dużo wywołań API i raczej powolne).

Odpowiedz

8

Krótka historia, nie.

Powiadomienie push teraz obsługuje tylko oglądanie plików i zmian. Jak być może wiesz, foldery na Dysku Google to Plik ze specjalnym mimeType. Oznacza to, że można oglądać w określonym folderze, wysyłając żądanie Files.Watch() do folderu. Jednak powie ci tylko zmiany w jego bezpośrednich elementach potomnych, a nie rekursywnie, co prawdopodobnie nie jest tym, czego potrzebujesz.

Najlepszym rozwiązaniem, które można wykonać, jest skopiowanie wszystkich metadanych pliku do aplikacji i porównanie go po każdej zmianie. Wiem, że nie jest to zbyt efektywne, ale na razie to jedyny sposób na osiągnięcie tego celu.

Jeśli zapytasz mnie, czy funkcja, którą chcesz utworzyć, nie zostanie utworzona. Powiadomienia push są dostępne nie tylko dla interfejsu Drive API. Został zaprojektowany dla wszystkich interfejsów Google API do oglądania dowolnych zasobów interfejsu API i wykrywania ich zmian. Zasadniczo, gdy tworzysz żądanie Files.Watch(), zachowuje kopię wyniku Files.get() i informuje, kiedy coś się zmieniło. To jest powód, dla którego Files.watch ma dużo więcej przydatnych szczegółów. W przypadku zmian informuje o każdej zmianie w Changes.list(). W związku z tym nie może powiedzieć nic lepszego niż to, co obecnie może zrobić zasób Zmiany. Po jego zaprojektowaniu nie sądzę, że pożądana funkcja zostanie dodana do interfejsu Drive API.

+0

Dziękuję bardzo za opinie. Tego się jednak obawiałem. Nieważne, sami będziemy trzymać się zmian. – xaralis

Powiązane problemy