Ce qui est une bonne solution pour synchroniser les données entre les applications iOS?
Je développe une application, dont la gestion des données est réalisé grâce à la Base de Données, et je suis en train d'étudier comment implémenter une fonctionnalité de synchronisation des données entre deux périphériques différents (même entre les iDevices et Mac éventuellement).
Jusqu'à maintenant, je n'ai pas rien trouvé d'intéressant ou d'utile, donc je vous demande un bon point de départ, un guide, ou un modèle à suivre. Avez-vous jamais réaliser quelque chose de ce genre?
Mise à jour
J'ai commencé un bounty sur cette question. La synchronisation peut être une tâche difficile sur iOS, mais il y a plein d'applications qui offrent de périphérique à périphérique sync fonctionnalités. Ma question est: comment ils le font? Quelle est la meilleure approche? Quelles sont les différentes solutions?
Mise à jour 2
Cette question est certainement obsolète, maintenant, depuis iCloud a été libéré près d'un an. Je tiens à le garder en vie, car il peut donner des indications intéressantes sur mobile synchronisation des données entre les périphériques.
- voulez-vous un over-the-air, solution, ou est en cours de synchronisation, tandis que l'iDevice est synchronisés ce que vous recherchez?
- Un over-the-air, solution, si possible!
- est-il une hypothèse de seulement deux appareils, ou peut-il y avoir trois ou plusieurs utilisateurs/appareils? pouvez de données arbitraires être modifiés par n'importe quel appareil? lorsque des conflits de fusion arriver, comment allez-vous résoudre?
- Je sais que la fusion est un problème commun lors de la collecte de données entre les distribue des bases de données. Ce que j'aimerais savoir, c'est comment les autres à résoudre ce problème. Si c'est juste une question de force brute fusion, ce n'est pas ce que je qualifierais de "synchronisation".
- la fusion problème n'est pas une solution générale, mais doit être fait avec votre nom de domaine en considération. Dans les Données de Base, ils gèrent disjoints de modifications et de résolution des conflits tels que définis ici Base de Données-Guide de Programmation: Gestion du Changement - une solution commune est "échoue", ce qui est souhaitable et acceptable, parce qu'il signifie qu'il y a simultanée double modifications de cours "hors ligne"/synchronisation des modifications ultérieures des échelles de temps = échec fréquent
- Qu'est devenu ce? Avez-vous trouvé une solution, ou avez-vous mettre en place votre propre? À la recherche de faire de même, et en essayant d'anticiper workfload et de faisabilité.
- Probablement la meilleure façon est maintenant à l'aide d'iCloud. Je n'ai pas trouver une solution adaptée. Toutes les routes semblait être trop difficile à suivre pour moi.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez le faire vous-même, cela peut être très agréable, mais difficile de l'exercice. Je ne sais pas du tout de la 3e partie des cadres qui facilitent P2P connectivité entre "iDevices", autres que ceux ci-dessous, à partir d'Apple. Vous pouvez faire des recherches le long de ces lignes, si vous ne voulez pas ré-inventer la roue. Je suis la réponse basées sur ma (petite) expérience de la mise en œuvre d'un service de synchronisation via un serveur d'application - principes doivent être plus ou moins la même chose avec un P2P approche.
La première étape serait d'élaborer un protocole pour la synchronisation de vos données. Les Questions que vous pourriez avoir à répondre pour vous-même:
C'est à peine de rayer la surface. Vous trouverez certainement plus de choses à penser comme vous aller de l'avant.
Ensuite, déterminez comment vous souhaitez vous connecter entre les périphériques. Vous semblez préférer un over-the-air de la solution, le P2P genre. Pour cela, je voudrais commencer par regarder ces outils:
Choisissez laquelle des outil(s) vous vous sentez le plus à l'aise et en fonction de vos décisions de conception discuté plus tôt. Je ne peux pas vous aider là-bas, que je n'ai pas d'expérience avec l'un d'eux. Comme Morpheus dit:
Désolé, un peu d'humour 🙂
Enfin, décider sur une solution à mettre en œuvre la synchronisation de votre mécanisme. Vous pourriez par exemple choisir un modèle client-serveur (un seul appareil sera à l'écoute pour une connexion et un autre va l'initier).
Plus de la documentation pertinente:
J'espère que cela vous donne un chemin de départ.
La synchronisation des données est très difficile. Des solutions simplistes sont pire que pas de solution.
Pour une bonne orientation spirituelle sur la question, aller vérifier ce que les auteurs de Choses font avec leur nuage à venir synchronisation des fonctionnalités. J'espère qu'ils vont sortir une synchronisation par le biais de l'API que les développeurs peuvent mettre en œuvre la synchronisation de services. Mais même si ils gardent pour eux-mêmes, ils sont démontrant très bien le genre d'introspection nécessaire pour vraiment lieu à la tâche.
"Couchbase pour iOS" pourrait répondre à votre besoin
https://github.com/couchbaselabs/iOS-Couchbase
Selon le readme:
Je voudrais commencer par la Pomme d'API des Services de Synchronisation et voir si cela répond à vos besoins. En principe, il vous laisser de la synchronisation sur tous les appareils d'Apple et de services.