Sto sviluppando un'app iOS in cui una delle funzionalità consentirà agli utenti di condividere e collaborare sui dati (ad es. elenchi). Da tutto ciò che ho letto e basato sul modo in cui la sincronizzazione di iCloud CoreData funziona, presumo che non sarebbe adatto per i seguenti motivi, ma volevo assicurarmi che non mi mancasse nulla, poiché preferirei non utilizzare una soluzione di sincronizzazione di terze parti se possibile:
-
La sincronizzazione di iCloud di qualsiasi tipo (coppie CoreData, Documento o Chiave / Valore) può essere sempre tra dispositivi che utilizzano lo stesso account iCloud, quindi è progettato per un singolo utente che sincronizza i dati su più dispositivi. Qualsiasi tipo di sincronizzazione collaborativa (più persone che modificano lo stesso documento / elenco) simultaneamente sarebbe limitato a chiunque abbia lo stesso account iCloud. I casi di persone che condividono lo stesso account iCloud sono generalmente limitati, ad esempio, a marito e moglie oa relazioni simili simili per un numero limitato di persone.
-
iCloud Core Data sync serve a garantire che ogni dispositivo sincronizzato abbia gli stessi dati. Non sembra consentire la sincronizzazione di un solo sottoinsieme di dati, quindi gli scenari in cui ogni utente ha i propri documenti e condivide solo / condivide su un sottoinsieme di essi non sono supportati.
E non sto nemmeno menzionando i problemi con i documenti con la sincronizzazione iCloud CoreData che potrebbe essere stata o meno risolta con iOS 7.
Considerato quanto sopra, sembrerebbe che CouchDB (con TouchDB ) sia un'opzione migliore, come sembra supporta tutto ciò di cui ho bisogno. Quali altre opzioni ci sono che le persone possono raccomandare?
AGGIORNAMENTO: Da quando ho postato questo ho fatto più ricerche e ho scoperto che CouchDB così com'è non sarebbe una buona soluzione. La sua funzione di replica filtrata sembra essere stata creata per sincronizzare solo un sottoinsieme di dati (ad esempio dati per un utente) su un dispositivo mobile da un database del server centrale che contiene tutti i dati degli utenti. Tuttavia, non è una soluzione praticabile per motivi di prestazioni e sicurezza. I ragazzi di Couchbase stanno lavorando su soluzioni per questo, ma sono tutti nelle prime fasi alfa.
Per una soluzione che non prevede la creazione di un proprio back-end, le opzioni sembrano ridursi a Simperium , Parse o qualcosa come servizi mobili Windows Azure . Di questi, l'unico che supporta la sincronizzazione push in tempo reale (non è necessario aggiornare o eseguire il polling per i nuovi dati) sembra essere Simperium. L'unico lato negativo di Simperium è che non supporta i dati binari (ad esempio immagini).