2011-01-27 15 views
7

Mam aplikację na iOS, która przechowuje dane w katalogu lokalnym. Chciałbym móc synchronizować te dane między wieloma urządzeniami z moją aplikacją. Obecnie używa się danych podstawowych, ale spodziewam się, że będę musiał zmienić system plików na pliki tekstowe, aby ułatwić synchronizację.Synchronizowanie danych za pomocą interfejsu API Dropbox i iOS

Spodziewałem się, że interfejs API DropBox sprawi, że będzie to łatwe i przyjemne, i żebym mógł powiedzieć interfejsowi API, aby po prostu zsynchronizował zawartość mojego folderu z danymi po uruchomieniu/zapisaniu. Wygląda jednak na to, że API DropBox to nic innego jak wspaniały sposób przesyłania i pobierania plików.

Czy myliłem się co do tego założenia? Czy interfejs API DropBox może rzeczywiście zsynchronizować folder pełen plików tekstowych? Jeśli nie, czy możesz udzielić innej usługi lub nawet porady? Synchronizacja jest trudna - miałem nadzieję, że Dropbox będzie łatwiejszy.

+0

Cześć. Zastanawiam się, czy udało Ci się uzyskać prostą synchronizację DropBox do działania. W tej chwili mam do czynienia z tym samym frustrującym problemem i zacząłem tu nowe pytanie w nadziei, że otrzymam przykładowy kod ilustrujący cały proces synchronizacji. http://stackoverflow.com/questions/5950168/a-simple-sync-with-the-iphone-dropbox-api –

+0

Mam dość szybko, ponieważ było oczywiste, że nie może zrobić to, co było po. Interfejs API pozwala uzyskać dostęp do konta DB użytkowników, a nie do usług synchronizacji. –

Odpowiedz

7

Korzystanie z /metadata, uzyskanie informacji o zawartości folderu nie może być łatwiejsze. Wszystko, co musisz zrobić, to sprawdzić datę modified, a jeśli jest inna niż Twoja lokalnie, wykonaj odpowiednią akcję. Zapewni także metadane dla dowolnej zawartości pliku, dzięki czemu można wybrać pliki, które należy przesłać/pobrać/dodać/usunąć w razie potrzeby.

Każda dodatkowa funkcjonalność będzie bardzo zależna od aplikacji; możesz zdecydować, kiedy i jak chcesz radzić sobie z różnymi plikami.

Dropbox API Documentation

+0

Dzięki Andy, domyślam się, że przewertowałem metadane, bo to naprawdę ważne! Jak brzmi to podejście - wywołaj metadane, aktualizuj pliki o innej zmodyfikowanej dacie, pobieraj nowe pliki, prześlij wszystkie zaktualizowane pliki, a następnie prześlij nowe pliki. –

+0

Hmm, ale jak radzić sobie z plikami, które zostały usunięte z katalogu? Skąd mam wiedzieć, czy plik jest nowy i musi zostać przesłany, czy też usunięty na innym urządzeniu i musi zostać usunięty? –

+0

Wygląda na to, jak do mnie trafić - od Ciebie zależy, jak często chcesz uderzać w to API. Istnieją ograniczenia (5000 żądań dziennie na token dostępu i 300 MB/plik), które prawdopodobnie nie wejdą w grę dla urządzenia mobilnego, więc powinieneś być w porządku na tym froncie. –

0

Jest RSS, które mogą być ograniczone do jednego z folderów współdzielonych ale to niby filtruje zdarzenia zachować tomy niska.

3

nie powtórzy, ponieważ Andy nie odpowiedział na pytanie, pomyślał można również znaleźć ten poradnik pomocny:

http://www.nanaimostudio.com/blog/2011/1/20/how-to-synchronize-your-app-data-using-dropbox-api.html

+0

Otrzymuję następujący błąd podczas budowania kodu na blogu Nanaimo. Błędy te występują w funkcji loadedMetadata: żądanie dla elementu 'content' w czymś, co nie jest strukturą lub związkiem i żądanie dla elementu 'path' w coś nie będącego strukturą lub związkiem, a także występuje problem z instrukcją addObject (Expression nie ma prawidłowy typ obiektu). Proszę pomóc – Namratha

+0

Czy widzisz zdjęcia w tym samouczku? – rjobidon

2

Jak już wspomniano, dostępny jest teraz interfejs API DropBox Sync, który, jak sądzę, zrobi to, o czym wspomniałeś (nie próbowałem go osobiście, ponieważ zintegrowałem obsługę Dropbox w mojej aplikacji przy użyciu wcześniejszego SDK, zanim to nastąpiło). Prawdopodobnie wystarczy, jeśli pracujesz z Dropbox.

W moim przypadku zacząłem dodawać obsługę dodatkowych usług pamięci masowej online ("Chmura") do mojej aplikacji i stwierdzam, że trudno jest poradzić sobie z różnicami między nimi w sposobie obsługi różnych koncepcji, takich jak uwierzytelnianie, wersja, nazewnictwo itp. Na przykład pliki referencyjne interfejsu API Dropbox są zgodne z ich ścieżką, natomiast interfejs API Boxa odwołuje pliki zgodnie z ich identyfikatorem pliku (który ma przypisaną ścieżkę, ale uważam, że pozostaje taki sam, jeśli plik jest przenoszony). Istnieją również wszystkie problemy związane z rozwiązywaniem konfliktów (czyli łączeniem się), które pojawiają się, gdy wielu klientów próbuje i synchronizuje sprzeczne zmiany na serwerze.

Niedawno rozważałem rozpoczęcie projektu open source w celu opracowania biblioteki, która może łączyć się ze wszystkimi głównymi usługami i zapewnia warstwę abstrakcji, która dokumentuje ich różnice, a także obsługuje proces synchronizacji. Mam już trochę kodu (którego nie opublikowałem do tej pory), ale mogę go wykorzystać do rozpoczęcia projektu.

Czy przyda ci się to? Czy (lub jakiekolwiek inne osoby) chciałbyś wziąć udział w takim wysiłku?

(Uwaga dla modów: zdaję sobie sprawę, że może to być nieco sprzeczne z tematem - przepraszam za to.Jeśli możesz polecić bardziej odpowiednie forum w celu omówienia tego, z chęcią zabiorę się do rozmowy).

Powiązane problemy