Una storia di successo, insomma, ben lontana dai fallimenti del predecessore MobileMe, ma con un grosso mache grava sugli sviluppatori. Agli occhi degli utenti iCloud appare davvero come il servizio “hassle free” che Apple pubblicizza. Per i developers che vorrebbero davvero implementare una sincronizzazione efficace fra più dispositivi, invece, è un incubo. Il problema sta nella totale inaffidabilità delle API per la sincronizzazione dei Core Data.
Giusto qualche giorno fa, nell’annunciare la ripresa dello sviluppo di NetNewsWire, la software house BlackPixel, specificava che il sistema di sync dei feed della nuova versione del software non utilizzerà iCloud, data l’impossibilità di trovare una soluzione funzionale che utilizzi il servizio Apple, ma sarà basata su una soluzione sviluppata in-house.
Il problema, spiega Ellis Hamburger su The Verge, sta tutto nella totale impossibilità di far funzionare il sync di Core Data, che in altre parole è il framework di iOS e OS X utilizzato per la gestione dei dati interni delle applicazioni. Per continuare con l’esempio di NetNewsWire: sincronizzare le iscrizioni ai feed, i preferiti, gli articoli salvati, la gerarchie delle cartelle e le preferenze, significherebbe poter sincronizzare Core Data in maniera efficace fra i dispositivi.
Purtroppo, ad oggi, la quasi totalità della comunità degli sviluppatori è concorde nell’affermare che il sync di Core Data tramite iCloud semplicemente non funziona: le inconsistenze fra i dati sono costanti e continue, spesso si riscontrano perdite di dati, gli aggiornamenti a volte sono istantanei, altre volte necessitano di ore per propagarsi correttamente. Il risultato è che gli sviluppatori non possono offrire questo servizio se non con la consapevolezza di creare infiniti problemi agli utenti e intasare il l’account email del proprio servizio di supporto.
Il sync di Core Data non va confuso con il sync dei documenti, vale a dire la funzionalità offerta con successo dalla maggioranza delle applicazioni che si dichiarano “compatibili” con iCloud. E’ anche una funzione decisamente di base: perfettamente sufficiente per le applicazioni che creano concettualmente dei documenti (file di testo, file multimediali ecc…) ma di certo non per quelle che invece si basano sull’accesso ad una base di dati, come ad esempio tutti i software per la gestione delle finanze personali, o per la creazione di to-do lists.
Poco male se il servizio di sync di Core Data fosse ancora in beta ed Apple non spingesse così tanto nel pubblicizzare iCloud come una soluzione che “funziona punto e basta”. Il marketing di Apple è estremamente efficace: gli utenti capiscono che cosa vogliono (un sync vero e proprio) ma gli sviluppatori, con tutta la loro buona volontà, non riescono ad offrire loro nulla di realmente stabile.
Non che la concorrenza possa offrire davvero qualcosa di più convincente, al momento. Dropbox, ad esempio, è il campione del sync dei documenti, che tanti sviluppatori utilizzano anche per la sincronizzazione di alcune preferenze (si pensi al sync delle snippet di testo su TextExpander) ma non permette soluzioni di sync delle basi di dati davvero funzionali.
Il succo è che sincronizzare insiemi di dati che prevedono strutture relazionali complesse è molto, molto difficile.
Già alla WWDC 2012 gli sviluppatori avevano tempestato Apple di richieste di chiarimento e supporto sulla questione della sincronizzazione di Core Data, ricevendo un’unica risposta: attendete iOS 6.
Il nuovo sistema operativo è arrivato, ed anche Mountain Lion su Mac, molti aspetti sono stati migliorati, ma il sync non è ancora per nulla affidabile.
Ora tutti attendono l’edizione 2013 della Worldwide Developer Conference per capire se Apple avrà finalmente preso decisioni serie per la risoluzione del problema o se anche a questo giro la risposta sarà la solita (“aspettate iOS 7 e il prossimo OS X”) mentre gli utenti continueranno ad “incolpare” gli sviluppatori per l’assenza di funzionalità che Apple continua a “vendere” come perfettamente funzionanti.
Ho appena sviluppato un app utilizzando Core Data senza sincerarmi prima della sua affidabilità con iCloud (L’ho data per scontata…)
Ottimo direi!!
@SkillsFactory:
Se il Db che devi sincronizzare non è troppa cosa può darsi che funzioni pure.
Cmq ti lascio un altro link, ne parla anche Ars Technica:
http://arstechnica.com/apple/2013/03/frustrated-with-icloud-apples-developer-community-speaks-up-en-masse/
;)
@Camillo Miller:
Ho implementato il tutto: per la poca mole di dati che deve gestire pare vada bene (è un’app per semplici annotazioni).
Sono contrariato però dal fatto che non è possibile fare beta testing dato che iCloud funziona solo se l’app si trova sullo store.
Se lo voglio dare in prova a qualcuno mica posso fargli installare xcode con i miei certificati da sviluppatore…