Păstrarea sincronizării datelor aplicațiilor pe toate dispozitivele este o sarcină complexă și descurajantă. Din fericire, acesta este exact motivul pentru care Apple a construit iCloud. În această serie Tuts + Premium, veți afla cum funcționează iCloud și modul în care aplicațiile dvs. pot partaja cu ușurință datele pe mai multe dispozitive.
Una dintre cele mai cunoscute caracteristici ale iOS 5 a fost iCloud. Chiar dacă iCloud împărtășește o serie de asemănări cu serviciul Apple MobileMe, iCloud este mult mai mult decât MobileMe a fost vreodată. Ca multe alte companii, Apple a ajuns să-și dea seama că norul este o componentă indispensabilă a spațiului mobil. Unii sceptici văd iCloud ca a doua încercare a Apple de a construi un serviciu de sincronizare, dar iCloud este o întreprindere mai ambițioasă, cu un potențial extraordinar.
Acesta este primul articol dintr-o serie despre stocarea iCloud. Înainte de scufundări în iCloud Storage, aș dori să fac un minut pentru a oferi o imagine de ansamblu rapidă a ceea ce vă puteți aștepta din această serie.
Acest tutorial nu va conține nici o mostră de cod în el. Scopul meu pentru acest tutorial este de a vă familiariza cu iCloud la nivel conceptual și de a demonstra cum iCloud vă poate ajuta ca dezvoltator.
În cea de-a doua tranșă a acestei serii, vă voi arăta cum să activați iCloud Storage pentru o aplicație. Vom construi, de asemenea, prima noastră aplicație compatibilă cu iCloud, utilizând iCloud Key-Value Storage.
Cele două tranșe finale se vor concentra pe stocarea documentelor iCloud. Partea a treia se va concentra pe noua clasă UIDocument și va discuta despre modul în care utilizarea acesteia vă poate ușura viața. Partea a patra se va concentra pe UIManagedDocument, o subclasă concretă a UIDocumentului integrat cu datele de bază. Datorită integrării strânse a datelor core și iCloud, veți vedea că aplicația dvs. poate beneficia extraordinar de la adoptarea atât a datelor core cât și a iCloud în aplicațiile dvs.!
Pentru consumator, iCloud este un serviciu gratuit care stochează datele utilizatorului în cloud, cu date cum ar fi muzică, fotografii, e-mail, calendare, contacte etc. Datele stocate pe iCloud sunt disponibile pentru orice dispozitiv configurat cu contul iCloud al utilizatorului (de exemplu, MacBooks, iPhones, iPads). În timp ce MobileMe a avut întotdeauna un preț destul de ridicat, Apple a făcut iCloud gratuit de la început. Există un motiv pentru care Apple a luat această decizie. Pentru ca iCloud să fie un succes, este vital să fie folosit de cât mai mulți oameni posibil. Apple are planuri mari pentru iCloud, și odată cu trecerea timpului, ar trebui să devină o componentă și mai importantă a sistemelor de operare iOS și OS X.
Componenta cea mai utilă dezvoltatorilor este ceea ce Apple se referă la stocarea iCloud. Aceasta este partea din iCloud care este concepută pentru datele de aplicație.
Împreună cu iCloud, Apple a introdus o colecție de API care le permite dezvoltatorilor să adopte iCloud Storage în propriile aplicații. Apple subliniază faptul că propriile aplicații, cum ar fi suita de aplicații iWork, utilizează aceleași API-uri pentru a interfața cu iCloud. API-ul iCloud este simplu, ușor de utilizat și surprinzător de flexibil. Este clar că Apple a pus o mulțime de gândire, efort și resurse în crearea iCloud în ceea ce privește integrarea terților.
Păstrarea datelor aplicațiilor sincronizate pe toate dispozitivele nu este o operație ușoară (cereți Apple, Dropbox sau Google!). Nu numai că necesită o infrastructură de back-end fiabilă, dar una dintre cele mai provocatoare provocări este efectuarea sincronizării datelor în sine. Numeroase scenarii pot duce la pierderea de date sau la corupție. Manipularea conflictelor, în special, este unul dintre cele mai provocatoare aspecte ale sincronizării datelor. Cu cât este mai complex modelul de date, cu atât algoritmul de conflict trebuie să fie mai sofisticat pentru a rezolva toate cazurile de margine.
În loc să creeze un cadru iCloud separat, Apple a îmbunătățit unele dintre cadrele sale existente cu iCloud API-uri. NSFileManager
este un exemplu excelent al unei clase care a câștigat un suport API semnificativ pentru integrarea iCloud.
Unul dintre avantajele mai proeminente ale iCloud este integrarea sa neintrerupta cu iOS. Fiecare dispozitiv iOS are un daemon iCloud care rulează în fundal. Acest daemon monitorizează modificările în iCloud, chiar dacă aplicația dvs. nu funcționează.
O altă optimizare iCloud este sincronizarea peer-to-peer. La fel ca Dropbox, iCloud va sincroniza modificările prin rețeaua locală dacă detectează că un dispozitiv cu același cont iCloud se află în aceeași rețea locală.
Nu în ultimul rând, iCloud a fost proiectat de o companie cu mulți ani de experiență în furnizarea și gestionarea datelor în nor. Ușurința cu care dezvoltatorii poate adopta iCloud în aplicațiile lor arată că Apple a implementat o soluție fiabilă care va beneficia de mii de dezvoltatori. Pentru marea majoritate a aplicațiilor, nu va mai merita să dezvoltați o soluție personalizată de sincronizare a datelor.
Dacă vă gândiți să adoptați iCloud în cererea dvs., vă sugerez să vă acordați timp pentru a înțelege bine funcționarea interioară a lui iCloud și pentru a fi conștient de limitările sale. Aplicațiile activate icloud au o nisip iCloud asemănătoare cu nisipul pe care o are o aplicație pe iOS. Sandboxing-ul are o serie de avantaje clare în ceea ce privește securitatea. Cu toate acestea, securitatea vine la un cost. Dezavantajul casetei de nisip iCloud este că accesarea datelor din aplicații de la alte aplicații instalate este greoaie.
Dezvoltatorii noi pentru iCloud ar putea crede că este o cutie neagră cu Apple, care decide ce se întâmplă cu datele dvs. și cum este gestionată. Totuși, acest lucru nu este adevărat. Ori de câte ori se schimbă un document pe dispozitivul A, modificările sunt împinse la iCloud. iCloud notifică apoi orice dispozitive suplimentare, spun dispozitivele B și C, a acestor modificări. Depinde cererea dvs. de a decide cum va răspunde la efectuarea modificărilor. Același lucru este valabil și pentru rezolvarea conflictelor. După cum am menționat mai devreme, tratarea conflictelor este unul dintre aspectele cele mai provocatoare ale sincronizării datelor. iCloud vă va notifica când au avut loc schimbări și dacă au apărut conflicte. Depinde de dvs. să implementați un algoritm de conflict pentru a rezolva orice conflict care ar putea apărea.
De asemenea, merită menționat faptul că datele de bază sunt strâns integrate cu iCloud. De la introducerea pe platforma Mac cu mulți ani în urmă, Core Data a devenit un cadru uimitor de puternic. Integrarea sa cu iCloud îl face și mai atrăgătoare. Gestionarea conflictelor, de exemplu, este tratată cu grație de către Core Data datorită integrării strânse cu iCloud.
Există două modalități prin care puteți să utilizați spațiul de stocare iCloud într-o aplicație, (1) stocarea cheie iCloud și (2) stocarea documentelor iCloud. Ambele se adresează cazurilor specifice de utilizare.
iCloud Key-Value Storage împarte multe asemănări cu NSUserDefaults și operează într-un mod similar. Cu ajutorul aplicației iCloud Key-Value Storage, aplicația dvs. poate stoca perechi cheie-valoare, la fel cum puteți și cu NSUserDefaults sau cu un simplu NSDictionary. Diferența este că aceste perechi cheie-valoare există local (pe dispozitiv) și în iCloud. La intervale specifice, perechile locale-cheie de valoare sunt sincronizate cu iCloud.
Menținerea sincronizării setărilor de utilizator între dispozitive este un posibil caz de utilizare pentru stocarea cheie iCloud. Este potrivit pentru aplicații care manipulează o cantitate limitată de date. Cu alte cuvinte, aplicațiile care nu sunt date greu și stochează numai cantități mici de informații sunt cele mai potrivite pentru stocarea cheie-valoare.
Valoarea de stocare cheie iCloud are o serie de limitări. Prima limitare este că pot fi stocate numai tipurile de date din lista de proprietăți (NSString, NSNumber, NSDate, NSData, etc.). Obiectele de obiecte personalizate trebuie să fie serializate înainte ca acestea să poată fi stocate utilizând iCloud Key-Value Storage.
O a doua limitare este legată de cantitatea de spațiu pe disc alocată pentru stocarea cheie-valoare. Fiecare aplicație poate memora 1MB sau 1 024 perechi cheie-valoare. După cum am menționat mai devreme, stocarea prin cheie nu este o opțiune pentru aplicațiile cu o intensitate mare de date.
Principalul avantaj al stocării cheie-cheie este ușurința în utilizare. Este extrem de ușor de configurat și utilizat în aplicația dvs., necesitând un timp foarte limitat de dezvoltare.
După cum sugerează și numele, acest tip de stocare vizează aplicațiile bazate pe documente. iCloud Document Storage poate fi folosit pentru a stoca fișiere și poate face față și pachetelor.
Unul dintre avantajele modelului iCloud Document Storage este că spațiul disponibil pentru aplicația dvs. este limitat doar de capacitatea contului iCloud al utilizatorului.
Aceste două tipuri de stocare iCloud sunt foarte diferite și nu ar trebui să fie dificil să decideți ce tip este cel mai potrivit pentru aplicația dvs..
Configurarea unei aplicații pentru utilizare cu iCloud este ușor și necesită doar doi pași. În cea de-a doua tranșă a acestei serii, voi vorbi despre procesul de instalare în detaliu, trecând prin procesul pas cu pas. În acest articol, voi oferi o scurtă descriere a fiecărui pas.
O aplicație nu este configurată implicit pentru a utiliza iCloud. Pentru a activa iCloud, conectați-vă la portalul de provizioane cu contul dvs. de dezvoltator și activați iCloud pentru aplicația dvs. în portalul ID-uri de aplicație. Acesta este tot ce trebuie să faceți pentru a furniza iCloud pentru utilizare în aplicația dvs..
Următorul pas este crearea drepturilor corecte pentru aplicația dvs. Fiecare aplicație care dorește să utilizeze iCloud trebuie să fie semnată cu drepturi specifice iCloud. Drepturile definesc ce aplicații au acces la datele aplicației dvs., iar aceste drepturi oferă astfel un nivel de securitate pentru datele utilizatorului.
Dacă sunteți confuz de unele dintre conceptele iCloud pe care le-am discutat, atunci vă recomandăm să fiți atenți la următoarea tranșă a acestei serii Tuts + Premium. Data viitoare vă voi îndruma prin procesul de instalare a unei aplicații compatibile cu iCloud și vom construi o aplicație care va adopta spațiul de stocare cheie iCloud pentru a păstra datele sincronizate ale utilizatorilor pe mai multe dispozitive. Rămâneți aproape!