Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vývoj aplikací pro 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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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

TIB2012

       

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í.

Petr Reichl

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.

Školení Google+ pro firmy

DW - Školení PPC
  • Jak využít Google+ pro firemní komunikaci a marketing.
  • Čím se liší Google+ od Twitteru a Facebooku z pohledu firemního využití.
  • Jak využít Google+ v souladu s pravidly užívání.
  • Založení Google+ Page (Stránky) krok po kroku, včetně praktických tipů.

Detailní informace o školení Google+ »

Přehled názorů

ObjectiveC
Richard 20. 1. 2010 09:49
Nový
├ 
Re: ObjectiveC
X 20. 1. 2010 12:09
Nový
│
├ 
Re: ObjectiveC
Aleš Roubíček 20. 1. 2010 12:46
Nový
│
│
├ 
Re: ObjectiveC
X 20. 1. 2010 12:58
Nový
│
│
└ 
Re: ObjectiveC
Lojza 20. 1. 2010 15:37
Nový
│
│
 
└ 
Re: ObjectiveC
Borek Bernard 20. 1. 2010 16:32
Nový
│
├ 
Re: ObjectiveC
ahl 20. 1. 2010 13:35
Nový
│
└ 
Re: ObjectiveC
Richard 21. 1. 2010 09:58
Nový
└ 
Re: ObjectiveC
Split 8. 7. 2010 14:05
Nový
fajn
dc 20. 1. 2010 10:45
Nový
├ 
Re: fajn
Tom 20. 1. 2010 11:45
Nový
│
└ 
Re: fajn
Peter 28. 3. 2011 21:49
Nový
├ 
Re: fajn
aprilchild 20. 1. 2010 11:56
Nový
│
├ 
Re: fajn
M. N. 21. 1. 2010 15:31
Nový
│
└ 
Re: fajn
Pavel Šimek 21. 1. 2010 17:23
Nový
└ 
Re: fajn
Richard 21. 1. 2010 10:05
Nový
--- [off topic]
X 20. 1. 2010 12:10
Nový
neprehani to trochu?
Milos 20. 1. 2010 14:17
Nový
├ 
To není pravda
X 20. 1. 2010 15:36
Nový
│
├ 
Re: To není pravda
M. N. 21. 1. 2010 15:18
Nový
│
│
├ 
Re: To není pravda
X 21. 1. 2010 17:21
Nový
│
│
└ 
Re: To není pravda
larry 25. 1. 2010 20:01
Nový
│
└ 
Re: To není pravda
M. N. 21. 1. 2010 15:26
Nový
│
 
└ 
Re: To není pravda
X 21. 1. 2010 17:34
Nový
│
 
 
├ 
Re: To není pravda
as 25. 1. 2010 00:11
Nový
│
 
 
└ 
Re: To není pravda
um7 11. 2. 2010 09:39
Nový
└ 
Re: neprehani to trochu?
ahl 20. 1. 2010 16:01
Nový
to naco su take obrazky ?
mirrec 22. 1. 2010 23:53
Nový
Tip na tutoriál k OBJ-C
M. N. 25. 1. 2010 13:59
Nový
Menší doplnění
Robert Vojta 25. 1. 2010 15:59
Nový
└ 
Re: Menší doplnění
Chlup 27. 1. 2010 14:08
Nový
 
├ 
Re: Menší doplnění
Petr Reichl 27. 1. 2010 14:09
Nový
 
└ 
Re: Menší doplnění
Robert Vojta 27. 1. 2010 14:12
Nový
 
 
└ 
Re: Menší doplnění
Peter 28. 3. 2011 21:54
Nový
Dotaz na normu her
Matty 8. 2. 2010 21:10
Nový
└ 
Re: Dotaz na normu her
Vykook 9. 2. 2010 14:38
Nový
 
└ 
Re: Dotaz na normu her
Matt 9. 2. 2010 15:26
Nový
 
 
└ 
Re: Dotaz na normu her
Vykook 9. 2. 2010 16:25
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem