Vývoj aplikací pro iPhone

iPhone

Pro mobilní platformu Apple, která je reprezentována mobilním telefonem iPhone a multimediálním přehrávačem iPod Touch, je dnes dostupných více než 115 tisíc aplikací. V tomto článku se podíváme na tuto platformu a prolétneme celý proces vývoje od spuštění vývojového prostředí až po zveřejnění aplikace v App Store.

Ve znamení Cocoa

Když v roce 1996 Apple kupoval společnost NeXT získal touto akvizicí nejen zpět Steva Jobse, ale i framework Cocoa, na kterém následně začal stavět novou generaci svého operačního systému nazvaného OS X. Možná tehdy ani netušil k čemu všemu Cocoa jednou použije.

Po uvolnění první verze iPhone SDK, vývojového prostředí pro tvorbu vlastních aplikací na iPhone, bylo jasné, že Apple zvolil tu nejelegantnější možnost, kterou v danou dobu měl. Jako základ použil osvědčený framework Cocoa, doplnil o další věci specifické pro mobilní platformu, celé to nazval Cocoa Touch a pustil mezi vývojáře. Díky tomu mohla početná základna Apple vývojářů začít s minimálním úsilím programovat pro nově vzniklou mobilní platformu. Vývojáři měli k dispozici IDE XCode, ve kterém doposud programovali aplikace pro OS X a tak jím nové prostředí nebylo vůbec cizí.

Abychom i my mohli začít programovat aplikace pro iPhone je potřeba si na stránkách http://developer.apple.com/iphone bezplatně stáhnout zmíněné iPhone SDK. Součástí tohoto cca. 2GB balíku jsou jednak knihovny Cocoa Touch, ale i IDE XCode, iPhone simulátor a dokumentace. Bohužel iPhone SDK lze instalovat pouze na operační systém Mac OS X což mimo jiné znamená i investici do hardware společnosti Apple, který v našich končinách nepatří k nejlevnějším.

IDE XCode splňuje většinu nároků, které v dnešní době klademe na dobré IDE pro vývojáře. Stejně jako např. Eclipse či Visual Studio nabízí integrovaný debugger, který umožní ladit aplikace nejen na simulátoru, ale i na reálném zařízení, integrovanou statickou analýzu kódu, která vám pomůže odhalit spoustu chyb, které byste jinak velmi těžko hledali a další užitečné věci.

iPhone vývoj obrázky

Velmi užitečným nástrojem, nezbytným pro samotný vývoj, je iPhone simulátor. Díky němu můžete aplikace spouštět na vývojářském stroji bez nutnosti testování na reálném zařízení. Je však nutné si uvědomit, že simulátor běží na hardware vašeho vývojářského stroje a tudíž je výrazně rychlejší, s větším množstvím operační paměti. Proto je nutné čas od času testovat aplikaci i na reálném mobilním zařízení, abychom předešli stavu, kdy naše aplikace bude velký pomalý moloch, který se v praxi nedá vůbec používat.

Zatímco běžně dostupný iMac má dneska 2.4GHz procesor, poslední model iPhone 3GS má procesor jen o frekvenci 600 MHz a operační paměť 256 MB. Předchůdce iPhone 3G, stále velmi hojně rozšířený, je na tom co do operační paměti o poznání hůře. Má pouhých 128 MB RAM.

Objective-C

Cocoa Touch je naprogramovaný v jazyce Objective-C (nebo také zkráceně ObjC) a proto, abychom tento framework mohli používat, musíme zvolit právě tento jazyk, který je hlavním a v podstatě jediným oficiálním jazykem pro tvorbu aplikací pro iPhone.

Jedná se objektově orientovaný programovací jazyk, kde jako základ byl zvolen neobjektový jazyk C. Objektové rozšíření bylo inspirováno jazykem Smalltalk a pro většinu programátorů tak může působit hodně netradičně pro svou syntaxi. Jelikož se jedná o nadstavbu jazyka C, je možné kompilátorem ObjC přeložit libovolný kód napsaný v čistém C. Toho se i hojně využívá, protože spousta knihoven je napsána v čistém C.

Jako příklad zmíněné netradiční syntaxe může posloužit fakt,  že v terminologii ObjC nevoláme metody, ale posíláme zprávy. Takže namísto klasického volání metody

instance.metoda();

posíláme zprávu

[příjemce zpráva];

ObjC má spoustu vlastností, které dělají tento jazyk zajímavým. Pro bližší seznámení s tímto jazykem doporučuji seriál od českého Cocoa GuRu Ondřeje Čady Nastal čas na kakao http://www.mujmac.cz/serial179.html.

Model-View-Controller

