Het bijhouden van toepassingsgegevens gesynchroniseerd tussen apparaten is een complexe en ontmoedigende taak. Gelukkig is dat precies waarom Apple iCloud heeft gebouwd. In deze Tuts + Premium-serie leert u hoe iCloud werkt en hoe uw applicaties naadloos gegevens kunnen delen op meerdere apparaten.
Een van de meest aangeprezen functies van iOS 5 is iCloud. Hoewel iCloud een aantal overeenkomsten vertoont met de MobileMe-service van Apple, is iCloud veel meer dan ooit MobileMe was. Net als veel andere bedrijven is Apple zich gaan realiseren dat de cloud een onmisbaar onderdeel is van de mobiele ruimte. Sommige sceptici beschouwen iCloud als de tweede poging van Apple om een synchronisatiedienst te bouwen, maar iCloud is een meer ambitieuze onderneming met een enorm potentieel.
Dit is het eerste artikel in een serie over iCloud-opslag. Voordat ik naar iCloud-opslag ga duiken, wil ik graag even een kort overzicht geven van wat je van deze serie kunt verwachten.
Deze tuturial bevat geen codevoorbeelden. Mijn doel van deze tutorial is om u vertrouwd te maken met iCloud op een conceptueel niveau en om aan te tonen hoe iCloud u als ontwikkelaar kan helpen.
In de tweede aflevering van deze serie zal ik je laten zien hoe je iCloud Storage voor een applicatie kunt inschakelen. We zullen ook onze eerste applicatie met iCloud-functionaliteit bouwen door gebruik te maken van iCloud Key-Value Storage.
De laatste twee afleveringen zullen zich concentreren op iCloud Document Storage. Deel drie zal zich concentreren op de nieuwe UIDocument-klasse en zal bespreken hoe het gebruik ervan uw leven gemakkelijker kan maken. Deel vier gaat in op UIManagedDocument, een concrete subklasse van UID-documenten geïntegreerd met Core Data. Dankzij de nauwe integratie van Core Data en iCloud, zult u zien dat uw toepassing enorm kan profiteren van het gebruik van zowel Core Data als iCloud in uw toepassingen!
Voor de consument is iCloud een gratis service die de gegevens van de gebruiker opslaat in de cloud, met gegevens als muziek, foto's, e-mail, agenda's, contacten, enzovoort. De gegevens die op iCloud zijn opgeslagen, zijn beschikbaar voor elk apparaat dat is ingesteld met het iCloud-account van de gebruiker (bijvoorbeeld Macbooks, iPhones, iPads). Hoewel MobileMe altijd een vrij hoog prijskaartje had, maakte Apple iCloud vanaf het begin gratis. Er is een reden waarom Apple deze beslissing heeft genomen. Om iCloud een succes te laten zijn, is het van groot belang dat deze door zoveel mogelijk mensen wordt gebruikt. Apple heeft grote plannen voor iCloud en naarmate de tijd voortschrijdt, zou het een nog belangrijker component van de besturingssystemen iOS en OS X moeten worden.
Het onderdeel dat het handigst is voor ontwikkelaars is wat Apple omschrijft als iCloud-opslag. Dit is het deel van iCloud dat is ontworpen voor toepassingsgegevens.
Samen met iCloud heeft Apple een verzameling API's geïntroduceerd waarmee ontwikkelaars iCloud-opslag in hun eigen applicaties kunnen overnemen. Apple benadrukt dat hun eigen applicaties, zoals de iWork-suite met applicaties, gebruikmaken van dezelfde API's om te communiceren met iCloud. De iCloud-API is eenvoudig, gebruiksvriendelijk en verrassend flexibel. Het is duidelijk dat Apple veel aandacht, moeite en middelen heeft besteed aan het creëren van iCloud met betrekking tot integratie door derden.
Het bijhouden van toepassingsgegevens gesynchroniseerd tussen apparaten is geen eenvoudige taak (vraag het maar aan Apple, Dropbox of Google!). Het vereist niet alleen een betrouwbare back-endinfrastructuur, maar een van de meest angstaanjagende uitdagingen is het zelf uitvoeren van de gegevenssynchronisatie. Talrijke scenario's kunnen leiden tot gegevensverlies of corruptie. Conflicthantering is in het bijzonder een van de meest uitdagende aspecten van gegevenssynchronisatie. Hoe complexer het gegevensmodel, des te geavanceerder het conflictalgoritme moet zijn om alle randgevallen af te handelen.
In plaats van een afzonderlijk iCloud-framework te maken, heeft Apple sommige van zijn bestaande frameworks met iCloud-API's verbeterd. NSFileManager
is een goed voorbeeld van een klasse die aanzienlijke API-ondersteuning heeft gekregen voor iCloud-integratie.
Een van de meer prominente voordelen van iCloud is de naadloze integratie met iOS. Elk iOS-apparaat heeft een iCloud-daemon op de achtergrond. Deze daemon bewaakt wijzigingen in iCloud, zelfs als je applicatie niet actief is.
Een andere iCloud-optimalisatie is peer-to-peer-synchronisatie. Net als Dropbox zal iCloud wijzigingen over het lokale netwerk synchroniseren als het detecteert dat een apparaat met hetzelfde iCloud-account zich op hetzelfde lokale netwerk bevindt.
Last but not least werd iCloud ontworpen door een bedrijf met vele jaren ervaring in het leveren en beheren van gegevens in de cloud. Het gemak waarmee ontwikkelaars iCloud in hun applicaties kunnen gebruiken, toont aan dat Apple een betrouwbare oplossing heeft ingezet die duizenden ontwikkelaars ten goede zal komen. Voor de overgrote meerderheid van de toepassingen is het niet langer de moeite waard om een oplossing voor aangepaste gegevenssynchronisatie te ontwikkelen.
Als u overweegt iCloud in uw toepassing aan te nemen, stel ik voor dat u de tijd neemt om een goed inzicht te krijgen in de interne werking van iCloud en zich bewust bent van de beperkingen ervan. Toepassingen met iCloud hebben een iCloud-sandbox zoals de sandbox die een app op iOS heeft. Sandboxing heeft een aantal duidelijke beveiligingsvoordelen. Veiligheid brengt echter kosten met zich mee. Het nadeel van de iCloud-sandbox is dat het omslachtig is om toegang te krijgen tot de gegevens van uw applicaties van andere geïnstalleerde applicaties.
Ontwikkelaars die nog geen lid van iCloud zijn, denken misschien dat het een zwarte doos is waarin Apple beslist wat er met uw gegevens gebeurt en hoe deze wordt beheerd. Dit is echter niet waar. Telkens wanneer een document wordt gewijzigd op apparaat A, worden de wijzigingen doorgevoerd naar iCloud. iCloud waarschuwt vervolgens aanvullende apparaten, bijvoorbeeld apparaten B en C, van deze wijzigingen. Het is aan uw toepassing om te beslissen hoe deze reageert wanneer er wijzigingen worden aangebracht. Hetzelfde geldt voor conflictoplossing. Zoals ik eerder al zei, is conflictafhandeling een van de meest uitdagende aspecten van gegevenssynchronisatie. iCloud zal u op de hoogte stellen wanneer er wijzigingen hebben plaatsgevonden en of er conflicten zijn ontstaan. Het is aan u om een conflictalgoritme te implementeren om eventuele conflicten op te lossen.
Het is ook vermeldenswaard dat Core Data nauw is geïntegreerd met iCloud. Sinds de introductie op het Mac-platform vele jaren geleden, is Core Data een ongelooflijk krachtig framework geworden. De integratie met iCloud maakt het nog aantrekkelijker. Conflictmanagement wordt bijvoorbeeld netjes behandeld door Core Data dankzij de nauwe integratie met iCloud.
Er zijn twee manieren waarop u iCloud-opslag in een toepassing kunt gebruiken, (1) iCloud-sleutel / waardeopslag en (2) iCloud-documentopslag. Beide zijn gericht op specifieke use-cases.
iCloud Key-Value Storage heeft veel overeenkomsten met NSUserDefaults en werkt op dezelfde manier. Met iCloud Key-Value Storage kan uw toepassing sleutel / waarde-paren opslaan, net zoals u dat kunt met NSUserDefaults of een eenvoudige NSDictionary. Het verschil is dat deze sleutel / waarde-paren lokaal (op het apparaat) en in iCloud bestaan. Op specifieke intervallen worden de lokale sleutel / waarde-paren gesynchroniseerd met iCloud.
Het synchroniseren van gebruikersinstellingen op verschillende apparaten is een mogelijk gebruik van iCloud Key-Value Storage. Het is perfect geschikt voor toepassingen die een beperkte hoeveelheid gegevens verwerken. Met andere woorden, applicaties die geen data zwaar zijn en slechts kleine hoeveelheden informatie opslaan, zijn het best geschikt voor Key-Value Storage.
iCloud Key-Value Opslag heeft een aantal beperkingen. De eerste beperking is dat alleen gegevenstypegegevenstypen (NSString, NSNumber, NSDate, NSData, enz.) Kunnen worden opgeslagen. Aangepaste modelobjecten moeten worden geserialiseerd voordat ze kunnen worden opgeslagen met behulp van iCloud Key-Value Storage.
Een tweede beperking houdt verband met de hoeveelheid schijfruimte die is toegewezen aan Key-Value Storage. Elke toepassing kan sleutelparameters van 1 MB of 1024 opslaan. Zoals ik eerder al zei, Key Key-Storage is geen optie voor data-intensieve applicaties.
Het grote voordeel van Key-Value Storage is gebruiksgemak. Het is uiterst eenvoudig in te stellen en te gebruiken in uw toepassing, wat een zeer beperkte hoeveelheid ontwikkeltijd vereist.
Zoals de naam al aangeeft, is dit type opslag gericht op documentgebaseerde applicaties. iCloud Document Storage kan worden gebruikt om bestanden op te slaan en kan ook omgaan met pakketten.
Een van de voordelen van het iCloud-documentopslagmodel is dat de beschikbare ruimte voor uw toepassing alleen wordt beperkt door de capaciteit van het iCloud-account van de gebruiker.
Deze twee typen iCloud-opslag zijn heel verschillend en het zou niet moeilijk moeten zijn om te beslissen welk type het meest geschikt is voor uw toepassing.
Het configureren van een toepassing voor gebruik met iCloud is eenvoudig en vereist slechts twee stappen. In de tweede aflevering van deze serie zal ik meer in detail ingaan op het set-upproces door stapsgewijs door het proces te lopen. In dit artikel zal ik een korte beschrijving van elke stap geven.
Een applicatie is niet standaard geconfigureerd om iCloud te gebruiken. Om iCloud in te schakelen, meldt u zich aan bij de provisioningportal met uw ontwikkelaarsaccount en schakelt u iCloud in voor uw toepassing in de app-ID-portal. Dat is alles wat u hoeft te doen om iCloud aan te bieden voor gebruik in uw toepassing.
De volgende stap is het maken van de juiste rechten voor uw aanvraag. Elke applicatie die gebruik wil maken van iCloud moet worden ondertekend met iCloud-specifieke rechten. De rechten definiëren welke toepassingen toegang hebben tot de gegevens van uw toepassing en deze rechten bieden daarom een beveiligingslaag voor de gegevens van de gebruiker.
Als je in de war bent door een aantal van de iCloud-concepten die ik heb besproken, wil je misschien het volgende deel van deze Tuts + Premium-serie in de gaten houden. De volgende keer zal ik u begeleiden bij het instellen van een iCloud-compatibele applicatie, en we zullen een applicatie bouwen die iCloud Key-Value Storage gebruikt om de gegevens van de gebruiker gesynchroniseerd te houden over meerdere apparaten. Blijf kijken!