8
votes

Synchronisation des données avec API Dropbox et iOS

J'ai une application iOS qui stocke des données dans le répertoire local. J'aimerais pouvoir synchroniser ces données entre plusieurs périphériques exécutant mon application. Actuellement, il utilise des données de base, mais je m'attendrais à devoir passer à un système de stockage de fichiers à base de texte pour faciliter la synchronisation.

J'attendais que l'API Dropbox rendrait cela gentil et facile, et que je pouvais dire à l'API de simplement synchroniser le contenu de mon dossier de données au démarrage / sauvegarde. Cependant, il semble que l'API Dropbox n'est rien de plus qu'une façon glorifiée de télécharger et de télécharger des fichiers.

je me trompe sur cette hypothèse? L'API Dropbox peut-elle effectivement de conserver un dossier rempli de fichiers texte en synchronisation? Sinon, existe-t-il un autre service ou même des conseils que vous pouvez donner? La synchronisation est difficile - j'espérais que Dropbox faciliterait la tâche.


2 commentaires

Salut. Je me demandais si vous avez réussi à obtenir une simple synchronisation de Dropbox pour travailler. Je suis confronté au même problème frustrant pour le moment et j'ai commencé une nouvelle question ici dans l'espoir d'obtenir un exemple de code pour illustrer tout le processus de synchronisation.


J'en ai assez vite, car il était évident que cela ne pouvait pas faire ce que j'étais après. L'API est plus utile que vous puissiez accéder au compte DB d'utilisateurs, et non pour fournir des services de synchronisation.


5 Réponses :


7
votes

en utilisant / Metadata , obtenir des informations sur le contenu d'un dossier ne pouvait pas être plus facile. Tout ce que vous avez à faire est de vérifier la date modifiée , et s'il est différent du vôtre localement, effectuez l'action appropriée. Il vous donnera également des métadonnées pour tout contenu de fichier. Vous pouvez donc choisir les fichiers téléchargés / téléchargés / ajoutés / supprimés si nécessaire.

Plus de fonctionnalités que celles-ci serait très dépendante de l'application; Vous pouvez décider de vous-même quand et comment vous voulez faire face à différents fichiers.

Dropbox API Documentation


9 commentaires

Merci Andy, je suppose que j'ai brillé sur l'appel des métadonnées, où il est en fait assez important! Comment cette approche sonne-t-il - appellez-vous à MetaData, à mettre à jour les fichiers qui ont une date modifiée différente, téléchargez tous les fichiers qui sont nouveaux, téléchargez tous les fichiers mis à jour, puis téléchargez tous les fichiers qui sont nouveaux.


HMM, mais comment gérer les fichiers supprimés du répertoire? Comment savoir si un fichier est nouveau et doit être téléchargé ou a été supprimé sur un autre appareil et doit être supprimé?


On dirait que la façon de me rendre à moi - c'est à vous de voir la fréquence à laquelle vous voulez frapper cette API. Il existe des limites (5000 demandes par jour par jeton d'accès et 300 Mo / fichier) qui ne seront probablement pas en jeu pour un appareil mobile, de sorte que vous devriez être bien sur ce front.


Dans le cas des fichiers supprimés, je pense que la seule façon d'y aller serait d'avoir un fichier texte avec une liste de changements ou de quelque chose le long de ces lignes ... "-Filename NameOfservice" ou "+ nom de nom de nom de nom de service de fichier" pour indiquer si ou Le service actuel ne devrait pas être ajouté au magasin distant ou de supprimer de son magasin local.


Merci - ressemble toujours à beaucoup de travail manuel. J'aurais pensé que le point principal de l'API est de fournir un service de synchronisation simple, par exemple. "Synchroniser ce dossier maintenant".


Même dans ce cas, que voudriez-vous arriver lorsque vous supprimez quelque chose d'un côté, puis mettez-vous à jour et essayez de synchroniser avec un autre système? Il y a des gotchas avec le service que vous devez être au courant de ... Bien que je pense que vous devriez pouvoir utiliser la taille aussi pour le faire fonctionner. Bonne chance!


Merci Andy - Je pense que c'est juste une de ces choses que je ne veux pas penser :) Je laisserai la question ouverte un peu plus longtemps pour voir si quelqu'un d'autre carne puis accepte votre réponse. Merci pour l'aide.