Základním stavebním kamenem Cocoa Touch aplikací je návrhový vzor MVC, na jehož podobu se v rychlosti podíváme.

Model

Model, jakožto vrstva pro práci s daty, může využívat databázi Sqlite, která je standardní součástí. V prvních verzích bylo dostupné jen céčkové API a tak začaly vznikat více či méně kvalitní knihovny, které si kladly za cíl nabídnout pohodlnější ObjC API nebo objektové zapouzdření jinak relační databáze.

Mezi ty kvalitní a rozšířené knihovny patří např. EntropyDB (http://code.google.com/p/entropydb/), FMDB inspirovaná JDBC (http://gusmueller.com/blog/archives/2008/03/fmdb_for_iphone.html) či jednoduchá knihovna SqlitePersisten­tObjects (http://code.google.com/p/sqlitepersistentobjects/).

Až s příchodem iPhone SDK 3.0 Apple zpřístupnil framework CoreData, který se běžně používá při vývoji pro OS X. CoreData je objektově datový framework, který může podporovat řadu fyzických úložišť od XML až po Sqlite databázi. Součástí XCode je návrhář datových objektů, který generuje třídy v ObjC, umožňuje držet vazby mezi objekty a tím hlídat integritu dat bez ohledu na to jestli to fyzické úložiště podporuje. Samozřejmostí je podpora transakcí na úrovní frameworku, dědičnost apod.

V současné době je CoreData nejlépe podporovaným a dokumentovaným frameworkem pro práci s daty na platformě Cocoa Touch. Jeden z mnoha tutoriálů, které vám pomohou proniknout do CoreData je např. tento http://www.cocoadevcentral.com/articles/000085.php nebo ještě lépe rozsáhlá dokumentace přímo od Apple http://developer.apple.com/macosx/coredata.html.

iPhone vývoj obrázky

Controller, View

Základním stavebním kamenem každého kontroleru, je třída UIViewController, z níž případně vycházejí další specializovanější kontrolery např. pro práci s tabulkou, či ještě specializovanější jako práce s adresářem apod.

Kontroler obsahuje referenci na potomky třídy UIView, kteří obsahují vizuální komponenty. Návrh UI (UIView) můžeme provádět pomocí vizuálního návrháře, který je součástí XCode a obsahuje všechny podporované widgety a nebo programově pomocí ObjC.

Každý kontroler obsahuje referenci na tzv. navigační kontroler, který zprostředkovává přesun mezi kontrolery. Funguje na principu stacku, tzn. umožňuje v podstatě jen pohyb vpřed a zpět.

Three20 – koncept z dílny Facebooku

Joe Hewitt, známý v komunitě jako tvůrce legendárního rozšíření Firebug, se nesmazatelně zapsal i do komunity iPhone vývojářů. Při tvorbě iPhone klienta pro Facebook uvolnil framework, který při této práci vznikl a umístil ho pod svobodnou licencí na GitHub http://github.com/facebook/three20.

Three20 rozvíjí standardní MVC koncept, ale přináší řadu zajímavých myšlenek, které urychlují práci vývojářů na aplikacích podobného stylu, jako původní Facebook. Kromě takových lákavých věcí, jakými jsou kontrolery pro práci s obrázky (náhledy, prohlížeč obrázků), vylepšuje práci s tabulkami, kterým nativně přidává stránkování, možnost jednoduché práce s daty přímo z internetu (JSON, XML), kešování těchto dat apod. 

Přináší i řadu konceptů z webového programování. Jedná se například o velmi užitečnou podporu HTML renderování a CSS. Sice se jedná o malou podmnožinu těchto technologií, ale to tomu neubírá na použitelnosti. Představme si, že máme textovou area, do které vkládáme odstavec textu formátovaného pomocí podporovaného subsetu HTML.

NSString* kText = @"<span class="largeText">bah</span> <span class="smallText">humbug</span>"

a přidáme definici pro třídu smallText

- (TTStyle*)smallText {

 
return [TTTextStyle styleWithFont:[UIFont systemFontOfSize:12]
next:nil];

}

Jak můžete vidět, jedná se v podstatě o klasické stylování, které se snaží co nejvíce přiblížit CSS tak, jak tuto technologii známe z webu.

Další poměrně zajímavý koncept, který Three20 přinesl, je navigace mezi kontrolery pomocí URL. Opět si ukážeme na příkladu, jak takové volání může vypadat. Nejprve je nutné vytvořit definici URL pro jednotlivé kontrolery:

[map
from:@"tt://recipes?playlist=(initWithPlaylist:)"
toViewController:[RecipesViewController class]];

[map from:@"tt://pantry"
toSharedViewController:[PantryViewController class]];;

URL samozřejmě může obsahovat i parametry, které se budou předávat. V našem případě kontroler RecipesViewCon­troller podporuje parametr playlist. V dotyčném kontroleru pak je konstruktor initWithPlaylis­t:, který přijímá právě tento parametr.

Jak vidíte, Three20 je nesmírně užitečná knihovna, kterou můžete zvolit jako základ pro svou aplikaci. Vývoje se ujala komunita vývojářů pod záštitou Facebooku, který sám Three20 využívá ve svých aplikacích. 

Vývojářský účet, schvalovací proces, App Store

Doposud jsme se věnovali té zábavnější části, vývojařině. Abychom však mohli aplikaci dále distribuovat, byť třeba jen na svůj vlastní telefon, na kterém chceme aplikaci testovat, potřebujeme jí podepsat certifikátem. Certifikát získáme po zakoupení vývojářského programu, který v základní variantě stojí 99 dolarů na rok.

V rámci vývojářského programu dostaneme přístup k vývojářskému portálu, ve kterém spravujeme vývojářskou část naší práce. Můžeme si vygenerovat certifikát pro podpis aplikace, spravujeme zde zařízení, na kterých chceme naši aplikaci provozovat. Takových zařízení si můžeme registrovat 100. Bohužel nelze zařízení smazat. Respektive smazat je lze, ale neobnovíme tím místo v rámci celkového počtu možných zařízení. To znamená, že pokud se rozhodneme nabrat testery na testování naší aplikace, maximální počet je 100. Po jejich odstranění ze seznamu povolených zařízení se místo pro další neuvolní. K tomu dochází vždy při obnově vývojářského programu (tzn. po roce), kdy dojde k uvolnění neplatných míst a máme tak možnost je nahradit dalšími.

Další věcí, která se nám po uhrazení členského poplatku zpřístupní, je iTunes Connect. Jedná se o portál pro správu naší aplikace v App Store, zobrazování různých prodejních statistik apod. Pokud se tedy rozhodneme naší aplikaci poslat do App Store je toto místo, přes které to provádíme.

iPhone vývoj obrázky

Celý proces odeslání aplikace do App Store trvá v řádech dnů. Nahrajeme aplikaci do iTunes Connect a ta se zařadí do fronty, ze které si jí berou zaměstnanci Apple k otestování. Pokud splní všechny předepsaná pravidla, ocitne se po několika dnech v App Store, o čemž budeme informování emailem. Stejným procesem musí projít aplikace i když např. posíláte jen její aktualizaci. To může být velký problém v případě, že např. aplikace obsahuje závažnou chybu, která brání v jejím používání. Než v takovém případě projde opravná verze schvalovacím procesem, může to znamenat i několik dní či týdnů, než budou uživatelé mít opět funkční aplikaci. Důsledky si asi dokáže domyslet každý.

Naštěstí se celý proces schvalování postupem času zkracuje. Ze tří týdnů se standardem stalo 14 dnů, teď po vánocích se náhle proces zrychlil na pár dní. Uvidíme, zda opravdu Apple celý proces optimalizoval, nebo se jedná jenom o náhodu a vše se  časem vrátí zase do původních kolejí.

Autor se věnuje převážně mobilním aplikacím pro iPhone. Jeho dílem je např. iPhone klient pro OnTheRoad.to nebo aplikace Cookmate.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 38

Přehled komentářů

Richard ObjectiveC
X Re: ObjectiveC
Aleš Roubíček Re: ObjectiveC
X Re: ObjectiveC
Lojza Re: ObjectiveC
Borek Bernard Re: ObjectiveC
ahl Re: ObjectiveC
Richard Re: ObjectiveC
Split Re: ObjectiveC
dc fajn
Tom Re: fajn
Peter Re: fajn
aprilchild Re: fajn
xor Re: fajn
Pavel Šimek Re: fajn
Richard Re: fajn
X --- [off topic]
Milos neprehani to trochu?
X To není pravda
xor Re: To není pravda
X Re: To není pravda
larry Re: To není pravda
xor Re: To není pravda
X Re: To není pravda
as Re: To není pravda
um7 Re: To není pravda
ahl Re: neprehani to trochu?
mirrec to naco su take obrazky ?
xor Tip na tutoriál k OBJ-C
rvojta Menší doplnění
Chlup Re: Menší doplnění
petr.reichl Re: Menší doplnění
rvojta Re: Menší doplnění
Peter Re: Menší doplnění
Matty Dotaz na normu her
Vykook Re: Dotaz na normu her
Matt Re: Dotaz na normu her
Vykook Re: Dotaz na normu her
Zdroj: https://www.zdrojak.cz/?p=3151