Egyre több helyen jelennek meg írások fejlesztők tollárból, amiben az iCloudra panaszkodnak. Bugos, nem megy, nem csinálja. Az elégedetlen hangok az iCloud bemutatása óta gyakorlatilag megállás nélkül hallhatóak, vagyis úgy tűnik, nem sok minden változott ezen a téren a cupertinói cégnél. Az átlagfelhasználó pedig - a címeket elolvasva - nem érti a problémázást, hiszen az iCloud köszöni szépen, jól megvan. Ő úgy látja.

Valójában az iCloud egy gyűjtőnév. Egy csomó szolgáltatás tartozik ide, ráadásul két alapvető változat létezik belőle. Az egyik, amit az Apple használ az iMessage, Mail, iTunes, Photo Stream alkalmazásokban. A másik, amit a fejlesztők számára kínál fel, hogy építsék be az appjukba. A kettő állítólag teljesen más technológián alapul, és a gond az utóbbival van, leginkább a Core Datával.

Az appok készítői elvileg lehetőséget kapnának, hogy a programjuk asztali (OS X) és mobil verziója között létrejöhessen egy automatikus szinkronizáció az Apple szerverein keresztül, de ez állítólag nem könnyű. Tom Harrington írt egy hosszabb cikket, amiben több példát is említ, miért szívás dolgozni a Core Datával. Michael Göbel majdnem két éve vár arra, hogy az Apple kijavítson egy problémát. Brent Simmons pedig már odáig jutott, hogy akkor sem szabadna egy fejlesztőnek iCloudot használni, ha történetesen működne.

icloud-rain.jpg

Egyikük elmagyarázza azt is, milyen kellemetlen helyzetbe hozzák őket. Mert az egyik oldalon ott vannak a felhasználók, akik azt hallják az Apple-től: minden alkalmazás használhatja szinkronizálásra az iCloudot. Felteszik a kérdést, akkor miért nem használják? Az Apple saját programjaiban megy, a tiédben miért nem?

A válasz a fentiekben. Amíg ennyi nyűggel jár az Apple-felhő használata, addig ez nem egy egyszerűbb megoldás a fejlesztőknek, sőt sok esetben költségesebb lehet a beleölt munka miatt, mint egyéb megoldások keresése.

Megkérdeztem a Webstar Csoport projektvezetőjét, Fenyvesi Pétert (Sprinkfield) és a csapat fejlesztőjét, nekik mi a véleményük az iCloudról. Ezt közlöm most változtatás nélkül.

Amikor elterveztük, hogy milyen plusz szolgáltatásokat akarunk a játékhoz adni, akkor az OpenFeint és Game Center támogatás mellett az iCloud szinkronizáció is szóba került. Az OpenFeint-et – az ismert események fényében – szerencsére el sem kezdtük, azonban az iCloud felé nagy lelkesedéssel tekintettünk. A szokásos mi-van-ha-nincs-internet-kapcsolata és egyéb szinkronizációs problémákat átbeszéltük, és belekezdtünk a fejlesztésbe, melynek első lépése a Core Data használata.

Itt ütköztünk az első problémákba. Ha módosítottunk fejlesztés közben a Core Data struktúrán, akkor az alkalmazás különböző hibaüzenettel elszállt. Mint kiderült, ilyenkor migrálni kell az adatokat az új struktúrába. Tehát első lépésként véglegesítettük az adatmodellt, hogy lehetőleg ne kelljen némelyik update-kor migrációs folyamatot indítani.

Miközben egyre jobban megismerkedtünk a Core Data-val, elég sokat olvastunk arról, hogy hogyan kell az iCloud integrációt megvalósítani. Óhatatlanul belefutottunk több olyan cikkbe, ahol sikeres alkalmazásokat fejlesztő kis cégek (pl. Vlambeer) azért hagyták ki az iCloud-ot, mert egyszerűen nem volt arra keretük – sem fejlesztési, sem támogatási –, hogy a nagy számú problémát, amit az iClouddal a nyakukba vennének, orvosolják.

Mivel a Core Data használata/működése nem volt számunkra sem triviális, sem kényelmes, ezért a fejlesztési időt nem az iCloud-ra fordítottuk, ezzel együtt a Core Data is megmaradt azon a szinten, ameddig jutottunk, és a későbbi adattartalmakat más módon építettük be a játékba.

Abból kiindulva, hogy még most is jelennek meg új, negatív hangvételű cikkek (itt, itt és itt), – és bejegyzések a devforums.apple.com-on – a témával kapcsolatban, úgy érzem, hogy nem volt elhibázott döntés kihagyni egyelőre az iCloud-ot. De lehet, hogy ezt csak azért mondom, hogy csökkentsem a bennem keletkező kognitív disszonanciát:)