Bonjour, c'est à voir avec les métadonnées. J'obtiens l'erreur suivante lorsque je construis le code dans le blog Nanaimo, Nanaimostudio.com/blog/2011/1/20/... . Ces erreurs se produisent dans la fonction LoadedMetaData: Demande de «contenu des membres» dans quelque chose qui n'est pas une structure ou un syndicat et une demande de «chemin» de membre dans quelque chose qui n'est pas une structure ou une union et également un problème avec la déclaration AddObject (expression n'a pas de problème. Type d'objet valide). S'il vous plaît aider.


Si vous utilisez / métadonnées pour le faire, je vous recommande d'utiliser le champ "Rev" plutôt que le champ "modifié", en raison des aléas du moment où les horodatés peuvent ou peuvent changer sur plusieurs périphériques. Vous devriez stocker les valeurs "REV" pour vous-même quelque part, mais c'est un moyen fiable de détecter si le fichier sur le serveur est exactement identique à celui que vous avez téléchargé plus tôt. Mais vraiment, l'API de synchronisation a été conçue pour cela, utilisez-le si vous le pouvez.



0
votes

Il existe un flux RSS qui peut être limité à l'un des dossiers partagés, mais il s'agit d'un type d'événements de filtres de maintenir les volumes bas.


0 commentaires

3
votes

Ne répétera pas depuis que Andy a répondu à votre question, pensait que vous pouvez également trouver ce tutoriel utile:

http://www.nanaimostudio.com/blog/2011/1/20/how-to-synchroniser-Your-app-Data-utilisant-dropbox-api.html


2 commentaires

Je reçois l'erreur suivante lorsque je construis le code dans le blog Nanaimo. Ces erreurs se produisent dans la fonction LoadedMetaData: Demande de «contenu des membres» dans quelque chose qui n'est pas une structure ou un syndicat et une demande de «chemin» de membre dans quelque chose qui n'est pas une structure ou une union et également un problème avec la déclaration AddObject (expression n'a pas de problème. Type d'objet valide). S'il vous plaît aider


Pouvez-vous voir des images dans ce didacticiel?



3
votes

Consultez le nouveau API de synchronisation Dropbox .


1 commentaires

Futures Readers: Dropbox a déprécié l'API plusieurs années plus tard.



2
votes

Comme l'a mentionné Ohho, il y a l'API de synchronisation Dropbox disponible maintenant, que je pense faire ce que vous avez mentionné (je ne l'ai pas essayé personnellement, car j'ai intégré Soutien à Dropbox dans mon application à l'aide de la SDK antérieure, avant que cela ne soit arrivé) . Cela suffira probablement si vous travaillez avec Dropbox.

Dans mon cas, j'ai commencé à ajouter de la prise en charge des services supplémentaires de stockage en ligne ("Cloud") à mon application et je constate que c'est quelque peu difficile de traiter les différences entre eux dans la façon dont ils gèrent divers concepts comme l'authentification , Version, Nommage, etc. Par exemple, les fichiers API de API de Dropbox en fonction de leur chemin, tandis que les fichiers API de l'API de la boîte en fonction de leur ID de fichier (qui a un chemin associé, mais je pense reste le même si le fichier est déplacé). Ensuite, il existe également toutes les questions de résolution des conflits (aka la fusion) qui se présentent lorsque plusieurs clients essaient de synchroniser des modifications contradictoires sur le serveur.

J'ai récemment envisagé de commencer un projet open source pour développer une bibliothèque pouvant se connecter à tous les principaux services, et fournir une couche d'abstraction qui compte sur leurs différences et gère également le processus de synchronisation pour vous. J'ai déjà reçu du code (que je n'ai pas publiquement libéré à la date), mais pourriez utiliser cela pour que le projet ait commencé.

Cela vous sera utile? Seriez-vous (ou d'autres personnes) être disposés à participer à un tel effort?

(Note aux mods: je me rends compte que cela peut s'écarter quelque peu de sujet - désolé à ce sujet. Si vous pouvez recommander un forum plus approprié pour discuter de cela, je serais heureux de prendre la conversation).


0 commentaires