Soluzioni per la sincronizzazione collaborativa iOS (iCloud CoreData, CouchDB)?

6

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).

    
posta mluisbrown 24.06.2013 - 17:49
fonte

1 risposta

1

Probabilmente non vuoi o non devi condividere tutti i dati delle app interne nel cloud. Ti consiglio di dare un'occhiata a CloudKit. È possibile salvare le risorse binarie che devono essere condivise tra tutti gli utenti inserendo le informazioni nel database pubblico di CloudKit.

Per iniziare con CloudKit, consulta questo tutorial completo. Ora le nozioni di base sono trattate qui, ma come le utilizzi nel modo più efficiente non lo sono. Potresti considerare di scaricare solo le risorse quando sono necessarie. Per fare ciò potrebbe essere utile creare una tabella che faccia riferimento allo stato della condivisione per i proprietari di altri record insieme agli utenti che hanno accesso a tali record (inclusa un'opzione per la condivisione a pubblico ~ altri utenti di app).

Potresti quindi semplicemente postare un avviso locale a un utente quando sono disponibili nuovi dati e consentire loro di controllare il download (utilizzando un conteggio recuperato di nuovi record di condivisione disponibili per un utente e quindi utilizzando una notifica locale). Oppure potresti voler elaborare i download solo in modalità background. Tutto dipende dal tuo caso d'uso, ma vorresti pensare a quando fare l'azione in quanto ciò potrebbe causare problemi inutili con la larghezza di banda dell'utente. Forse solo scaricare su wifi, ecc ...

    
risposta data 16.11.2015 - 19:21
fonte

Leggi altre domande sui tag