Čestné prohlášení

Transkript

Čestné prohlášení
UNICORN COLLEGE
Katedra informačních
chno o ií
Vývoj ap ikací pro p a formu iO
Autor BP: Daniel Honzík
V doucí
: Mgr. Peter Buchlák
2012 Praha
Čestné prohlášení
Prohlašuji, že jsem svou bakalářskou práci na téma Vývoj aplikací pro platformu iOS jsem
vypracoval samostatně pod vedením vedoucího práce a s použitím výhradně odborné literatury
a dalších informačních zdrojů, které jsou v práci citovány, a jsou také uvedeny v seznamu
literatury a použitých zdrojů.
Jako autor této bakalářské práce dále prohlašuji, že v souvislosti s jejím vytvořením jsem
neporušil autorská práva třetích osob a jsem si plně vědom následků porušení ustanovení § 11
a následujících autorského zákona c 1 1
Sb
Nemam závazný důvod proti užití tohoto školního díla ve smyslu § 6 zákona č. 121/2000 Sb.,
o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů
(autorský zákon) vyjma zveřejnění zdrojových kódů, které jsou majetkem společnosti eMan s r o
Zdrojové kódy budou poskytnuty k nahlédnutí oponentovi bakalářské práce a komisi přítomné
při obhajobě této práce
V......................... dne ...........
(Daniel Honzík)
Poděkování
Děkuji vedoucímu bakalářské práce Mgr
Peteru Buchlákovi za účinnou metodickou,
pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce
V neposlední řadě za poskytnutí příležitosti podílet se na různorodých projektech pro platformu
iOS. Taktéž týmu lidí společnosti eMan za jejich ochotu a výbornou pracovní atmosféru.
Vývoj ap ikací pro p a formu iO
iPhone application development
6
Abstrakt
Cílem bakalářské práce je popis vývoje aplikace pro platformu iOS od úvodního návrhu
aplikace až po nasazení na App Store a související marketingové činnosti Součástí práce je
seznámení se zařízeními využívající operační systém iOS
První částí je seznámení s platformou iOS a rozdílností oproti desktopovým nebo
webovým aplikacím. Následuje popis návrhu mobilních aplikací a představení velkého
dopadu analytické a design části na následnou realizaci a úspěch celého projektu. Hlavní
částí je obecné představení jazyku, technologií a přístupů použitých pro vývoj Poté je
vysvětlena problematika provozních certifikátů a nasazení výsledného produktu na
odpovídající distribuční kanál Kapitola obsahuje také marketingový pohled na způsob
vývoje mezi ziskovou a PR aplikací V poslední kapitole jsou demonstrovány představená
témata a technologie popsané v této práci
K práci nebudou přiloženy zdrojové kódy platformy, protože se jedná o obchodní
tajemství společnosti eMan s r o Zdrojové kódy budou k dispozici k nahlédnutí při obhajobě
této závěrečné bakalářské práce
Klíčová slova: vývoj, design, analýza, návrh, aplikace, iPhone, iPad, Apple, iOS, Xcode, media
7
Abstract
The goal of my thesis is to describe the process of iOS application development from the
initial concept to the final deployment in the App Store, including related marketing
activities. Part of this thesis is a description of mobile devices using the iOS operation
system.
The first portion of my thesis introduces the iOS platform and points out the differences
between desktop and web applications. Following is a description of the development
process for mobile applications. The impact of the conceptual and design phases of the
development process on the final result and project’s success is also discussed The main
section of my thesis describes the programming language and the technologies and methods
used in the application development. Important topics used later in the real project are
described in more detail. The next section explains product certification and introduction of
products into the proper distribution channel. This part also includes an overview of
marketing, which is necessary for the successful outcome of the entire project. The final
section of my thesis demonstrates practical use of the topics described in the theoretical
section in a real project.
Project’s source code is not included because it is a private property of eMan Ltd.
Nevertheless, source code will be available for the review at time of my thesis defence.
Keywords: development, design, application, iPhone, iPad, Apple, iOS, Xcode, media
8
Obsah
1
Úvod .............................................................................................................................................. 11
2
Platforma iOS................................................................................................................................. 12
3
4
2.1
Co je třeba znát před vývojem .............................................................................................. 13
2.2
Rozdílnost při vývoji iOS ........................................................................................................ 14
2.3
iOS SDK .................................................................................................................................. 16
2.4
Materiály pro znalost vývoje ................................................................................................. 19
2.5
Milníky iOS systémů a podporovaných zařízení .................................................................... 20
Design aplikace .............................................................................................................................. 27
3.1
Znalost uživatelského rozhraní .............................................................................................. 28
3.2
Use case aplikace Things ....................................................................................................... 29
3.3
Typy aplikací .......................................................................................................................... 33
3.3.1
Užitková aplikace ........................................................................................................... 33
3.3.2
Produktivní aplikace ...................................................................................................... 34
3.3.3
Immersive aplikace ........................................................................................................ 35
3.4
Rozdílnost iPad UI .................................................................................................................. 36
3.5
Zmezinárodnění a lokalizace ................................................................................................. 37
Vývoj aplikací ................................................................................................................................. 38
4.1
Životní cyklus aplikace ........................................................................................................... 38
4.2
Objective-C ............................................................................................................................ 39
4.3
Správa paměti........................................................................................................................ 40
4.4
Cocoa Touch .......................................................................................................................... 42
4.4.1
Storyboardy ................................................................................................................... 42
4.4.2
Multitasking ................................................................................................................... 43
4.4.3
Printing .......................................................................................................................... 43
4.4.4
Push a local notifikace ................................................................................................... 44
4.4.5
Gesture recognizers....................................................................................................... 45
4.4.6
Peer-to-peer services .................................................................................................... 45
4.4.7
Standard system view controllers ................................................................................. 45
4.4.8
External display support ................................................................................................ 46
4.4.9
Cocoa Touch frameworky .............................................................................................. 46
4.5
Media..................................................................................................................................... 48
4.5.1
Grafické technologie...................................................................................................... 48
4.5.2
Audio technologie ......................................................................................................... 49
9
4.5.3
Video technologie.......................................................................................................... 50
4.5.4
AirPlay............................................................................................................................ 50
4.5.5
Media frameworky ........................................................................................................ 51
4.6
Core Services ......................................................................................................................... 54
4.6.1
iCloud ............................................................................................................................. 54
4.6.2
Auto Reference Counting .............................................................................................. 54
4.6.3
Bloky .............................................................................................................................. 55
4.6.4
Grand Central Dispatch ................................................................................................. 55
4.6.5
SQLite............................................................................................................................. 55
4.6.6
XML ................................................................................................................................ 56
4.6.7
Core Services frameworky ............................................................................................. 56
4.7
Core OS .................................................................................................................................. 59
4.8
GPS a geolocation .................................................................................................................. 61
4.9
iOS Accessories ...................................................................................................................... 63
4.10
Webové aplikace ................................................................................................................... 63
4.10.1
Výhody hybridní aplikace .............................................................................................. 65
4.10.2
HTML5 a limitace pro mobilní aplikace ......................................................................... 66
4.11
5
Jailbreak ................................................................................................................................. 69
Nasazení aplikace .......................................................................................................................... 72
5.1
iOS Provisioning Portal .......................................................................................................... 72
5.1.1
Vytvoření developer účtu .............................................................................................. 72
5.1.2
Vytvoření vývojového certifikátu .................................................................................. 72
5.1.3
Distribuční certifikáty .................................................................................................... 73
5.2
Retail business ....................................................................................................................... 74
5.3
Zakázkový business................................................................................................................ 77
6
Realizace praktické části ................................................................................................................ 78
7
Závěr .............................................................................................................................................. 82
8
Conclusion ..................................................................................................................................... 83
9
Seznam použitých zdrojů............................................................................................................... 84
10
Seznam použitých zkratek ......................................................................................................... 88
11
Seznam obrázků ........................................................................................................................ 90
10
1 Úvod
Několik měsíců před dobou stanovenou k výběru tématu bakalářské práce se mi naskytla
příležitost pracovat na vývoji pro mobilní platformu iOS Se zálibou využívání Apple zařízení,
jejich filozofie designu a vývoje jsem se pustil střemhlav do poměrně neznámého prostředí, se
kterým jsem se doposud nesetkal. Měl jsem praktické zkušenosti pouze s věcmi typu nízko
úrovňového jazyka C nebo webové front-end a back-end technologie. Vývoj mobilní aplikace je
velmi flexibilní a rozmanitý na použitý přístup nebo nabídnuté softwarové či hardwarové
technologie.
Společnost, ve které jsem začal vytvářet iOS aplikace, se zabývá převážně nativním
vývojem, což je z mého pohledu nejefektivnější a nejflexibilnější forma pro samostatnou iOS
platformu. Z pohledu businessu firmy by se daly využít jiné, rychlejší postupy, ale v mém případě
a zálibách je tento přístup naprosto dostačující Prvním projektem byla outsourcovaná aplikace
pro jinou firmou, na kterém se pokazilo snad vše, co by se pokazit mohlo Byla to bohatá
zkušenost jak čelit problémům od zadání, kooperace s jinou firmou, samostatného vývoje až po
následující kroky k vyřešení situace Když se na tento projekt dívám zpětně, tak vidím mnoho
částí, které jsem měl dělat jinak, efektivněji nebo si stát za svojí původní ideou.
V této práci popisuji celkový vývoj od analýzy až po marketing mobilní iOS aplikace Účelem
je získat povědomí, co toto zákoutí nabízí a jaké jsou strasti Protože se jedná o důmyslnou
strukturu kompilovaných knihoven s mnoholetým základem v podání Cocoa frameworku, je
tento vývoj a pochopení všech jeho částí velmi rozsáhlé Předmětem této práce není vysvětlit
všechna témata a technologie, ani nabídnout přesnou znalost některé z nich Jejich přesný popis
a důkladná dokumentace se nachází na oficiálních místech společnosti Apple nebo je poskytnuta
formou některých kvalitních publikací Kde získat znalosti je popsáno dále v této práci
Po přečtení teoretické části by měl čtenář získat ucelený pohled na celkový vývoj a nabýt
povědomí, pokud se chystá tímto vývojem zabývat, nebo najít shodné zkušenosti, pokud se jím
již zabývá Snažím se detailněji popsat hlavní problémy nebo přístupy, se kterými se v začátcích
vývojář může setkat a velmi povrchně ty, které si člověk musí projít samostatně a „vysekat“ se na
nich tak, aby plně pochopil jejich problematiku Práce je zaměřena převážně na představení
návrhářského pohledu pro vývoj a popisu použitých technologií Kromě teoretického pohledu
popíši jeden z praktických projektů, který jsem v rámci firmy realizoval před 4 měsíci
11
2 Platforma iOS
Mobilní platforma iOS je operační systém běžící na iPhone, iPod Touch, iPad a Apple TV
zařízení Byl vytvořen na základě znalostí a paradigma ze systému Mac OS X Nejedná se tedy
o žádného začátečníka vytvořeného z ničeho pro mobilní zařízení, jako je tomu v případě
platformy Android, WebOS, Symbian a mnoha dalších Vyznačuje se velkou stabilitou
a unifikovaným rozhraním oproti konkurenčním systémům Nabízí komunikační rozhraní
mezi hardwarovou a softwarovou částí daných zařízení s technologií umožňující tvorbu
nativních aplikací. [1][2]
Po uvedení prvního iPhone zařízení 9 ledna
7 byl systém nazýván neoficiálním
názvem OS X Nebyla možnost, jak jednoduše vytvářet aplikace, a jeden z argumentů
společnosti Apple byl, že je možné vytvořit webové aplikace, které budou vypadat jako
nativní Důvodů a spekulací, proč vzniklo iOS SDK, je mnoho a není třeba do nich zabíhat,
hlavní věcí je, že tato platforma 6 března
8 byla představena s novým jménem jako
iPhone OS a vlastním SDK (Software Development Kit) S příchodem dalších zařízení jako
iPad nebo Apple TV bylo logické, že není vhodné mít systém se jménem iPhone OS, proto
v červnu
1 byl systém přejmenován na název iOS Ochrannou známku pro toto jméno
odkoupil Apple od firmy Cisco Systems. [1]
Architektura iOS je v podstatě UNIX zastřešen několika vrstvami pro zachování
abstrakce celého vývoje Základním přístupem pro vývoj aplikací je vždy používat nejvyšší
možnou vrstvu pro implementaci aplikační logiky Jednotlivé vrstvy nabízí abstraktní
veřejné API rozhraní, které je pod povrchem optimalizováno v takovém rozsahu, jakému
nemůžeme v běžném vývoji za poskytnutých nákladů docílit Nejvyšší Cocoa Touch vrstva
poskytuje Objective-C API rozhraní pro většinu potřeb při vývoji aplikací Cocoa Touch je
identická kopie frameworku Cocoa z Mac OS, upravený pro mobilní zařízení bez několika
částí schopných fungovat pouze na desktopovém systému Je také možnost klesnout níže
například do Core Services nebo Core OS a využívat C API funkce z důvodu výkonnosti na
implementaci vlastních náročných potřeb Každá vrstva obsahuje několik frameworků
zastřešujících různé technologie nebo druhy implementace Využívání poskytnutého
rozhraní těchto frameworků se nazývá veřejné API, tento název je trošku nadsazený, ale ve
své podstatě mluvíme o používání zdokumentovaných metod frameworku Apple razí
pravidlo, že žádná aplikace by neměla využívat privátní API z důvodu jejich změn, v praxi to
vypadá tak že veřejné API se za celou životnost, včetně nových verzí operačního systému,
nemění Po několika verzích jsou některé veřejné API označeny jako zastaralé a je nabídnuta
12
novější varianta, ale i přes to jsou stále ve frameworku zachovány pro zpětnou
kompatibilitu. Oproti tomu privátní API se mění kdykoliv, jak to Apple uzná za vhodné a má
potřebu je předělat [3][4]
2.1 Co je třeba znát před vývojem
Pro nově příchozí vývojáře se zájmem vyvíjet iOS aplikace je nutné si uvědomit rozsah
a potřeby celého procesu vývoje Ač je iOS SDK vytvořen tak, aby lidé bez předchozí znalosti
pro Mac OS platformu mohli začít bez zábran vyvíjet aplikace, je zde i přes to několik
zádrhelů [1]
Primárním jazykem vývoje Cocoa Touch je Objective-C, je nazýván jako “přesný superset
jazyka C”, v normální řeči to znamená, že nad jazykem C je vytvořena tenká objektová vrstva
s vlastní syntaxí a design patterny ve formě jazyku Objective-C. Jeho tvorba a architektura
není v plenkách, jako je tomu u mnoha dalších na míru vytvořených jazyka pro mobilní
aplikace. První začátky jeho vývoje pochází z 8
let Pro nově příchozí vývojáře se na první
pohled může zdát velmi nestandardní z důvodu zápisu syntaxe volání metod nebo velkého,
na druhou stranu důmyslného, aplikování návrhových vzorů Je spousta velmi kvalitních
publikací pro naučení a jednoduché pochopení Objective-C. [1][5][6][54][55]
Pokud budeme chtít využívat oficiální nástroje, které jsou velmi kvalitní, pro tvorbu
nativních aplikaci, je nutné vlastni Macintosh počítač s procesory Intel Na jednu stranu se
jedná o stabilní platformu pro vývoj, na druhou o velké omezení pro nové lidi přicházející
z Windows Z tohoto důvodu vzniklo mnoho způsobů jak vytvořit nativní nebo webovou
aplikací bez nutnosti použití Mac počítače nebo Objective-C jazyka Zmiňuji se o nich ve
3. kapitole “Další možnosti vývoje”. [1]
S vlastnictvím odpovídajícího hardwaru a znalostí Objective-C budeme dále potřebovat
iOS SDK, který poskytuje všechny potřeby pro vývoj aplikací Tento balík je dostupný
zdarma po registraci na portále developer apple com Nejsme ale schopni vyvíjenou aplikaci
nahrát do reálného zařízení nebo ji publikovat přes distribuční kanál App Store Pro tuto
potřebu se musíme registrovat v jednom ze dvou Developer programů: [1][3]
1. Standardní program stojí $99 za rok a poskytuje technickou podporu, distribuci
přes App Store a hlavně schopnost testovat a ladit aplikaci na vlastním mobilním
zařízení než jen v simulátoru Tento program je určen pro jednoho vývojáře [1]
13
2. Firemní program stojí $ 99 za rok, je navrhnut pro firmy vytvářející vlastní inhouse iOS aplikace a App Store distribuci V tomto programu je možné přizvat více
vývojářů do týmu, kteří pracují na stejném projektu [1]
Nově příchozí člověk pro tvorbu iOS aplikací by měl mít znalost platformy, minimálně
z pohledu běžného uživatele Z praxe jsem se setkal s mnoha lidmi, kteří chtěli vyvíjet pouze
z důvodu dnešního boomu mobilních aplikací, ale nevlastnili žádné iOS zařízení
Problematickým faktorem je zde neznalost chování uživatelského rozhraní, možností co
systém může nabídnout a toho, co uživatelé nemají rádi Poté, co nováček překoná znalostní
bariery, musí se s těmito věcmi potýkat, ač mu mohou přijít z jeho pohledu nesmyslné
Nicméně výjimky existují asi tak, jako že firma najde zaměstnance podle jejich představ [1]
2.2 Rozdílnost při vývoji iOS
Bez ohledu na znalosti a zkušenosti nově příchozích lidí, je třeba mít na paměti několik
věcí, které se značně liší mezi vývojem iOS a desktopových aplikací
Pouze jedna aktivní aplikace
Mobilní zařízení má omezené prostředky na paměť, cpu a další Proto je koncept
systému vytvořen tak, že v jednom čase je aktivní vždy jedna aplikace S příchodem
multitaskingu ve verzi iOS 4 se může zdát, že běží několik aplikací najednou Není tomu tak,
dochází pouze k jejich zmražení s jinou zprávou od systému vůči aplikaci, aby byla možnost
se pro tento stav připravit Jsou možnosti jak nechat aplikaci běžet na pozadí, ale ty mají
značná omezení a striktní pravidla [1][3]
Pouze jedno okno
Oproti desktopovým aplikacím, kde máme několik různých oken s vlastní velikosti, v iOS
máme vždy pouze jedno okno pro jednu aplikaci s fixními rozměry podle displeje. [1][3]
Omezený přístup
Desktopové programy mohou libovolně komunikovat s hardwarem, měnit systémová
nastavení, přistupovat do všech míst na disku nebo v systému a v horších případech
způsobovat problémy nebo ničit okolní části V iOS je každá aplikace v tzv sandboxu, je to
prostor určený pro samostatnou aplikaci, ve své podstatě se jedná na UNIX systému o složku
mimo, ke které aplikace nemá přístup Komunikace se systémem a hardwarem prochází
přes veřejné API a není žádná jiná možnost, jak toto omezení obejít, pokud chceme aplikaci
schválit na App Store Z uživatelského pohledu je to velká výhoda z důvodu bezpečnosti
14
a stability Pro aplikace vlastní potřeby lze tato omezení obcházet, ale není to doporučené
[1][3]
Omezená odezva
Mobilní zařízení je navrženo tak, aby bylo svižné a rychle použitelné Modelový příklad,
uživatel v 1 vteřinách zjistí počasí, poté hned přepne do hry a v tom mu přijde SMS a on
přejde ze hry do SMS aplikace Každé spuštění a ukončení aplikace má pravidla na odezvu
Spouštění na úvodním načítacím okně může být maximálně
vteřin Taktéž po zrušení
nebo zavření aplikace je 5 vteřin na uložení stavu, dat a dokončení dalších kroků Po
překročení těchto stavů je aplikace zabita systémem bez ohledu na to, zda byly provedený
nutné kroky, o které se aplikace snažila. [1][3]
K zavření nebo pozastavení aplikace dochází v případě, že nám přijde SMS, příchozí
hovor, uživatel zmačkne “Home” tlačítko nebo se gesty pokusíme zobrazit multitasking bar,
popřípadě přesunout do jiného okna Během zavření dojde k okamžitému zrušení grafické
části aplikace a doba 5 vteřin je věnována na pozadí systému S příchodem multitaskingu
v iOS 4, má aplikace možnost zpracovat další úkony ve vynuceném background módu Máme
zde nějakou možnost prodloužit úkony při zavření, ale opět po překročení některých limit je
proces zrušen systémem [1][3]
Omezení velikosti displeje
S příchodem prvního iPhonu se jednalo o největší display na chytrých telefonech, který
má rozměr 3
x 48 pixelů (obrazových bodů) S příchodem iPhone 4 a nové technologie
v podobě Retina displeje se tato velikost zvětšila na 64 x 96 pixelů iPad 1,
a 3 má také
fixní rozměry, je zde větší možnost použitelnosti, ale i tak se nejedná o nikterak velkou
plochu Proto při návrhu aplikací je nutné dbát na smysluplnost rozložení uživatelského
rozhraní a toho, co uživateli poskytneme oproti desktopové verzi. [1][3]
Omezené prostředky systému
Mobilní zařízení mají velmi omezenou paměť, diskovou kapacitu a výkonnost cpu nebo
grafického procesoru v porovnání s desktopovými nebo notebook počítači. [1][3]
V současné době není situace tak kritická jako v začátcích počítačové éry, kdy jsme se
snažili zobrazit složitý graf na počítači s 48 KB paměti, ale za použití grafického rozhraní
můžeme velmi snadno přijít po prostředky systému [1]
15
V dnešní době, pro představu, má iPad 3. generace 1
4 MB RAM paměť, 1 GHz ARM
Apple A5X CPU společně s PowerVR grafickým čipem a až 64 GB SSD disk Ač zde máme
možnost 1 GB paměti a SSD disk, iOS systém nemá možnost swapování paměti Jedná se
o mechanismus, kdy nečinné části v paměti jsou zapsány na disk a paměť je tak uvolněna
pro další potřebu Proto je pro aplikaci dostupná vždy jen nepoužitá fyzická paměť Cocoa
Touch framework má mechanismus pro zasílání varovných zpráv na nedostatek paměti, při
obdržení tohoto varování by měla být implementována logika pro uvolnění dat Například
zrušit načtené obrázky, vyprázdnit data prostřednictvím ORM držené v paměti a podobně
Pokud je velikost paměti danou aplikací překročena, dojde k jejímu shození a uvolnění
veškeré paměti využívané touto aplikací [1]
Neexistuje Garbage Collection
Oproti Cocoa frameworku na desktopové verzi, Cocoa Touch nepodporuje Garbage
Collection Jedná se o mechanismus recyklování paměťových míst bez nutnosti explicitního
uvolnění Při vývoji tak dochází ke komplikaci v podobě správy paměti, ale benefitem jsou
větší paměťové prostředky které iOS aplikace mohou využívat [1]
Nové věci
Jak bylo v začátku zmíněno, Cocoa Touch neposkytuje některé desktopové části, jsou zde
také části které má navíc oproti Cocoa

Většina iOS zařízení má vestavěnou kameru a unifikovanou foto knihovnu

Využití geografické polohy skrze asistované GPS

Využití vestavěných polohových senzorů pro orientaci zařízení v prostoru
Rozdílný přístup
Mobilní zařízení je navrženo pro rychlé použití, nemá klávesnici nebo myš Uživatel
má možnost ovládat zařízení dotykem nebo pohybem, s těmito přístupy musíme počítat při
návrhu vlastních aplikací Hodně často dochází ke kopii webových formulářů, celých stránek
nebo kompletních desktopových aplikací přímo do mobilní aplikace velikosti rozměru
displeje. [3]
2.3 iOS SDK
iOS Software Development Kit obsahuje všechny potřebné věci pro vývoj nativních nebo
webových aplikací Seznam věcí, které spadají do vývojových nástrojů iOS SDK: [4]
16
Obráz k 1 - I us rac
D ba íku
[7]

Bohatá škála Cocoa Touch knihoven a další knihovny založené na UNIX platformě

Precizní Dokumentace, se kterou si zkušenější vývojář vystačí bez nutnosti použití
externích zdrojů informací

Vývojové prostředí Xcode, které je na míru vytvořeno pro vývoj Cocoa nebo Cocoa
Touch aplikací Obsahuje spousta prvků, bez kterých by vývoj nemohl být tak
plynulý Xcode popisuji v pozdějších kapitolách

Ladící prostředí Instruments, sloužící pro odladění paměťových, cpu, grafických,
datových a mnoha dalších částí Tento nástroj budu také dále detailněji popisovat.

iOS Simulátor, který je identickou kopií iPhone a iPad zařízení Jeho spuštění je
rychlé a pohodlné, proto je to ideální nástroj pro testování a ladění aplikací během
vývoje.
Obráz k 2 - Vývojové rozhraní Xcod
17
[7]
Obráz k 3 – adící nás roj Ins rum n s
Obráz k 4 – iO simu a or pro
18
[7]
s ování ap ikací
[7]
2.4 Materiály pro znalost vývoje
V dnešní době, kdy mobilní aplikaci jsou horkým tématem, až by se dalo říci bublinou,
která brzy splaskne, je spousta míst, odkud může nově příchozí člověk získat znalosti
Z těch serióznějších jsou to různé knížky převážně probírající celkovou začátečnickou
znalost iOS a také ty, které popisují konkrétní hlubší části jako například Core Data, Open GL,
Bonjour Networking atd. [1][8][9]
Nicméně já osobně považuji hlavním zdrojem dokumentaci k jednotlivým knihovnám
a několik Apple příruček pro řešení dané problematiky Většinou knihy popisující tyto
témata jsou pouze nafouknuté kopie originálních příruček Na “iOS Developer” portálu lze
stáhnout příklady kódu pro každý modelový případ Veškerá dokumentace, příručky
a příklady jsou aktualizovány s každou novou verzí nebo s opravou chyb.
S vývojovým nástrojem Xcode je možné velmi rychle a pohodlně přejít z kódu přímo
do dokumentace nebo příručky zabývající se danou problematikou [7]
Protože psané slovo není občas tak vystihující jako mluvené a názorná reálná ukázka,
Apple pořádá jednou ročně WWDC (Worldwide Developer Conference) konferenci v San
Francisku Prezentuje více než 1
přednášek z mnoha aspektů vývoje iOS Částí konference
je také přítomnost Apple inženýrů, kteří zodpovědí v laboratořích jakékoliv dotazy
a pomohou s praktickou částí Jejich počet byl v roce
konference je 5
8 kolem jednoho tisíce Kapacita
účastníků s cenou $1599 za lístek V posledních třech letech byla během
několika hodin vyprodána Veškeré materiály v podobě prezentací, ukázkových kódu,
získaných letáčků nebo informací předaných od pořadatelů konference, jsou pod přísným
NDA (non-disclosure agreement), se kterým musí účastníci souhlasit. [10]
19
Obráz k 5 – pp inž nýr pomáhá účas níkovi WWDC konference s vývojovými prob émy
[10]
Po ukončení konference jsou volně dostupné video záznamy všech přednášek, které je
možné stáhnout, pokud uživatel vlastní vývojářský účet Kvalita videí je vynikající
a přesahuje často kvalitu běžných přednášek na českých školách Videa z předchozích
ročníků let jsou dostupné z roku
1 a
11 Pro rok
9 je přepracovaná forma videí se
stejnou informační hodnotou, ale ne identickým záznamem přednášky [10][11]
2.5 Milníky iOS systémů a podporovaných zařízení
Tento přehled neslouží k vyčerpávajícímu statistickému výpisu, jsou zde uvedeny pouze
hlavní události pro každé zařízení a verzi systému Vyčerpávající přehled v různých
tabulkách lze najít na wiki v referencích nebo v menší informativní kvalitě na stránkách
Apple Frekvence a velikost paměti je určena podle testu nebo neoficiálních zdrojů. Apple
nezveřejňuje tyto informace, jeho filozofii je, že vývojář má k dispozici zařízení, které může
ovládat prostřednictvím zdokumentovaného API a také například přijímat hlášení
o nedostatku paměti Neměl by se spoléhat na teoretické číslo pro paměť nebo procesor.
20
Obráz k 6 – Časová osa pp zaříz ní s příchod m na rh
[12]
iPhone + iOS 1.0 [13] 29. června 2007

Začátek úspěšné cesty s prvním iPhone zařízením

Unikátní systém iOS prostředí a hrstka aplikací bez možnosti dalšího vývoje

Tento model komunikoval na datových technologiích GSM, GPRS a EDGE, se 1 8MB
RAM pamětí, 41 MHz ARM pod taktovaným procesorem a volbou mezi 4 - 16 GB
SSD disku.

Vynikal vizuálně s částečným hliníkovým krytem na zadní straně, v pozdějších
modelech byl tento kryt kvůli jeho váze odstraněn

V této verzi bylo představeno několik aplikací, které jsou brány jako inspirace vývoje
i v nynější době
iPod Touch (1. generace) [14] 5. září 2007
iPhone 3G + iOS 2.0 [13] 11. července 2008

Hardwarově se jednalo o stejnou konfiguraci telefonu jako předchozí model

Přibyla nová technologie datové komunikace ve formě UMTS HSDPA

Přidáno asistované GPS a možnost použít mikrofon ze sluchátek

Rozšíření velké jazykové podpory
21

Zlepšená vlastnost preview pro zobrazení většiny známých dokumentů (doc, xls, pdf,
txt a mnoho dalších).

Možnost importovat SIM kontakty

Fotoaparát zaznamenává geolocation údaj do výsledné fotky

Bonjour, VPN, SVG podpora a mnoho dalších

Dva měsíce před uvedením iOS
přibyla forma iOS SDK, plně zdokumentované API
pro tvorbu vlastních aplikací
iPod Touch (2nd generation) [14] 9. září 2008
iPhone 3GS + iOS 3.0 [13] 19. června 2009

Paměť rozšířena na 256 MB RAM, nový grafický čip a ARM Context-A8 CPU
podtaktovaný na 600 MHz s volbou SSD disku 8, 16 a 32 GB.

Přidána funkce kamery 48 p 30 FPS a rozlišení fotoaparátu zvýšeno na 3
Megapixely s vlastností autofokusu.

Přidána byla také uživateli nepochopitelně chybějící vlastnost Copy / Cut / Paste,
Apple byl v minulosti zdráhavý na nějaké rychlé řešení, ale nakonec přišel s dalším
unikátním způsobem pro mobilní zařízení

Podpora tetheringu přes Bluetooth 1 PAN síť nebo USB
iPod Touch (3. generace) [14] 9. září 2009
iOS 3.1.3 [12] 2. února 2010

Tato verze obsahovala pouze bezpečnostní a systémové vylepšení, ale je poslední
verzí, do které je možné aktualizovat na originálním iPhone modelu
iPad + iOS 3.2 [15] 3. dubna 2010

Další kus revolučního zařízení, který oživil trh s tablety, přišel v konfiguraci 9 7
palců ( 5 mm, 1
4x768) velkém displeji, 1 GHz Apple A4 procesorem a 256 MB
DDR RAM. Ostatní hardware byl srovnatelný s modelem iPhone 3GS.

Úprava iOS systému pro iPad, například možnost přidat do docku 6 ikon, landscape
orientace v menu a několik updatů včetně nových iPad verzí pro originální Apple
aplikace.
22

Byla představena aplikace iBooks s novým Books Store obchodem
iPhone 4 + iOS 4.0 [13] 24. června 2010 GSM, 10. února 2011 CDMA, 28. dubna 2011 bílý iPhone

Revoluční forma mobilního displeje s názvem Retina pro rozlišení 4 pixely na bod

Paměť zvýšena na 512 MB RAM s CPU procesorem Apple A4 podtaktovaným na 800
MHz.

Integrovány rozšíření pro nové datové technologie CDMA.

V arzenálu vychytávek přibyl gyroskop, dual-mic proti šumu, mikro SIM a zadní
LED světlo.

Zadní kamera zvýšena na 5 Megapixelu s možností zaznamenávat 7
také byla představena přední kamera pro video hovory s
p HD video,
3 Megapixelovým VGA
rozlišením

Zařízení vynikalo skleněným obalem s ocelovým rámem.

Update systému byl až do verze 4 dostupný pouze pro iPhone a iPod touch

Přidán multitasking aplikací

FaceTime pro video hovory přes Wi-Fi.

iAd mobilní reklamní síť podobná Google Adsense

Představení velkého množství API rozhraní pro vývoj nových aplikací
Apple TV (2. generace) [16] 1. září 2010

Předchozí, a také první verze televizního boxu byla postavena na Intel architektuře
a neobsahovala iOS systém, s touto verzí došlo ke kompletnímu přestavení
s procesorem Apple A4, 56 MB RAM, 8 GB NAND flash cache a vylepšenou Wi-Fi.

Zdroj k tomuto boxu za použití ARM architektury byl ze 46W snížen na 6W přípojku

Úvodní systém pro toto zařízení byl iOS 4 1 s možností přehrávat videa v maximální
kvalitě 7
p
iPod Touch (4. generace) [14] 9. září 2010
iOS 4.2.1[12] 22. listopad 2010

Představena bezplatná služba “Find My iPhone”, která doposud byla pouze pro
uživatele s Mobile Me účtem.
23

Ve verzi 4
bylo mnoho oprav a vylepšení, ale také zahrnovala chybu ve Wi-Fi
a VOIP komunikaci, a tak její vydání neproběhlo a byla uvolněna až další verze a tou
byla 4.2.1.

Tato verze byla poslední dostupnou verzi pro iPhone 3G a iPod Touch
generace.

Přidána technologie AirPlay pro streamování hudby, videa a obrázku přes Wi-Fi.

Přidána technologie AirPrint pro hladký tisk s úvodními HP tiskárnami
iPad 2 + iOS 4.3 [15] 11. Března 2011

iPad konfigurací vylepšen na 512 MB DDR2 RAM, 1 GHz dual-core Apple A5
procesor, přidán gyroskop sensor,
7 Megapixelu zadní kamera a
7 Megapixelu
přední kamera.

AirPlay video podpora pro 3rd party aplikace.

Představena služba Ping.

Vylepšen JavaScript “Nitro” engine, z pohledu webových aplikacích se jednalo
o velký pokrok

Streamování iTunes obsahu přes Home Sharing

Funkce personal Hotspot pro některé operátory

Přidána aplikace Photobooth a FaceTime do zařízení iPad
iPhone 4S + iOS 5.0 [13] 14. října 2011

Hardware získal nový dual-core Apple A5 procesor podtaktovaný na 800 MHz,
grafický čip s 9 násobným zlepšením oproti původní verzi a maximální velikost
SSD disku na 64 GB.

Přibyla podpora využívání ruské satelitní sítě GLONASS.

Zvýšené rozlišení kamery na 8 Megapixelu, ale také vylepšena velikost samotného
CCD čipu, která je zlepšením pro výsledné fotky z fotoaparátu

Kamera je schopna nahrávat 1 8 p a obsahuje algoritmus pro rozpoznávání tváří
implementovaný na úrovni hardwaru.

Bluetooth bylo vylepšeno na verzi 4.0.

Představení cloudové služby iCloud mezi všemi Apple zařízeními a Windows
systémy

Z pohledu iOS systému se jednalo o nejrozsáhlejší update za celou dobu Obsahoval
přes 1500 nových API pro vývoj a řadu dalších finančně a časově nákladných
vylepšení
24

FreePC synchronizace, která umožňuje synchronizovat iOS systém přes Wi-Fi s PC
nebo pouze s iCloudem.

Změněn mechanismus notifikací (notifikační center) přes notifikační lištu pro push
a local notifikace.

Přidána aplikace iMessage, prostřednictvím níž lze posílat zprávy mezi Apple ID
účty

Nakladatelé dostali možnost přidat své periodika do aplikace Newsstand, která
slouží doslovně jako novinový stánek a shlukuje všechny typy těchto aplikací na
jednom místě se specifickými možnostmi magazínů

Přidána aplikace Reminders, která je dle vlastního názoru jednou z designově
nejhorších aplikací, co Apple vydal Bohužel je defaultně v systému a nelze smazat,
její synchronizace je přes iCloud

Integrace Twitter účtu a příprava API pro další možné hráče (facebook, foursquare,
atd.)

Aplikace iPod kompletně předesignována a přejmenována na název Music

Mnoho znatelných úprav v původních aplikacích Mail, Safari, Contacts, Game Center
atd.

iPad
a iPhone 4S má možnost AirPlay zrcadlení obrazu na TV, videa jsou
přehrávána v 1 8 p

iPhone 4S přinesl virtuální inteligentní asistent SIRI s technologií Text-to-Speech
a Speech Recognition.
Apple TV (3rd generation) + iOS 5.1 [16] 7. března 2012

Systém obsahoval pouze novou podporu přehrávání 1 8 p videa pro Apple TV,
redesignované menu, podporu pro stahování filmů přes iCloud a možnost restartovat
zařízení

Hardware televizního boxu vylepšen single-core procesorem Apple A5, rozšířením
paměti na 51 MB RAM a možností přehrávat 1 8 p kvalitu videa
iPad (3rd generation) [15] 16. března 2012

Hardware vylepšen na 1 GB RAM, dual-core Apple A5X procesor který podle
různých testů obsahuje grafický čip srovnatelný s posledními verzemi NVIDIA karet.

Přidán modul pro Bluetooth 4.0 a představena technologie LTE pro 4G modely.
25

Zadní kamera dosáhla dramatického zlepšení na 5 Megapixelů a většího CCD čipu.

Retina display s rozlišením
48x1536 pixelů
Všechny verze iPod Touch zařízení následovaly necelé
měsíce po představení nového
iPhone modelu Jejich konfigurace byla srovnatelná s iPhony bez GSM modulů Po iPhone 4S
již žádný iPod Touch model nenásledoval [13][14]
Každá verze nového systému přinesla řadu vylepšených API pro vývojáře, jejich zpětnou
kompatibilitu a vynikající dokumentaci s přednáškami jak dané “featury” používat
Z pohledu samotného zařízení docházelo k lehkým user experience a user interface úpravám
model od modelu, intenzivním aktualizacím původních Apple aplikací, které jsou po celou
dobu existence vzorem mnoha lidí podílejících se na vývoji iOS aplikaci Provozní doba
baterie i přes větší nároky hardwaru a softwaru stále roste Jednotlivé technologie typu WiFi, Bluetooth, GPS a různé sensory jsou nahrazovány nebo přidávány s novějšími typy
[1][3][4][14][15]
26
3 Design aplikace
Z pohledu celého životního cyklu vytváření aplikace od příchodu unikátního, méně
použitelného nápadu nebo získané zakázky až po marketingovou kampaň a nové aktualizace
v pozdější fázi, je design aplikace tou hlavní částí, která má největší dopad na úspěch
finálního produktu
Pojem “design” zahrnuje business logiku, architekturu aplikace
a v neposlední řadě uživatelské rozhraní s grafickým vzhledem První dvě části jsou mnoha
lidem zabývajících se analýzou a architekturou velmi známé z desktopových a webových
aplikací Architektura reálné implementace je finančně a časově méně náročná, když dojde
k jejímu vytvoření na papír nebo odpovídající modelovací program a poté, po finálním
schválení začne reálný vývoj Mobilní aplikace jsou velmi malé a často k jejich úspěchu je
potřeba se nějakých funkčností vzdát Proto architektonické návrhy mohou být nižší úrovně
než je tomu například u informačních systémů, kde většina nákladů je vynaložena na
modelový popis, kterému plně rozumí jen lidé zasvěceni ve svém světě a slouží pro celkové
uchopení enormního rozměru systému [1][18]
Takto detailní navrhování uživatelského rozhraní, jako je tomu v případě iOS aplikací,
není tak úplně běžné v desktopových aplikacích Trochu lépe jsou na tom webové aplikace,
ale ve většině případů i tam je to pouze o subjektivním názoru velmi malé skupiny lidí nebo
uživatelského testu provedeného nad omezeným počtem účastníků Úplným opakem tohoto
přístupu je filozofie společnosti Apple, jejich vzhled aplikací má daná pravidla a masivně
podložené testy pro každou část S nadsázkou by se dalo říct, že žádný prvek se nenachází na
svém místě, tak aby tam neměl daný účel. [3][4][17]
S příchodem iPhone v roce
7 Apple dodal zařízení s úvodními aplikacemi jako je
Mail, Kalendář, Safari prohlížeč a mnoho dalších Tyto aplikace jsou ve své podstatě velmi
jednoduchou verzí desktopových aplikací, ale splňují všechny potřeby uživatelů využívající
mobilní zařízení pro posílání mailu, pořádání schůzek nebo prohlížení webového obsahu
Postupem času s přicházejícími aktualizacemi a novým zařízením, přicházely další
desktopové varianty pro iPad a iPhone Aplikace Pages, Numbers nebo Keynotes předvedly,
že také na mobilním zařízení může být pohodlné vytvářet dokumenty nebo prezentace,
kvality na kterou jsme zvyklí z desktopových stanic Tyto oficiální aplikace bývají často
inspirací mnoha UI UX designerů nebo analytiků zabývajících se uživatelským rozhraním
[1]
Základním pravidlem pro navrhování mobilních iOS aplikací je snaha poskytnout řešení,
ne funkcionality Když je návrhář na 99 okně ve své aplikaci Počasí a velmi přemýšlí kam
27
všechny filtry a volby ve formě tlačítek dá, měl by si připomenout, co se snaží uživateli
doručit a jestli by neměl spíše ubírat než přidávat obsah [18]
V následujících částech bude nastíněna příručka “iOS Human Interface Guidelines”, kde
většinu podložených UI částí pro návrh aplikací můžeme najít s praktickou Use Case
ukázkou aplikace Things. Také bude představeno, jaké jsou hlavní typy aplikací, a co by se
mělo dodržovat za účelem docílit vybraný typ Také zmíním specifické hardwarové prvky
mobilních aplikací, které neexistují nebo nejsou standardní na běžných počítačích
V neposlední řadě nastíním možnosti přístupnosti k lidem s handicapem, a jak je jednoduché
zahrnout tyto prvky do vlastních aplikací. [17][18]
3.1 Znalost uživatelského rozhraní
Existuje dokument zmíněný v úvodu kapitoly, “iOS Human Interface Guidelines”
Obsahuje většinu znalostí potřebných k pochopení filozofie návrhu aplikací a částečného
představení technických možností platformy pro tvorbu UI Jeho rozsah je kolem 15 stran,
kvalitně strukturovaným obsahem a výstižnými obrázky Platforma iOS je popularitou
rostoucí a moderní platformou Není tedy žádným údivem, že vývojem nad touto platformou
se zabývá také velké množství hloupých nebo naivních lidí Ať se toto tvrzení libí nebo ne,
postupem času je v praxi viditelné, že není tak daleko od pravdy Počet lidí podílející se na
vývoji iOS aplikací a počet čtenářů zmíněného dokumentu je rozdílný. [17][18]
Představím příklad z několika pozic vývoje, člověk zabývající se zpracováním
požadavků klienta, nemůže rámcově odhadnout časovou náročnost přání zákazníka
Technická implementace se později může lišit na naprostých detailech v řádech dnů, oproti
minutám kdyby byla zmíněná znalost Stejný dopad má design aplikace, který vznikne před
samotným vývojem a posléze až v částech vývoje, kdy je většina aplikace implementována
Mohou přijít na povrch další komplikace, které vyžadují přepracování již existujícího
Nebudu ospravedlňovat ani samotný vývoj v podobě „bušení“ zdrojového kódu, jsou
případy, kdy standardní prvky byly implementovány zcela znovu s horší funkčností nebo
rozdílným chováním oproti jejich existujícím variantám Není nic horšího, než když se začne
hádat vysoce postavený člen týmu se subjektivním názorem nebo argumentem z jiné
platformy, jak by výsledná věc měla vypadat Všem těmto věcem je snadné předejít,
přečtením si 15 stránek UI kuchařky a dostat povědomí o možnostech na poměrně stejnou
úroveň. [17][18]
28
Osobně jsem se tímto dokumentem v prvních částech vývoje také nezabýval a byl jsem
rád, že jednotlivé okna vůbec vyjíždějí, jakýmkoliv způsobem a aplikace je spustitelná
Postupem času jsem začal přemýšlet nad drobnostmi, jako jsou tlačítka a jejich pozice Proč
jsou napravo a ne nalevo Proč se zobrazí u jistých tlačítek takové okno a pro jiné se
zablokuje celé uživatelské rozhraní Jestli není špatně, že máme v aplikaci více „alert“ oken
než normálních oken a mnoho dalších věcí které by mi z uživatelského pohledu vadili
Časem jsem tento 15 stránkový dokument přelouskal s dalšími příručkami v podobě tisíce
stránek konkrétních technických možností vývoje nad iOS a návrhem UI Na konci bych mohl
dospět k názoru, že to co nejde na iOS udělat jednoduše, je ve většině případů koncepčně
špatně navrženo. Takto podobně vypadá cesta mnoha vývojářů pro iOS a zřejmě i jiných
mobilních platforem, je jen rozdílnost v době jak rychle se jedinec adaptuje na filozofii dané
platformy. [17][18]
3.2 Use case aplikace Things
Desktopová Mac OS aplikace Things od firmy Cultured Code je populární task
manager V roce
9, během Apple WWDC konference, vyhrála tato společnost ocenění
Apple Design Award za nejlepší návrh iOS aplikace V rámci přednášky byly prezentovány
důvody a dopady změn, které byly při návrhu aplikace vykonány Představím zde kroky, se
kterými se autoři potýkali při vývoji této aplikace, a co se vůbec bralo v úvahu Při představě,
že se snažíme zredukovat desktopovou aplikaci do velikosti necelých 1 x6 cm, je pro mnohé
složitým úkolem [19]
Obráz k 7 – Ikona aplikace Things
[19]
V začátcích byla snaha o vytvoření podobného vzhledu jako má desktopová aplikace
Things Tento vzhled vypadal dobře, ale sami autoři cítili, že neodpovídá tomu, na co jsou
iPhone uživatelé zvyklí Proto vytvořili několik dalších návrhů ve formě skic [19]
29
Obráz k 8 – růběh návrhu mobi ní ap ikac od d sk opového až po výs dný vzh d
[19]
Jedním z hlavních návrhových rozhodnutí, byl výběr navigace S tímto problémem se
setkává spousta lidí při návrhu různorodých aplikací V případě Things, se autoři
rozhodovali mezi použitím Tab Baru nebo Toolbaru Autoři původně zamýšleli použití Tab
Baru, protože jeho využití znatelně rozděluje tematické části aplikace [19]
Obráz k 9 – Návrh využi í Tab aru
[19]
Brzy ale dospěli k závěru, že v mobilní aplikaci není dostatek místa a uživatelé
potřebují ikony pro manipulaci vybraného obsahu (vytvoření úkolu, označení, přesunutí,
nastavení, …) Tyto ovládací prvky museli být snadno dostupné Také dospěli k názoru, že
30
kategorizace aplikace má více než 5 částí, a tak by 5. a další následující byly schovány
v poslední ikoně prezentující „Další“ obsah [19]
Obráz k 10 – Návrh a r a izac využi í Too baru
[19]
Další částí aplikace bylo vytvoření nového úkolu V první verzi bylo implementováno
uživatelské rozhraní pro rychlé přidání, ale ve své podstatě nebylo rychlé, protože uživatel
musel tapnout na ikonu „+“, následně na vybrané pole a teprve pak mohl začít psát Proto se
snažili najít řešení, jak by uživatel mohl rovnou začít přidávat nový úkol Chtěli na jednu
stranu zabránit zbytečným přetapnutí do jiného pole a na druhou stranu mít vše po ruce.
Proto vytvořili buňku, která po tapnutí zobrazí rozšířené nastavení, a bez něj je uživatel
schopen rovnou vyplňovat název rychlého úkolu [19]
Obráz k 11 – Návrh a imp m n ovaný vzh d nového úko u
31
[19]
Obráz k 12 – Návrh a r a izac vy vář ní nového úko u
[19]
Obráz k 13 – Op ima izovaný návrh a r a izac nového úko u v v rzi 1.1
[19]
Těchto několik částí je pouze špička ledovce z celého návrhu aplikace Je to ale
dostatečné pro nastínění problémů, které je nutné řešit v rámci vývoje na iOS Rychlé
náčrtky, popřípadě nefunkční UI s prezentací prvků pro živější představu, zabere naprosté
minimum času v porovnání s tím, kdy se vytvoří plně implementované UI, a poté dojde
32
k jeho předělání Vzpomínám si na situaci, kdy jsme u jednoho projektu použili animace
u tabulkového seznamu a následně přidávali více logických úkonů a funkcionalit, které
v začátku nebyly zmíněny Navrhovalo se doslova za pochodu Došlo to do fáze, kdy nebylo
možné animace používat a celé UI se muselo přepsat Spousta promarněného času
v porovnání s tím, jak malá byla výsledná aplikace a jak jsme se mohli všem problémům
v začátcích vyvarovat Ne vždy lze takto přemýšlet a navrhovat, ale je nutné se o to
minimálně snažit [19]
3.3 Typy aplikací
3.3.1 Užitková aplikace
Užitkové aplikace poskytují uživateli možnost rychle přistoupit ke specifickému typu
informací nebo provést velmi specifickou úlohu Tento typ je zaměřen na jednu jedinou věc
a tou je rychlé použití v řádech několika vteřin Názorným příkladem, který zde popíši, je
Apple aplikace Weather (Počasí) Tento druh by měl splňovat 3 základní části: velmi rychlé
načtení, jednoduchý vzhled a intuitivní navigaci. V neposlední řadě také standardní
uživatelské rozhraní. [17][18]
Rychlé načtení
Aplikace musí být připravena hned po prvním načtení, většina uživatelů má omezený
čas, který může aplikacím věnovat Tento přístup je preferován pro většinu aplikací, ale pro
Utility aplikace je zásadním Doba spouštění by neměla trvat déle než doba využití aplikace
Nastíním modelový příklad nad zmíněnou aplikací Počasí [17][18]
Uživatel má dilema ve výběru oblečení Sáhne tedy po telefonu a spustí aplikaci
Počasí Instantně mu naběhne v řádech desetinách vteřin, předpověď s graficky a textově
informativní hodnotou, pro jeho polohu zjištěnou přes geolocation Jediným swipem prstu,
může jeho zvědavost zjistit jaké je počasí v jiných místech světa, z předem definovaného
seznamu Následně je aplikace zavřena a uživatel pokračuje výběrem oblečení Doba využití
aplikace nepřekročila ve většině případů déle než 5 vteřin [18]
Jednoduchý vzhled a intuitivní navigace
Po zobrazení a načtení údajů o počasí, je třeba jejich stručná a výstižná reprezentace
V mnoha situacích má uživatel opravdu jen jednotky vteřin a raději aplikaci zavře
a nepoužije, než aby zdlouhavě hledal Grafická prezentace, jako je tomu u tématu
33
zaměřeném na počasí, často vystihne situaci mnohem lépe, než textová forma V rámci
navigace by se uživatel neměl cítit nejistě a jeho první dojem by měl odpovídat funkcionalitě
pracovního toku aplikace [18]
Standardní uživatelské rozhraní
V této části může nadpis klamat, ale ani Počasí není výjimkou v použití standardních
prvků Prezentace dat vlastní grafickou formou je jedna věc, ale navigace mezi okny
v podobě Page Control nebo nastavení za použití informačního tlačítka, jsou základní věci, se
kterými je uživatel seznámen a očekává jejich standardní chování [18]
Existují samozřejmě výjimky, zaleží jen na samotných autorech dané aplikace, jak
moc seriózní a užitkovou aplikaci chtějí vytvořit Příkladem je úkolovník Clear Vyznačuje se
unikátním chováním, vlastní navigací a netypickým ovládáním. Zřejmě neosloví tolik
uživatelů jako je to u aplikace Počasí, ale minimálně najde mnoho spokojených uživatelů,
kteří očekávají tu onu výjimku. [20]
Obráz k 14 – Ov ádací
s a ap ikac
ar
[20]
3.3.2 Produktivní aplikace
Produktivní aplikace se oproti užitkovým aplikacím vyznačují rozmanitými
možnostmi a obsahují vše potřebné od sociální interakce skrze facebook až po mobilní
bankovnictví Čas strávený nad využitím těchto aplikací se liší v důsledku úloh, které
vykonáváme V případě úkolovníku nebo přečtení emailů to může být v řádech vteřin, až po
psaní dokumentů nebo komunikaci přes Skype, popřípadě sociální sítě, dosahujeme desítky
minut. [18]
34
Specifikace tohoto typu je velmi rozdílná, ale nejvýstižnější části by se dali shrnout
do dvou bodů, kterými je hierarchická struktura a zkratky pro ovládání [18]
Hierarchická struktura
Téměř všechny produktivity aplikace mají hierarchickou strukturu složenou ze
seznamu položek a detailního přehledu Seznam je často tvořen scrolovatelným prvkem
s jednotlivými položkami v podobě tabulkového listu, který je základním prvkem většiny
standardních iOS aplikací Z každé položky vede hierarchie na detailní přehled v podobě
jednoho okna s možností scrolování [18]
Většina produktivity aplikací využívá horní navigační lištu, která zastřešuje celý tok
hierarchie v unifikovaném rozhraní Výjimkou není ani tabulka složená ze
až 5 ikon na
spodní části UI, která logicky odděluje části aplikace podle výstižné ikony a popisku [18]
Zkratky pro ovládání
Produktivní aplikace často vyžadují zadat textovou hodnotu pro zaslání emailu,
vyhledávání nebo vyplnění formuláře Zadávat text na mobilním zařízení s rozměry
dotykové klávesnice není nic pohodlného, proto je dobré tento úkon minimalizovat jak to
jen jde. [18]
Uvedu příklady existujících řešení Pro vyplnění emailové adresy máme možnost
zapsat několik začátečních znaků a zbytek je nám napovězen, ušetříme psaní převážné části
textu Oprava textu je dokonce standardně vestavěna v iOS systému Ve formuláři udávající
pozici z místa do místa, je možnost předvyplnit startovní místo podle geolokace nebo
předdefinovaného seznamu V dlouhém seznamu hodnot lze využít vyhledávací rozhraní se
standardní nebo vlastní logikou, než scrollovat napříč seznamem o řádu tisíce hodnot. [18]
3.3.3 Immersive aplikace
Aplikace tohoto typu se vyznačuje vtáhnutím uživatele do děje Příkladem mohou být
hry, vykonávání speciálních úloh nebo přehrávání medií Typická doba využití je v řádech
minut až hodin Různorodost a tenká hranice, kdy se jedná o Immersive aplikaci nelze
jednoznačně určit, ale hlavními body tohoto typy jsou: Zaměření se na obsah a přizpůsobený
uživatelský požitek [18]
35
Zaměření se na obsah
Veškerá plocha displeje je věnována obsahu, který je hlavní věcí této aplikace Pro
hry, přehrávání medií nebo čtení knížek, dochází taktéž ke schování status baru se stavem
baterie, času a mnoha dalšími hodnotami Nastavení a různé volby jsou dostupné, ale
nenacházejí se v aktivním obsahu Například v přehrávání videa máme celý display věnován
pouze videu, po tapnutí získáme možnosti na zobrazeném panelu jako je pauza, zastavení
videa, ovládání hlasitosti atd. [18]
Přizpůsobený uživatelský požitek
Tento druh aplikací vytváří vlastní uživatelské rozhraní a rozdílné chování uživatelů,
které se liší od popsaných standardu v HIG dokumentu Často bývá tendence vytvořit
každou aplikaci jako Immersive, ale z popisu předchozích dvou typů, by již zde mělo být
patrné, že pro vytvoření úkolovníku bychom se neměli snažit o tento typ a proč [18]
3.4 Rozdílnost iPad UI
Stejně tak jako je kladen specifický důraz designu na webové stránky, iPhone zařízení
nebo desktop aplikace, iPad není výjimkou Nemohu zde dostatečně naznačit fakt, že iPad
není iPhone položený 4x vedle sebe Někteří mají tendenci recyklovat jednotlivé okna
iPhone aplikací a použít je pro iPad aplikaci nebo vytvářet větší uživatelské rozhraní, které
má stejnou strukturu a vzhled, jen je všude víc místa V konečném produktu bude výsledná
aplikace méně nebo spíše vůbec ne použitelná, ale její uživatelský dojem a všechna ta
pravidla, která jsem naznačoval v předchozích částech, budou pryč [1][3][17][18][23]
Zodpovědnější designeři věnují částem navrženým pro iPad mnohonásobně více času,
display je větší, nabízí jiné možnosti a je zde k zachycení více detailu, které jsou v podání
iPhone zařízení na čtvrtinové ploše iPhone aplikace jsou často pouze v portrait orientaci,
oproti tomu iPad aplikace bývají ve všech 4 orientacích, protože iPad prosazuje myšlenku, že
zařízení nemá žádnou základní orientaci, uživatel ho může vzít z jakékoliv pozice a aplikace
by se měli natočit odpovídající orientaci [1][3][17][18][23]
Z toho je patrné, že vytvářet uživatelské rozhraní pro iPad je jak po stránce návrhu, tak
po implementační části časově náročnější než iPhone aplikace Tato myšlenka a zbytečných
desítek hodin práce navíc se pro ne-majitele iOS zařízení může zdát jako rozmazlenost iOS
uživatelů Z části je to pravda, uživatelé iOS zařízení jsou hýčkáni intuitivním designem
36
a funkčností pro dané zařízení, ale tyto prvky jsou částmi úspěchu, na kterých si iOS zařízení
staví a všechny aplikace, které se chtějí svést na vlně popularity mobilních přístrojů iOS
[1][3][17][18][23]
3.5 Zmezinárodnění a lokalizace
Tato část se velmi podobá tomu, co se děje u webových stránek, možnost poskytnout
stejnou aplikaci v různých jazycích a upravených formátech pro daný kraj V podání mobilní
iOS aplikace nastávají komplikace se zahrnutým počtem regionů a upraveného obsahu
v jiných částech světa Apple během schvalovacího procesu důkladněji testuje aplikace, které
mají více jazykových mutací nebo poskytují obsah do míst typu Izrael nebo Čína
Odmítnutím aplikací se Apple brání proti právním útokům ve zmíněných zemí, v každé zemi
jsou jiné místní zákony a u citlivého obsahu nemusí autoři vždy tyto části dodržovat, ať již
cíleně nebo nevědomě. [1][3][18]
Přizpůsobení „zmezinárodnění“ ve formě číselných formátů, typu použitého kalendáře
nebo dalších věcí, je jednoduchou záležitostí v implementační části Lokalizace je ještě
jednoduší pro způsob implementace, její práce spočívá pouze v samotném překladu textů
a následného ověření aplikace, že všechny texty odpovídají kontextu aplikace [1][3][18]
37
4 Vývoj aplikací
4.1 Životní cyklus aplikace
U iOS aplikace je nutné vědět, zda běží v popředí nebo v pozadí Zdroje na mobilním
zařízení jsou velmi limitované a aplikace se chová rozdílně v pozadí než v aktivním stavu
Operační systém také limituje, co je aplikace schopna na pozadí vykonávat z důvodu zvýšení
životnosti baterie a dodání více prostředků jiné aplikaci, která je právě na popředí [4]
Během aktivního stavu aplikace systém zasílá dotykové události ke zpracování
Mechanismus ve frameworku UIKit zaštiťuje většinu složité práce k zasílání specifických
událostí ke zvoleným objektům Vše, co je třeba ze strany programátora udělat, je pouze
přepsání odpovídajících metod [4]
Aplikace se vždy nachází v jednom stavu nebo přechází z jednoho do druhého Například
pokud uživatel zmačkne „Home“ tlačítko nebo nastane příchozí hovor, dosavadní stav běžící
aplikace se změní [4]

Neběžící aplikace - aplikace doposud neběží nebo běžela, ale byla systémem
přerušena

Neaktivní - aplikace běží v popředí, ale nepřijímá právě žádné události Tento stav
bývá dočasný jako přechod mezi jinými stavy

Aktivní - aplikace běží v popředí a přijímá události Toto je normální stav běžící
aplikace.

Na pozadí - aplikace běží v pozadí a provádí část kódu Většina aplikací po vypnutí
ještě chvíli setrvá v pozadí, aby douložili většinu potřebných věcí, a následně jsou
vypnuty Je zde ale možnost pro vyžádání více času, aby nedošlo k přerušení aplikace
po překročení limitního času Poslední variantou jsou aplikace, které byly úmyslně
odeslány na pozadí pro jeden z registrovaných stavů módů a v tomto stavu
setrvávají, dokud nejsou opět aktivní

Pozastaveny - aplikace je v pozadí, ale nevykonává žádnou činnost Systém do
tohoto stavu přesune aplikace bez upozornění, jejich instance ale zůstává v paměti
Pokud dochází k paměťovým nedostatkům, systém má možnost tyto pozastavené
aplikace zrušit a získat tak jejich využívanou paměť.
38
4.2 Objective-C
Jazyk Objective-C je jednoduchý počítačový jazyk, stvořen pro programování
sofistikovaných objektově orientovaných programů Je ve své podstatě rozšířením
standardního jazyka C Další přidané části pochází z jazyka Smalltalk, jednoho z prvních
objektově orientovaných jazyků Představím zde pouze ty nejvýraznější rozdílnosti oproti
jiným programovacím jazykům [5][6]
Jedná se o kompilovaný jazyk, který pro svůj chod potřebuje runtime systém Ten
bychom si mohli představit jako operační systém umožňující chod zkompilovaných aplikací
v Objective-C. [5][6]
Každá třída obsahuje deklarační ( h) a implementační ( m) soubor Je možná pouze
dědičnost jedné nadřazené třídy, není zde tedy mnohonásobná dědičnost jako je zvykem
například v jazyce C Tento jazyk, díky svojí historii a zastřešení společností Apple, má
bohaté provázání mnoha návrhových vzorů Velká část z nich se zabývá oddělením
dědičnosti, jako jsou například vzory Delegát, Kategorie, Notifikace, Observer, Responder
Chain, Flyweight a mnoho dalších
Tato sofistikovanost komplikuje přehlednost
a porozumění kódu začínajícími programátory bez znalostí nebo celkovém povědomí
o návrhových vzorech [5][6][54][55]
Pro vytvoření objektu je třeba alokovat paměť a zavolat inicializační metodu dané
třídy, tím dojde k vytvoření instance, která je datového typu “id” Nejedná se o nic jiného než
ukazatel v paměti, kde se nachází daný objekt Objective-C je dynamicky typový jazyk, proto
všechny ukazatele mohou za běhu programu odkazovat na různě typové hodnoty V rámci
programování za použití vývojového rozhraní Xcode, většinu deklarací provádíme typově,
a kompilátor nám je tak schopen sdělit informaci zda výsledné sestavení kódu dává smysl
nebo se snažíme přiřazovat rozdílné typy a volat neexistující metody Pokud použijeme
základní typ “id” například místo NSString, kompilátor nemůže poznat, o jakou proměnnou
se jedná a nenapoví nám, jestli volané metody existují nebo ne Z toho plyne, že všechna
volání metod jsou prováděna dynamicky. [5][6]
Metody v Objective-C mohou být instanční a třídní, oproti jiným jazykům se na první
pohled liší svojí syntaxí [53]
+ (NSString *)localizedNameOfStringEncoding:(NSStringEncoding)encoding;
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;
39
Vykonání metod nad objektem neboli instancí třídy je zajištěno zavoláním zprávy
nad objektem.
[mutableString insertString:@"abc" atIndex:0];
Jak je vidět, v tomto příkladu jsem nad objektem mutableString zavolal metodu
insertString:atIndex s dvěma argumenty Zpráva je typu selector a může být také
uchována jako proměnná typu SEL, poté je možné nad daným objektem vykonat selector.
SEL selector = @selector(showStatisticsWithUserId:);
[object performSelector:selector withObject:1];
[object performSelector:@selector(showStatisticsWithUserId:) withObject:1];
[object showStatisticsWithUserId:1];
Všechny tyto příklady volání metod jsou analogické
Objective-C také podporuje tečkovou syntaxi pro proměnné hodnoty, která je alternativou
syntaxe oproti hranatým závorkám
x = person.address.street.name;
x = [[[person address] street] name];
y = window.contentView.bounds.origin.y;
y = [[window contentView] bounds].origin.y;
V obou případech se jedná o analogický zápis, tečkovou syntaxi můžeme
kombinovat se závorkami
Tyto, na první pohled exotické věci, jsou pouze nástin rozdílnosti Objective-C
oproti jiným programovacím jazykům Během programování iOS je k dispozici velká škála
frameworků, která je jen velkou kolekcí Objective-C tříd Programátor má k dispozici
header soubory a může snadno zobrazit všechny veřejné metody dané třídy, tyto metody
jsou již v úvodu zmiňované veřejné API Pro efektivní a smysluplné programování v jazyce
Objective-C je zapotřebí pochopit minimálně základní návrhové vzory tohoto jazyka Celý
iOS framework je na nich založen a běžný zádrhel programátorů je právě v neznalosti
zmíněných návrhových vzorů a důvodů typu, proč se někdy některá metoda zavolá a jindy
ne, nebo proč a kdy se musí volat rodičovská metoda [5][6][55]
4.3 Správa paměti
Správa paměti je jednou ze základních věcí pro úspěšné a bezproblémové programování
Je nutné zajistit, aby každý objekt, pro který bylo na začátku potřeba alokovat paměťový
prostor, vrátil, neboli dealokoval paměť zpět k využití [1][5][6]
40
Správa paměti je založena na počítání referencí objektu (anglicky reference counting
nebo retain count) Po založení objektu je jeho retain count roven jedné Za použití metody
release snížíme zase toto číslo o jedna a pokud retain count je roven nule, dojde k dealokaci
objektu Za použití metody retain, dojde ke zvýšení retain countu o jedna nahoru Nikdy by
neměla být volána dealokace objektu manuálně, kdyby byl retain count vyšší než nula
a došlo k dealokaci objektu, ostatní objekty odkazující na tento prostor v paměti by s
největší pravděpodobností hodili chybu během chodu programu [1][5][6]
Car *car = [[Car alloc] init]; // retainCount = 1
car.name = @”Porsche”;
park.bestCar = car;
[car release];
// retainCount = 2
// retainCount = 1
V tomto příkladu byl vytvořen objekt Car a přiřazen property objektu park Ten si zvýšil
jeho retain count o jedna a následně na posledním řádku došlo ke snižení retain count
prostřednictvím metody release Nedošlo ale k dealokaci objektu car, protože je jeho retain
count stále roven jedné Až zanikne objekt park, dojde také k zavolání release nad property
bestCar která obsahuje referenci na objekt car Pokud žádný jiný objekt nezvýší retain
count objektu car, dojde k jeho dealokaci.
Jiným názorným příkladem je setter metoda pro property proměnných Objective-C
podporuje syntaxi @synthesize nazevProperty; a takto dojde k automatickému vytvoření
setter a getter metod Někdy je ale potřeba vytvořit si tyto metody podle vlastních potřeb,
nicméně správa paměti musí být zachována
- (void)setName:(NSString *)str {
if (str != name) {
[str retain];
[name release];
name = str;
}
}
V tomto triviálním příkladu byl napřed zvýšen retain count objektu str o jedna.
Následně došlo k zavolání release pro objekt v proměnné name, který byl uvolněn, pokud
jeho retain count klesl na
A v posledním kroku došlo ke kopii ukazatele z argumentu str
do proměnné name Celý proces je v podmínce pro ověření že se nesnažíme přiřadit stejný
objekt, který již v proměnné name existuje.
41
Objective-C nabízí tři mechanismy pro správu paměti:

Manual Reference Counting (MRC), klasický způsob správy paměti, který byl
představen v předchozích odstavcích. [21]

Auto Reference Counting (ARC), jedná se o stejný mechanismus jako manuální
počítání referencí, ale není spravováno manuálně programátorem, nýbrž
kompilátorem během kompilace zdrojového kódu Programátor nemusí nikdy, neboli
nesmí nikdy, psát volání release metody nad objekty Výhodou tohoto mechanismu
je, že správa paměti využívá plný potenciál manuálního počítání referencí, než je
tomu v případě garbage collection Využití ARC má dokonce vyšší výkonnost oproti
MRC. Kompatibilita tohoto mechanismu je od verze iOS 4.2.1. [21]

Garbage collection, který pro iOS neexistuje z důvodu neúsporného uvolňování
paměti a omezených zdrojů na mobilním zařízení [4]
4.4 Cocoa Touch
Vrstva Cocoa Touch obsahuje klíčové frameworky pro vytváření iOS aplikací Tato
vrstva definuje základ aplikační infrastruktury a podporu pro klíčové technologie jako
multitasking, dotykové události, push notifikace a mnoho high-level systémových služeb [4]
4.4.1 Storyboardy
V iOS 5 byl představen mechanismus storyboardů pro navrhování uživatelského
rozhraní oproti jednotlivým nib souborům Před existencí storyboardů bylo třeba vytvořit
několik nezávislých UIViewController tříd s jejich nib soubory s následnou relací
provedenou v kódu Nebylo možné představit si celou hierarchii aplikace. Storyboardy
umožňují ve vývojovém rozhraní Xcode vytvořit všechna okna aplikace s přechodem mezi
nimi, které jsou nazývány segues Je tak zachycen celý tok a uživatelské rozhraní aplikace
[4]
Je možné využít jeden storyboard soubor, ve kterém se nachází všechna okna
aplikace nebo použít více storyboard souborů Během kompilace dochází k rozdělení všech
oken na nezávislé soubory, jako tomu bylo před příchodem storyboardu, z důvodů
výkonnosti a toho, jak program za chodu načítá jednotlivé okna Pohodlný přístup k obsahu
storyboardu z kódu aplikace je zajištěn UIKit frameworkem [4]
Nevýhodou tohoto tvoření aplikací, je zpětná kompatibilita Projekty postaveny za
použití storyboardu jsou schopny provozu pouze na verzi iOS 5 a vyšší [4]
42
4.4.2 Multitasking
Aplikace postaveny na verzi iOS 4
a vyšší, nejsou po stisknutí „Home“ tlačítka na
zařízení vypnuty, ale dojde k jejich pozastavení a uchování v paměti Multitasking zaštítěn
UIKit frameworkem podporuje hladký přechod mezi pozastaveným stavem, aktivním
stavem nebo během na pozadí Za účelem získání více paměti a větší životnosti baterie,
může systém libovolně aplikace nacházející se v pozastaveném stavu zrušit, a získat tak plné
prostředky obsazeny rušenou aplikací Toto chování pozastavené aplikace dovoluje její
rychlé spuštění do míst, ve kterých byla přerušena Aplikace mají možnost běžet v pozadí
jako je tomu u jiných platforem, nicméně tento stav má restrikce aby nedocházelo k plýtvání
zdrojů [4]

Aplikace může požádat o rozšiřující čas na vykonání určitého úkolu

Aplikace může nahlásit potřebu svého chodu v pozadí, jako specifická služba, která
se periodicky spouští na pozadí

Aplikace může použít lokální notifikace pro vygenerování uživatelských výstrah ve
vyhrazeném čase, zda aplikace běží nebo nikoliv.
Navzdory stavu, ve kterém se aplikace nachází nebo přes který přechází, celý
mechanismus nevyžaduje práci na straně programátora Systém pomocí delegátu v hlavním
AppDelegate třídě volá jednotlivé delegátní metody pro vykonání částí kódu, týkajících se
různých stavů [4]
4.4.3 Printing
Verze iOS 4.2 uvedla UKit podporu pro tisk. Aplikace tak mohou zaslat obsah
k bezdrátovým tiskárnám v dosahu Většinu částí komunikace a zobrazení unifikovaného
uživatelského rozhraní pro nastavení tisku a výběru tiskárny, zaštiťuje UIKit Z pohledu
programátora jsou dostupné třídy pro prezentování výběru tiskárny a spuštění samotného
tisku Aplikace má možnost nastavit jeden ze tří typů způsobů tisku:

Tisknutí jednotlivých souborů - dokumenty typu pdf, doc nebo různé formáty
obrázků

Formátovaný tisk - poskytuje možnost vlastního sestaveného textu nebo HTML
obsahu.

Renderovaný tisk - přináší plně přizpůsobitelný tisk podle přání programátora
43
Většina aplikací od společnosti Apple poskytuje možnost tisku s renderovaným
výstupem Například při procházení map je možnost vytisknout větší zobrazenou plochu,
než tu, kterou je vidět na displeji telefonu Na stránce se nachází další textové informace a za
použití navigace, několik obrázků map, kterými v různých místech budeme přecházet. Tento
způsob je ideální formou jak prezentovat přes tisk více obsahu, než je možné vidět na
displeji. [4][21]
4.4.4 Push a local notifikace
Push notifikace byly představeny ve verzi iOS 3 , za použití Apple Push Notification
Service (APNS) lze informovat uživatele o nových zprávách i když aplikace zrovna neběží
Z pohledu tvůrce aplikace lze docílit zobrazení textové zprávy v upozorňovacím okně,
nastavení badge u ikony aplikace nebo přehrání krátké zvukové stopy [4]
Mechanismus push notifikací pracuje následovně, aplikace po jejím spuštění zašle
APNS serveru dotaz na registraci push notifikace s vlastním UUID (identifikační číslo
zařízení) APNS v odpovědi zašle token pro push notifikace, který je unikátní na instanci
systému, to znamená, že pokud dojde ke zformátování systému, bude vygenerován nový
token a předchozí zprávy budou ztraceny Následně po získání tokenu je třeba tento token
zaslat vlastnímu back-end serveru, který uchovává databázi tokenů Pro zaslání notifikace
tento vlastní server pošle zprávu APNS serveru se seznamem tokenů a striktně definovanou
strukturou notifikační zprávy APNS server doručí všem požadovaným tokenům, které jsou
registrovány push notifikaci jednotlivým zařízením Aplikace může být neaktivní nebo úplně
vypnuta, přejímání notifikačních zpráv zaštiťuje systém Po zobrazení zprávy je možnost
tuto zprávu zrušit nebo zobrazit, a tím dojde ke spuštění aplikace Programátor má možnost
jak rozeznat jestli aplikace byla spuštěna přes ikonu nebo z notifikace a jak notifikační
zpráva vypadá [4]
Druhou variantou bez nutnosti složité komunikace s APNS servery a vlastním
notifikačním serverem, jsou lokální notifikace Tyto notifikace přišli s iOS 4
a podporují
vlastní nastavení upozorňovacích zpráv v definovaném čase Nejedná se tedy o zprávy přes
internet, ale o zprávy nastavené aplikací Opět pro jejich zobrazení není nutné, aby aplikace
běžela, po zaregistrování lokální notifikace systém zajistí její doručení [4]
44
4.4.5 Gesture recognizers
Verze iOS 3
v uživatelském
přinesla detekci standardních a vlastních gest. Každé okno nebo prvek
rozhraní
podporuje
přiřazení
UIGestureRecognizer
objektu,
který
rozpoznává různá standardní gesta [4]

Tapování (jakýkoliv počet tapů)

Pinching in and out (pro přibližování)

Panning nebo tahnutí

Swipování (v jakémkoliv směru)

Rotování (prsty rotují v opačném směru)

Dlouhé zmačknutí
Tyto gesta bývají často algoritmicky náročná pro detekci a za použití třídy
UIGestureRecognizer odpadá spousty práce Programátor má také možnost vytvořit detekci
vlastního gesta, často se jedná o složitější algoritmus pro efektivní zachycení požadovaných
gest Není moc doporučováno vytvářet zbytečně vlastní gesta, protože uživatelé nebudou na
jejich použití zvyklí, a je třeba jim názorně ukázat, jak se vykonávají [4]
4.4.6 Peer-to-peer services
Game Kit framework poskytuje peer-to-peer spojení prostřednictvím Bluetooth
S novou verzí iOS 5 a Bluetooth 4 má tento druh díky výkonnostním a úsporným stránkám
velké využití Komunikaci lze navázat s jiným zařízením v blízkosti a zajistit tak funkčnost
jako je hraní multiplayer her Ač byla tato technologie primárně navržena pro použití ve
hrách, meze na její aplikovatelnost v jiných typech ne-herních aplikací se nekladou [4]
4.4.7 Standard system view controllers
Cocoa Touch poskytuje mnoho view controlleru pro prezentování standardního rozhraní
systému Designerům aplikací je doporučováno využít tyto univerzální view controllery pro
zachování konzistence a uživatelského pocitu Kdykoliv je potřeba vykonat jednu
z následujících činností, můžeme použít existující view controller: [4][24]

Zobrazit nebo editovat kontaktní informace - použití view controlleru v Address
Book UI frameworku.

Vytvořit nebo editovat informace kalendáře - použití view controlleru v Event Kit UI
frameworku.

Vytvořit email nebo SMS zprávu - použití view controlleru v Message UI frameworku
45

Rychlý náhled obsahu souboru - použití UIDocumentInteractionController třídy
v UIKit frameworku.

Zachytit snímek za použití kamery a zobrazit ho v knihovně obrázků - použití
UIImagePickerController třídy v UIKit frameworku.

Zachytit video clip - taktéž použití UIImagePickerController třidý v UIKit
frameworku.
4.4.8 External display support
iOS zařízení mohou být připojeny k externímu displeji za použití standardních, často
velmi předražených, kabelů Aplikace má možnost odeslat na externí display rozdílné
informace a použít zařízení pouze pro jejich ovládání [4]
4.4.9 Cocoa Touch frameworky
Seznam frameworků vyskytujících se ve vrstvě Cocoa Touch [4]
Address Book UI Framework
Standardní uživatelské a grafické rozhraní pro využití seznamu kontaktů [4]
Event Kit UI Framework
Standardní uživatelské a grafické rozhraní pro vytváření a editování kalendářových
událostí [4]
Game Kit Framework
Možnosti peer-to-peer a in-game voice mechanismů Tento framework není pouze
určen ke hraní, nachází se v něm také rozhraní pro síťové spojení prostřednictvím Bonjour
[4]
iAd Framework
Vytváření reklamních ploch v unifikovaném rozhraní za použití Apple služby pro
prezentaci reklam. [4]
Map Kit Framework
Poskytuje kontejner pro mapu s možností scrollování, zoomu, nastavení anotací nebo
přidání vlastní vrstvy přes existující mapu [4]
46
Message UI Framework
Standardní uživatelské a grafické rozhraní pro vytváření emailových zpráv a načítání
příchozí pošty [4]
Twitter Framework
Podpora unifikovaného rozhraní pro zasílání twitter zpráv Tento framework byl
přidán v iOS 5 a má z pohledu implementace spoustu výhod oproti standardnímu způsobu
autentizace prostřednictvím webových twitter API [4]
UIKit Framework
UIKit poskytuje klíčovou infrastrukturu pro implementaci grafických a event-driven
aplikací v iOS Každá iOS aplikace využívá tento framework pro využití následujících
vlastnosti: [4]

Správa aplikace.

Správa uživatelského rozhraní, včetně storyboardu a nib souborů.

Grafická podpora a podpora více displejů.

Multitasking.

Tisk.

Vlastní upravené standardní prvky.

Podpora pro dotykové a pohybové události.

Objekty reprezentující standardní systémové pohledy nebo controllery.

Podpora pro text a webový obsah.

Podpora vyjmutí, kopírování a vložení.

Podpora animací uživatelského rozhraní.

Integrace s dalšími aplikacemi přes URL schema.

Podpora Apple Push Notification služby.

Podpora dostupnosti postiženým uživatelům.

Plánování a spouštění lokálních notifikací.

Vytváření PDF.

Podpora vlastního vstupu, chovajícího se jako systémová klávesnice.

Přístup k datům akcelerometru.

Vestavěná kamera.

Uživatelská foto knihovna.
47

Přístup k informacím o zařízení.

Přístup ke stavu baterie.

Přístup k ostatním sensorům.

Přistup ke vzdálenému ovládání sluchátek.
4.5 Media
Vrstva medií obsahuje grafické, audio a video technologie přizpůsobené k poskytnutí
nejlepšího multimediálního zážitku dostupného na mobilním zařízení Technologie z této
vrstvy jsou navrženy tak, aby programátor mohl jednoduše postavit aplikace, která vypadá
pěkně a zní skvěle [4]
4.5.1 Grafické technologie
Vysoce kvalitní grafika je základní částí všech iOS aplikací
Nejjednodušší
a nejefektivnější formou pro vytvoření aplikace je použití statických obrázků společně se
standardním uživatelským rozhraním, jeho prvky nacházejícími se v UIKit frameworku
a nechat systém vše vykreslit Nicméně nastávají situace, kdy se programátor nespokojí
s těmito základními grafickými prvky, ale je třeba je překročit pro více sofistikované řešení
Pro tyto situace je možnost využít některé z následujících grafických technologií:

Core Graphics (také nazýváno jako Quartz) - pracuje s
D vektory a obrázkově
založeným renderováním

Core Animation (část Quartz Core frameworku) - pokročilá kontrola pro animování
standardních elementů a dalšího obsahu

Core Image - pokročilá podpora pro manipulaci s videem a statickými obrázky

OpenGL ES a GLKit - podpora pro
D a 3D renderování za použití hardwarové
akcelerace přes grafický čip

Core Text - poskytuje libovolně upravovatelné renderování textu

Image I/O - rozhraní pro čtení a zápis mnoha obrázkových formátů

Assets Library framework - přístup k fotkám a videím v uživatelské foto knihovně
Většina částí v běžících aplikacích na zařízení s Retina displejem je schopna automaticky
upravit grafický výstup pro docílení lepšího vzhledu na tomto zhuštěném rozlišení Obsah,
který je vykreslen se automaticky roztáhne a přepočítá do plné velikosti tohoto highresolution displeje Vektorové prvky, ať standardní, např písmo, nebo vlastnoručně
vykresleny zdrojovým kódem, jsou upraveny a obohaceny o další extra pixely k docílení
ostrosti finální podoby Veškeré obrázky pro Retina display mají sufix @ x za jménem
48
souboru, například foto@ x png UIKit pak automaticky rozpozná podle dostupného
hardwaru displeje a dodaných obrázků, jestli načíst standardní nebo high-resolution
variantu. [4][24][25]
4.5.2 Audio technologie
Audio technologie v iOS slouží k dodání a poskytnutí bohatého požitku přehrávání
různých audio stop Schopnost přehrávat HD audio, nahrávat HD audio nebo spouštět
vibrace na některá zařízení [4]
Systém nabízí několik cest jak přehrávat a nahrávat audio obsah Následující seznam
frameworku je seřazen od těch vysoko úrovňových až po ty nízko úrovňové, včetně Media
Player frameworku, který je nejjednodušším řešením pro rychlé a pohodlné přehrávání
Jako je tomu u všech vysoko a nízko úrovňových frameworků, ty vyšší poskytují
optimalizovanou základní funkčnost s minimálním úsilím oproti těm nižším, které nabízí
celou škálu vlastností, ale s více pracnou implementací [4]

Media Player framework - jednoduchá cesta jak přistoupit k uživatelově iTunes
knihovně s podporou přehrávání audio stop a play listů.

AV Foundation framework - jednoduše použitelné Objective-C rozhraní pro správu
přehrávání a nahrávání audia

OpenAL - mezi platformové rozhraní pro plně nastavitelné přehrávání prostorového
zvuku.

Core Audio framework - nízko úrovňové rozhraní pro přehrávání a nahrávání zvuku,
vykonávání vibrací, spouštění audio stop a FX stop v jednom okamžiku včetně správy
bufferu, streamování nebo multikanálové podpory Aplikace zabývající se modifikací
zvuku v profesionálním měřítku se bez tohoto frameworku neobejdou.
Audio technologie na iOS podporují následující audio formáty:

AAC

Apple Lossless (ALAC)

A-law

IMA/ADPCM (IMA4)

Linear PCM

µ-law

DVI/Intel IMA ADPCM
49

Microsoft GSM 6.10

AES3-2003
4.5.3 Video technologie
Systém nabízí několik cest jak přehrávat a nahrávat video obsah pro většinu potřeb
Následují seznam video technologií je opět seřazen od nejvýše úrovňových až po ty nízko
úrovňové [4]

Třída UIImagePickerController - UIKit přes tuto třídu poskytuje standardní rozhraní
pro nahrávání videa na zařízení s podporou kamery

Media Player framework - jednoduché rozhraní pro prezentování plně nebo částečně
viditelného videa z vlastní aplikace

AV Foundation framework - rozhraní pro správu nahrávání a přehrávání videa

Core Media - tato technologie je základem pro všechny předchozí zmíněné video
frameworky nebo poskytuje vlastní nízko úrovňový přístup pro manipulaci
s mediem.
Video technologie v iOS poskytuju přehrávání video souboru s koncovkami .mov, .mp4,
.m4v, a .3gp za použití následujících standardních kodeků:

H 64 video, do 1 5 Mbps, 64 x 48 pixelů, 3 snímků za vteřinu, Low-Complexity
verze H.264 Baseline Profile s AAC-LC audio do 160 Kbps, 48 kHz, stereo audio in
.m4v, .mp4, a .mov souborové formáty

H.264 video, do 768 Kbps, 320 x 240 pixelů, 3 snímků za vteřinu, Baseline Profile do
Level 1.3 s AAC-LC audio do 160 Kbps, 48 kHz, stereo audio in .m4v, .mp4, and .mov
souborové formáty

MPEG-4 video, do 2.5 Mbps, 640 x 480 pixelů, 3 snímků za vteřinu, Simple Profile
s AAC-LC audio do 160 Kbps, 48 kHz, stereo audio in .m4v,.mp4, and .mov souborové
formáty

Několik dalších audio formátů, zmíněných v předchozí části popisující audio
technologie.
4.5.4 AirPlay
AirPlay je technologie umožňující streamování audia na Apple TV zařízení a dalších
AirPlay přijímačům Podpora je specifikována v AV Foundation frameworku a Core Audio
frameworcích Jakýkoliv audio obsah je možné přehrát automaticky za použití tohoto
50
frameworku a distribuovat ho jednoduchým uživatelským rozhraním pro AirPlay Systém se
postará o celou komunikaci a zbytek nezbytné práce pro přehrání na jiném zařízení [4]
Uživatelé mohou v iOS 5 zrcadlit obsah iPad
zařízení na Apple TV pro jakoukoliv
běžící aplikaci Vývojáři mohou zobrazit na externím displeji rozdílný obsah místo zrcadlení,
za použití UIScreen objektu připojeného v iPad přes AirPlay iOS 5 také nabízí více cest
odkud získat obsah pro AirPlay, jednou je třída AVPlayer v AV Foundation frameworku
a druhou UIWebView třída v UIKit frameworku Media Player také nabízí rozšiřující
informace, pokud je zobrazen na externím displeji. [4]
Názornou ukázkou je herní aplikace Asphalt, vyznačující se vynikající grafikou
a hraním více zařízení na jednom externím displeji Po připojení například 4 iOS zařízení
s touto hrou, dojde tak k rozdělení obrazu na 4 části, kde každý hráč vidí svoje závodní auto
iOS zařízení se stanou pouze ovladačem a platformou pro grafické zobrazení stavu závodu
každého účastníka. [4]
4.5.5 Media frameworky
Seznam frameworků vyskytujících se ve vrstvě Medií [4]
Assets Library Framework
Dotazově založené rozhraní pro přístup do uživatelské knihovny fotek a videa [4]
AV Foundation Framework
Několik Objective-C tříd pro přehrávání souborů nebo pamětových dat zvuku Tento
framework obsahuje spousty základních, ale také pokročilých věcí, které pro přehrávání
zvuku jsou potřeba [4]

Správa obsahu médií

Editování medií.

Zachycování videa.

Přehrávání videa.

Správa stop.

Správa metadat pro media záznamy.

Precizní synchronizace mezi zvukovými stopami.

Objective-C rozhraní pro získání detailů o zvukovém souboru, například datový
formát, sample rate nebo počet kanálů
51
iOS 5 také podporuje v AV Foundation frameworku streamování audia a videa za použití
AirPlay a třídy AVPlayer Ve zkratce tento framework umožní jakékoliv přehrávání pro
všechny potřeby náročných vývojářů [4]
Core Audio
Nízko úrovňová sada frameworků pro generování, nahrávání, mixování a přehrávání
zvuku Lze skrze něj také aktivovat vibraci na zařízeních s touto funkcionalitou [4]
Core Graphics Framework
API rozhraní pro Quartz D vykreslování Stejný framework je použit na Mac OS X
pro většinu grafického vykreslování Poskytuje podporu pro kreslení vektorové cesty, antialiasované renderování, přechody, obrázky, barvy, prostorová transformace a vytváření PDF
dokumentů Ačkoliv jsou API tvořeny převážně C funkcemi, je využito objektové abstrakce
pro prezentaci základních kreslících objektu, aby bylo jejich implementace jednoduchá,
uchovatelná a znovu použitelná [4]
Core Image Framework
Pro manipulaci se statickými obrázky a videem Poskytuje mnoho operací od
jednoduchých korekcí přes dotyk až po více sofistikované jako detekce obličejů Všechny
úpravy provedeny tímto frameworkem jsou nedestruktivní, původní zdroj není tak jakkoliv
změněn Většina zpracování je prováděna na grafickém čipu pro lepší výkonnost [4]
Core MIDI Framework
Standardní cesta pro komunikaci s MIDI zařízením jako je třeba hardwarová
klávesnice, přes síťové rozhraní nebo 3 -pinový konektor [4]
Core Text Framework
Jednoduché a vysoce výkonné C funkce pro vykreslování textu Všechen text, který se
v aplikacích nachází, je tvořen za použití tohoto frameworku Jeho použití je více komplexní
než využití existujících prvku UIKit frameworku, ale nabízí naprostou volnost v sestavení
vlastního vzhledu [4]
52
Core Video Framework
Pouze abstraktní framework pro Core Media framework, většina aplikací tento
framework nikdy nevyužije [4]
Image I/O Framework
Importování a exportování obrázkových dat a jejich metadat Tento framework
podporuje všechny druhy standardních typů obrázku na iOS [4]
GLKit Framework
Jednoduché rozhraní pro vytváření OpenGL ES
aplikací se sadou potřebných tříd,
kterými jsou převážně kontejnery pro renderování OpenGL ES obsahu [4]
Media Player Framework
Standardní rozhraní pro přehrávání videa a audia Obsahuje standardní přehrávač
a možnost plného nebo částečného rozlišení [4]
OpenAL Framework
Framework pro manipulaci a nastavení prostorového zvuku v ramci aplikace [4]
OpenGL ES Framework
Mnoho tříd pro vykreslování D a 3D obsahu OpenGL framework je vždy využit ve
spojení s EAGL rozhraním Toto rozhraní je částí OpenGL ES frameworku a poskytuje
rozhraní mezi vykreslující OpenGL ES kódem a nativními objekty definovány v UIKitu [4]
Quartz Core Framework
Quartz Core framework obsahuje rozhraní pro Core Animation, jedná se o
mechanismus a renderování animací pro mnoho základních prvků
Animace jsou
integrovány v mnoha místech do většiny základních a také pokročilých elementů napříč
celým systémem [4]
53
4.6 Core Services
Vrstva Core Services obsahuje základní služby systému, které jsou využívány všemi
aplikacemi I přes to, že programátor přímo nevyužívá některou z těchto služeb, mnoho částí
systému je na nich postaveno. [4][26]
4.6.1 iCloud
S příchodem iOS 5 přibyla služba iCloud, jedná se o službu, která umožňuje aplikaci
zapsat uživatelské dokumenty a další data na centrální místo s přístupem z různých míst za
určité autorizace a podpory iOS zařízení Dokumenty se tak stávají všudypřítomnými pro
daného uživatele, který je může měnit na centrálním uložišti mimo dané zařízení Tato
služba je velmi robustně specifikována a nabízí programátorům nejvyšší možný komfort
v synchronizaci dokumentů napříč všemi zařízeními iCloud nabízí dva druhy přístupu pro
sdílené uložiště, každý z nich má různý účel [4][27]

iCloud uložiště pro dokumenty - nabízí synchronizaci a ukládání uživatelských
dokumentu a dat v iCloud profilu daného uživatele

iCloud uložiště pro klíč-hodnota - nabízí možnost sdílet malé množství dat napříč
instancemi vlastní aplikace
Většina aplikace bude používat iCloud uložiště pro dokumenty a sdílení dokumentů od
uživatele Toto je koncept, pod kterým si představuje funkčnost iCloudu většina uživatelů
Uživatel se stará, zda je dokument sdílen napříč mnoha jeho iZařízeními a je schopen
upravovat tyto dokumenty z libovolného zařízení Oproti tomu uložiště iCloud pro
klíč-hodnota data je něco, co si uživatel nepředstaví Je to forma sdílení dat (v řádech desítek
kilobyte) pro danou aplikaci Mluví se zde o nekritických datech jako je nastavení a stavy
aplikace, nikoliv důležitá aplikační data [4][27]
Názornou ukázkou je aplikace iBooks, ta využívá tuto možnost pro uchování posledního
otevřeného dokumentu, pro každý dokument zaznamenává, jaké stránky byly přečteny
a kde uživatel skončil Po čerstvém spuštění aplikace iBooks na iPhonu, může uživatel
pokračovat ve čtení, tam kde skončil minulý den na iPadu
4.6.2 Auto Reference Counting
Tento mechanismus automatického uvolňování paměti v době kompilace byl
vysvětlen v části správy paměti Jedná se o výborný mechanismus ušetření psaní zbytečného
kódu Ale je nutné mít na paměti, jak bylo také řečeno na přednášce WWDC zabývající se
správou paměti, že pro komplexní pochopení principu správy paměti je nutné v první řadě
54
pochopit manuální počítání referencí Bez této znalosti se při dostavení chyby za použití ARC
může jednat o slepou cestu, kdy programátor má mizivé šance na vyřešení problému
[4][21]
4.6.3 Bloky
Bloky byly představeny v iOS 4 , je to konstrukce jazyka C která je zahrnuta do
vlastního Objective-C kódu Blok je v podstatě anonymní funkce a její data nad rámec scope.
V jiných jazycích jsou tyto funkce nazývány closure (JavaScript) nebo lambda (Ruby, Lisp,
Python) Bloky jsou často vhodné pro odpovědi, které se vykonávají asynchronně Ve verzi
iOS 5 se s bloky doslova roztrhl pytel, jsou použity ve většině API metod Nicméně dodržují
jednu konvenci, aby nedošlo k nepřehlednosti kódu, pokud se v metodě nachází argument
ve formě bloku, měl by být vždy jako poslední argument a pokud možno pouze jeden
Praktické použití bloků je zachyceno v následujícím přehledu: [28]

Náhrada místo delegátů a jejich metod

Náhrada za návratové funkce

Implementace “completion handlerů” pro jednorázové operace.

Pro iteraci nad kolekcí a vykonání úkolu nad iterovaným objektem.

Společně s dispatch frontami pro vykonávání asynchronních operací.
4.6.4 Grand Central Dispatch
Od verze iOS 4
byl představen také Grand Central Dispatch (GCD), jedná se o BSD
úrovňovou technologii, která je využívána pro správu spouštění úkolů v aplikacích GCD
kombinuje asynchronní programovací model s vysoce optimalizovaným základem pro
pohodlnou, a také více efektivní alternativu využívání vláken Syntaxe a princip GCD je
založen na blokových funkcích [28]
4.6.5 SQLite
Mobilní zařízení má možnost využití populární SQLite databáze za použití SQLite
knihovny Všechny funkce v této vrstvě jsou z důvodu výkonnosti implementovány C
funkcemi a bloky kódu pro vytvoření a správu databáze jsou často velmi nepřehledné
Alternativou je použití externích knihoven iOS nicméně nabízí ORM (Objektově Relační
Mapovaní) v podobě technologie Core Data, která je abstraktní vrstvou využívající SQLite
jako jeden z mnoha druhů persistentních uložišť [4][8][29]
55
4.6.6 XML
Foundation framework poskytuje třídu NSXMLParser na Mac OS X platformě pro
získání elementu z XML dokumentu Rozšířená podpora pro manipulaci s XML obsahem je
za použití knihovny libXML
Jedná se o open source knihovnu, která poskytuje parsování,
zapisování XML dat nebo transformaci XML obsahu do HTML Pro iOS platformu je často
z výkonnostních důvodů preferován JSON [4][8][29]
4.6.7 Core Services frameworky
Seznam frameworků vyskytujících se ve vrstvě Core services [4]
Accounts Framework
Tento framework byl představen v iOS 5
a klade si za cíl vytvořit “single sign-on”
rozhraní, kde si uživatel v centrálním míste vyplní přihlašovací údaje, a za použití tohoto
rozhraní dojde k jejich využití První službou využívající tento framwork je Twitter. Jeho
integrace do systému byla implementována společností Apple a v budoucnu můžeme
předpokládat další populární služby nebo vlastní mechanismus pro definování jiných služeb
[4][30]
Address Book Framework
Programový přístup do databáze kontaktních údajů v telefonu [4]
CFNetwork Framework
Síťové rozhraní se sadou vysoce výkonných C funkcí používající objektově abstraktní
rozhraní pro využití síťových protokolů Tato abstrakce poskytuje programátorovi plnou
kontrolu nad nízko úrovňovými BSD sokety a jejich manipulaci. Tento framework zlehčuje
mnoho typických síťových spojení komunikujících přes FTP nebo HTTP nebo rozpoznávající
DNS hosty S CFNetwork frameworkem jsou možné následující úkony: [4][31]

Použití BSD soketů.

Vytvoření zabezpečeného spojení za použití SSL nebo TLS.

Rozpoznání DNS hosta.

Práce s HTTP servery, autentizace na HTTP a HTTPS servery.

Práce s FTP servery.

Publikování, rozpoznání a procházení Bonjour služeb.
56
Core Data Framework
Core Data framework je formou ORM (Objektově Relačního Mapování) nad strukturou
dat Může být využit za použití persistentního uložiště jako je SQLite, XML nebo vlastně
definované struktury souborů Také může být využit pouze pro uchování dat v paměti, bez
nutnosti uložení na SSD disk Použití Core Data vyžaduje jiný pohled na věc a architekturu
datového modelu, pro mobilní aplikace je tato technologie plně dostatečným rozhraním pro
správu jakéhokoliv množství dat a vykonávání operací na mobilním zařízení [4][8]
Core Data spravuje model aplikačních dat a výrazně redukuje množství kódu potřebného
k vykonání, jako tomu je v případě použití SQLite Core Data poskytuje následující
funkčnosti:

Uchování objektových dat v SQLite databázi pro optimální výkonnost

Třída NSFetchedResultsController pro správu výsledků za použití table views

Správa undo a redo operací, na iOS je tento mechanismus standardně vypnut

Podpora validace atributů

Podpora šíření změn a zajištění relace mezi objekty tak aby zůstali konzistentními

Podpora pro seskupování, filtrovaní a organizaci dat v paměti
Core Foundation Framework
Tento framework je základem pro Foundation framework, obsahuje nízko
úrovňovou implementací stejných vlastností, jako nabízí Foundation [4]
Core Location Framework
Core Location framework disponuje technologií asistovaného GPS, která je popsaná
v podkapitole “GPS a geolocation” Framework také obsahuje manipulaci s kompasem pro
určení orientace zařízení v magnetické ose země a mechanismus pro rozeznávání změny
uživatele za použití GSM věží Striktní nastavení rozpoznávání pozice v tomto módu
neplýtvá příliš energie, jako je tomu oproti AGPS. [4]
Core Media Framework
Nízko úrovňový framework, který je základem pro AV Foundation framework
Programátor má možnost přistoupit k němu přímo a na velmi nízké úrovní vykonávat
nejsložitější potřeby pro audio a video [4]
57
Core Telephony Framework
Převážně API pro použití GSM a VoIP hovorů [4]
Event Kit Framework
Rozhraní pro přístup do databáze kalendáře [4]
Foundation Framework
Foundation framework je objektovým wrapperem nad Core Foundation frameworkem.
Poskytuje následující podporu různých základních vlastností: [4][24]

Kolekce (pole, slovníky, sety, atd ).

Bundle.

Řetězce a práci s nimi.

Datum a čas.

Nastavení aplikací.

URL a stream.

Vlákna a run loops.

Bonjour.

Komunikační porty.

Zmezinárodnění.

Regulární výrazy.

Cache.
Mobile Core Services Framework
Tento framework definuje pouze všechny druhy souborů v operačním systému za
použití Uniform Type Identifiers (UTI) Každý soubor má tak přiřazenou koncovku a svůj
typ, který definuje, o jaký soubor se jedná, a čím může být popřípadě otevřen [4]
Newsstand Kit Framework
Aplikacemi využívající Newsstand Kit jsou často magazíny a další periodika, které za
použití tohoto frameworku mohou stahovat svůj obsah na pozadí systému bez nutnosti
běhu Dotahnutím obsahu systém zajistí aktualizaci v Newsstand záložce a zobrazení badge
na ikonu aplikace magazínu. [4]
58
Quick Look Framework
Rozhraní pro zobrazování rychlých náhledů mnoha dokumentů, obrázků a dalších
datových souborů [4]
Store Kit Framework
Aplikace mohou vyžadovat zakoupení rozšířeného obsahu. Správa a celý
mechanismus nakupovaní je zastřešen Store Kit frameworkem Programátor má k dispozici
omezené API, které zobrazí uživateli standardní rozhraní pro vyplnění údajů k přihlášení se
do iTunes obchodu Za použití této abstrakce nemají tvůrci aplikací šanci jak zcizit logovací
údaje uživatelů [4]
Aplikace nahrané do App Store vyžadují schvalovací proces, který je o to striktnější,
pokud se v aplikaci nachází využívání plateb za použití Store Kit frameworku. [4]
System Configuration Framework
Tento framework poskytuje síťové prostředky pro detekování stavu Wi-Fi nebo GSM
datového spojení [4]
4.7 Core OS
Vrstva Core OS obsahuje všechny low-level “vychytávky”, na kterých jsou další
technologie postaveny. I když při vytváření aplikací do této vrstvy nemusí programátor
nikdy sáhnout, její části jsou často využity frameworky z vyšších vrstev Pro řešení potřeb
komplexní síťové komunikace nebo zabezpečení s externím příslušenstvím použijeme
frameworky z této vrstvy. [4][29]
Accelerate Framework
Tento framework slouží k vysoko výkonnostnímu zpracování obrazu, lineární
algebry nebo DSP (digital signal processing library) Výhodou využití těchto algoritmů
oproti psaní vlastních, je jejich vysoce optimalizovaná hardwarová výkonnost na všech iOS
zařízení [4]
Core Bluetooth Framework
Core Bluetooth framework umožnuje programátorovi komunikaci přes Bluetooth
Low-Energy příslušenství Rozhraní jazyka Objective-C v tomto frameworku poskytne scan
těchto příslušenství, připojení nebo odpojení dostupných, čtení nebo zápis atributů
prostřednictvím této služby [4]
59
External Accessory Framework
External Accessory framework poskytuje podporu pro komunikaci s externím
příslušenstvím připojeným k iOS zařízení Příslušenství lze připojit přes 3 -pinový dokovací
konektor nebo bezdrátově za použití Bluetooth Tento framework zaštiťuje způsob, jakým
komunikovat s externím příslušenstvím, vytvářet spojení přes komunikační session a poté
libovolně manipulovat za použití podporovaných příkazů [4]
Generic Security Services Framework
Framework se sadou standardní služeb týkající se zabezpečení iOS aplikací [4]
Security Framework
Bezpečnostní prvky pro zabezpečení dat ve vlastních aplikacích Framework nabízí
možnosti využití certifikátu, veřejných a privátních klíčů a PKI mechanismus Poskytuje také
možnost generování kryptografických pseudonáhodných čísel Zabezpečený úložný prostor
jako
je
Keychain
nebo
krytovaný
mechanismus
souboru
za
použití
vlastního
a hardwarového klíče [4]
Knihovna Common Crypto nabízí podporu pro symetrické šifrování, HMAC a hashe
Pokud je nutné v aplikaci vytvořit vlastní šifrovací mechanismus za použití SHA1, MD5 nebo
třeba AES, musí být použita právě knihovna CommonCrypto ze Security frameworku [52]
Systém
Systém obsahuje prostředí kernel, ovladače a nízko úrovňové rozhraní UNIX pro
operační systém Zastřešuje správu virtuální paměti systému, vlákna, souborový systém, síť
a mezi procesovou komunikaci Ovladače v této vrstvě také poskytují rozhraní mezi
dostupným hardwarem a systémovými frameworky Z důvodu bezpečnosti je přístup ke
kernelu a ovladačům omezen pouze na systémové frameworky a aplikace [4]
iOS poskytuje sadu rozhraní pro přístup k mnoha nízko úrovňovým částím operačního
systému Aplikace přistupují k těmto částem přes knihovnu LibSystem Rozhraní této
knihovny jsou funkce jazyka C a nabízejí podporu pro následující části: [4]

Vlákna (POSIX vlákna)

Síťové sdílení (BSD sokety)

Přístup k souborovému systému

Standardní I O

Bonjour a DNS služba
60

Lokální informace

Alokace paměti

Matematické výpočty
4.8 GPS a geolocation
Geolokace je neodmyslitelnou součástí mnoha chytrých telefonů
Principiální
funkčnost s dopadem na životnost baterie a trochou historie popíši v následujících
odstavcích. [2][29]
Global Position System pochází jako projekt U. S. Air Force z roku 197 , od té doby byl
armádou použit v mnoha válkách a znamenal velkou taktickou výhodu V roce 1983 Ronald
Regan přislíbil dostupnost GPS pro civilní využití, armáda opravdu tuto možnost poskytla,
ale se záměrným degradováním signálu Až do roku 1996 bylo možné získat přesnost polohy
maximálně ve stovkách metrů, té doby Bill Clinton nařídil odstranění degradace signálu
a civilisté mohli využívat GPS s plnou přesností do
metrů Posledním z výrazných
zlepšení byl rok 1998, kde Al Gore oznámil plány na další zvýšení přesnosti a spolehlivosti
GPS. [2][29]
Tato síť satelitů pracuje na bázi triangulace pozice z minimálně 3 dostupných satelitů
Přijímač získá data ve formě času a pozice z minimálně 4 dostupných satelitů pro přesnější
výpočet a poté je schopen určit polohu Nevýhodou je, že každý satelit má přenosovou
rychlost 5 b s, proto získání úvodní pozice na standardním GPS trvá 3 -4
vteřin než
přijímač stáhne všechna data Další kritickým bodem je naprosto přesná synchronizace času
mezi satelitem na oběžné dráze a přijímačem Při desynchronizaci hodin přijímače a satelitu
o 1 mikro vteřinu, dochází ke zkreslení signálu v řádech stovek metrů Global Position
System obsahuje 4 satelitů obíhající zemi Jedná se pouze o jednu satelitní síť z mnoha,
dalšími je budoucí Evropský projekt Galileo, který si klade cíle získat 3 aktivních satelitů,
a dosáhnout tak viditelnost minimálně 8 z nich v případě určování pozice na jakémkoliv
místě na zemi Dalšími jsou ruský GLONASS, dva čínské Beidou, COMPASS, indický IRNSS
a japonský QZSS Pro získání pozice v iOS zařízení se využívá síť GPS a GLONASS.
[2][13][29][40]
Zlomovým bodem byl rok
4, kdy společnost QUALCOMM přišla s fungujícím
řešením asistovaného GPS pro mobilní zařízení Všechny mobilní zařízení využívají AGPS,
které je ve své podstatě zdokonalenou formou standardního GPS Ve stručnosti řečeno,
61
místo využívání příjmu dat referenčního času a pozice z konkrétního satelitu, získáváme
tyto data z GSM vysílače nebo Wi-Fi hotspotu. [29]
V rámci vývoje mobilních aplikací jsme schopni nastavit přesnost získání signálu
Tento údaj se nastavuje v CLLocationManager objektu za použití property desiredAccuracy.
Jak je vidět z názvu, CoreLocation framework si sám zpracuje získání signálu a pokusí se
docílit vytoužené přesnosti získaného signálu Následující konstanty představují teoretický
zdroj pro údaje na přesnost signálu: [29]
Tabulka – ons an y pro nas av ní př snos i pozice
Použitý příjímač
Konstanta
GPS
kCLLocationAccuracyBestForNavigation
GPS
kCLLocationAccuracyBest
GPS
kCLLocationAccuracyNearestTenMeters
Wi-Fi nebo GPS na otevřené ploše
kCLLocationAccuracyHundredMeters
GSM Tower
kCLLocationAccuracyKilometer
GSM Tower
kCLLocationAccuracyThreeKilometers
Fyzický čip pro zpracování informací o GPS se nachází v 3G modulu daného zařízení,
proto iPad varianty bez 3G modulu nejsou schopny ukazovat GPS pozici bez dostupnosti WiFi hotspotu Pokud tedy budeme chodit po otevřeném prostranství s iPadem s 3G modulem,
ale ne datovým signálem (nemáme v zařízení SIM kartu), jsme schopni získat naši pozici Na
druhou stranu pokud budeme chodit po městě s iPadem bez 3G modulu a v dostupnosti
bude některý z Wi-Fi hotspotů, jsme schopni v řádu desítek až stovek metrů, získat naši
pozici bez nutnosti připojit se na zabezpečený hotspot Systém k tomu využívá WHOIS
databázi IP adres Dále máme případ, kdy se nacházíme uvnitř budovy a jsme připojeni
datovým signálem Také v tomto případě můžeme velmi přesně určit naši polohu přes
satelitní data, které nám jsou poskytnuty z AGPS serveru podle dané dostupnosti a výpočtu
změny pozice [13]
S tímto krátkým úvodem o principu fungování GPS v mobilních zařízeních se můžeme
podívat na problematiku “vysávání” baterie Systém se snaží poskytnout odpovídající
přesnost, v mnoha aplikacích nastavenu na tu nejlepší Dochází k zapínání všech druhů
datových spojení, komunikaci a výpočtům pozice daného zařízení Obecně datové moduly
62
jako Wi-Fi, Bluetooth, GSM, GPS jsou ty s největším příkonem, proto při jejich hromadné
aktivaci, je patrná životnost baterie [2][13][40]
4.9 iOS Accessories
Výrobci elektronických zařízení a různých příslušenství pro iPhone, iPad a další “i”
zařízení, mohou prostřednictvím External Accessory frameworku vytvořit komunikaci
s jejich vlastní elektronikou iOS poskytuje Bluetooth nebo AirPlay technologie pro
propojení Apple zařízení například s headsetem nebo vzdáleným ovládáním pro hudební
přehrávač [32]
Tvůrci těchto produktů mají možnost registrace v “MFi Programu” (Made For iPad,
Made For iPhone, Made For iPod, …) Po registraci získají přístup k hardwarové a softwarové
dokumentaci, certifikátům, technické podpoře a mnoha dalším věcem [32]
Komunikace mezi iPhonem a externím příslušenstvím je zajištěna prostřednictvím iAP
protokolu (iPod Accessory Protocol). Aplikace jsou schopny přehrávat audio v pozadí,
komunikovat přes “Voice over IP”, zjišťovat lokaci taktéž na pozadí nebo dokončovat různé
úkoly Příslušenství má možnost zaslání notifikace, přes kterou dojde ke spuštění aplikace
nainstalované v telefonu Pro audio nebo video přenosy lze poskytnout metadata přes iAP
protokol, jedná se o popisné informace o každé hudební stopě nebo videu Doporučuje se
zaslat všechna dostupná metadata, příslušenství si jejich údaje přebere a zpracuje podle
možností zobrazení [32]
Seznam dostupných metadat je následující: Album Title, Album Track Count, Album
Track Number, Artist, Artwork, Composer, Disc Count, Disc Number, Genre, Persistent ID,
Playback Duration, Title, Elapsed Playback Time, Playback Rate, Playback Queue Index,
Playback Queue Count [32].
4.10 Webové aplikace
Na otázku “Vyvíjet webové nebo nativní aplikace?” není jednoznačná odpověď,
přichází několik úvah, které si musíme odpovědět před tím, než zvolíme konkrétní variantu
řešení [34]

Pro koho vytváříme aplikaci?

Jak komplikovaná logika v aplikaci bude?

Je třeba nějaká forma integrace?

Spokojíme se s limitami, co nám webové technologie mohou poskytnout?
63

Máme dostatek kvalifikovaných lidí, kteří vytvoří aplikaci?
Toto je pouze několik otázek z mnoha, než se společnost rozhodne zvolit konkrétní
variantu Vše je otázka peněz a dostupných prostředků, nemusíme si mazat med kolem pusy,
abychom nevěřili, že nativní implementace aplikace je několikanásobně výkonnější z mnoha
dalšími benefity, na které dočasný stav webových technologií nestačí [34]
Pokud jsme společnost vytvářející aplikace primárně pro webové uživatele, popřípadě
jednoduché formuláře bez složitější integrace nebo logiky aplikace, byla by pro nás webová
forma tou výhodnější cestou Ve světě je levnější najmout do týmu šikovného kodéra y
s pokročilou schopnosti JavaScriptu, který je schopen levněji vytvořit takovýto druh aplikace
za kratší dobu než programátor implementující nativní aplikaci V ČR je tento přístup
problematický pro nedostatek prostředků Většina českých “frontenďáků” žije v domnění, že
znalost jQuery objektu, za sebou jakkoliv poskládané, bez špetky pohledu na výkonnost
nebo udržovatelnost, plně dostačuje na pozici “JavaScript developer” Vrátím se zpět k
technologii od HR problémů, a je také dobré zmínit výkonnostní restrikce. Na desktopu se
v JavaScriptu, krom pokulhávání 3D grafiky, meze nekladou, ale na mobilním zařízení, kde
není dostatek CPU a paměti, nemůžeme počítat se stejným výkonem [33][39]
Na druhou stranu vývoj v iOS pro nativní aplikaci je v některých podobných aplikacích
srovnatelně dlouhý Nevýhodou je aplikovatelnost pouze pro jednu platformu na rozdíl od
webového řešení Pro další porovnání představím typy webů nebo aplikací, které můžeme
nalézt v mobilním zařízení: [4]
Neoptimalizovaný web
Klasická webová stránka, u které musí uživatel několikrát použít gesta, aby byl
schopen přečíst si aspoň odstavec textu Někdy může také obsahovat flash, ať celostránkový
nebo částečný, tím pádem je tento blok stránky na mobilním zařízení nepoužitelný [4]
Optimalizovaný web
Oproti předchozí variantě se jedná o stejnou stránku, která obsahuje jiný kaskádový
stylesheet pro více uživatelské zobrazení Flashe a podobné pluginy jsou nahrazeny textem
nebo obrázky, popřípadě úplně odstraněny Někdy bývá použit styl, který je částečné
k nerozeznání s nativní nebo webovou aplikací, například Word Press blog [4]
Webová aplikace
64
Sofistikované řešení za použití HTML, JavaScriptu a CSS simulující nativní vzhled
aplikace s offline nebo online variantou Příkladem tohoto typu je Gmail, tady je na první
pohled vidět, že nestačilo vyměnit pouze styl stránky Webové aplikace nelze monetizovat
pokud se nejedná o placenou službu [35][39]
Nativní aplikace
Implementace formou Cocoa Touch frameworku a webovou komunitou velmi
nenáviděná varianta Graficky, integračně a s ohledem na využití API nebo CPU se ostatní
typy tomuto nemohou nijak rovnat. V běžném vývoji, pro většinu potřeb bez “šolichání”
předchozích řešení, je toto nejlepší cesta Tím ale nemíním, že bychom pro klasické tapací,
oknové aplikace, neměli volit jiný, finančně a časově výhodnější typ. [1][2]
Hybridní aplikace
V tomto případě se jedná o mix webové a nativní aplikace Vytvoříme nativní
“kontejner” ve kterém přijímáme námi definovanou komunikaci z webové aplikace, která
může a nemusí být online Pokud máme dostatečně kvalifikované lidi na obou stranách, jak
pro vývoj nativní části, tak pro vývoj webové části, může toto být finančně a časově
výhodnější řešení Ukázkou této varianty je aplikace Linkedin nebo Hotel Tonight, které
můžeme stáhnout z App Store jako klasické nativní aplikace [1][2][4]
4.10.1 Výhody hybridní aplikace
Kolem této varianty je v poslední době velká debata, je to z důvodu odpadnutí
prostředků na nativní část Za použití služeb typu PhoneGap
37
(skoupeno společností
Adobe), Titanium Appcelerator [38] nebo Worklight (skoupeno společností IBM), si mohou
weboví vývojáři vytvořit vlastní plnohodnotnou aplikaci s použitím zdokumentovaných API
Každá služba poskytuje jiný přístup, následuje krátký popis prvních dvou zmíněných
Obráz k 15 – I us ra ivní proc s vývoj hybridních ap ikací
65
[37]
Obráz k 16 – o o spo čnos i hon Gap
[37]
PhoneGap
Dovoluje vytvořit jakoukoliv vlastní HTML, CSS, JavaScript aplikaci PhoneGap je ve
své podstatě pouze nativní kontejner, který obsahuje WebView (prvek UIKit frameworku),
ve kterém je načtený obsah webu Prostřednictvím dodaného phonegap js souboru, ten
obsahuje implementaci JavaScriptového komunikačního rozhraní Vývojář je tak schopen v
dnešní době ovládat kterékoliv Cocoa Touch API Nutno mít stále na paměti, že veškerá
logika se zpracovává na straně webu v JavaScriptu [37]
Obráz k 17 – o o spo čnos i ppc
ra or
[38]
Titanium Appcelerator
Hlavní konkurence PhoneGapu, ale v tomto případě se jedná o poměrně unikátní
řešení Vytvoříme webovou aplikaci prostřednictvím HTML, CSS a JavaScriptu a poté ji
odešleme do Appcelerator služby, která z aplikace udělá plnohodnotnou nativní
implementaci Vývojář musí dodržovat určité standardy ve tvoření kódu oproti PhoneGapu,
kde může psát implementaci i naprostý zelenáč formou „spaghetti“ kódu Nicméně tato
zmínka není žádným zádrhelem pro průměrného JavaScript vývojáře Krásnou ukázkou této
aplikace je Hotel Tonight, který drží top pozici ve své kategorii na App Store [38]
4.10.2 HTML5 a limitace pro mobilní aplikace
Abychom mohli mluvit o HTML5 pro mobilní aplikace, musíme nejdříve pochopit co
HTML5 vlastně znamená pro desktop aplikace Pokud pomineme marketingový humbuk,
jedná se o novou verzi implementace HTML Tím to ale končí a bez dalších technologií
bychom nebyli schopni nic dělat Těmto lidem je často velmi složité vysvětlit celkový rozsah
webového vývoje, protože je do nich pumpována iluze bleskového vytvoření aplikace
z mnoha propagačních článků, které můžeme o HTML5 nalézt [34]
Ambice a vize HTML5 a další technologie je tak enormní, že by se dala nazvat jako beta
verze nového webu Mnoho finálních části lze vyčíst z webu W3C, který zastřešuje standard
pro HTML a CSS Nicméně kompletní dokončení HTML5 bude až v roce 2014. [36]
66
Každá firma (Mozilla, Apple, Google, Microsoft) si svůj prohlížeč poupravuje jinou
rychlostí a ne vždy splňuje všechny standardy Naštěstí pro WebKit prohlížeče, které jsou
v iOS a Android platformách, se jedná o “skoro” stejnou variantu [34]
Obráz k 18 – o a př dních d sk opových a mobi ních proh íž čů
[35]
Při vývoji aplikace v JS, HTML a CSS, disponují tyto technologie řadou vychytávek. Je
důležité použít každou část správně, aby bylo možné rovnat se nativním aplikacím
Sofistikovaně grafické aplikace můžeme rovnou odsoudit, 3D WebGL není na takové úrovni
ani na nemobilních platformách Alternativou, například pro zobrazení grafu, je použití SVG
nebo CSS Velká výhoda nových CSS3 atributů je jejich hardwarová akcelerace, tzn. jejich
vykreslení se zpracovává přes GPU místo CPU (stručně řečeno)
33
Toto je jeden z příkladů,
kdy je lepší použít CSS místo JavaScriptu Představme si, že chceme rotovat nebo posunout
element na displeji, máme dvě možnosti:
1. Pomocí JavaScriptu se změnou hodnot CSS vlastností elementu a bod po bodu
budeme posouvat tento element Častý přechod mezi rozhraním JavaScriptu a HTML bývá
špatným řešením, ať se jedná o mobilní zařízení nebo ne Dochází zde k největším
prodlevám Představme si JavaScript a HTML jako dvě jezera mezi kterými se přesouvá voda
velmi úzkým průtokem, takto přesně pracuje a tyto výkonnostní omezení má každá úprava
HTML kódu z JavaScriptu [33]
2. Použijeme CSS, nastavíme odpovídající styl, popřípadě finální pozici, a necháme přes
definici CSS stylu animovat element z bodu A do bodu B nebo provádět jiné efekty Samotná
animace se zpracuje na úrovni GPU, toto je nejrychlejší možnost, kterou lze měnit vzhled
HTML V některých případech není bohužel možné tuto možnost použít [33]
Stejně tak jako otázka v úvodu, jestli je lepší nativní nebo webová aplikace, tak otázka
použití HTML5 a všech jeho částí má nejednotnou odpověď, musíme se zeptat sami sebe, co
chceme dělat a čeho chceme docílit, abychom mohli použít jednotlivý přístup implementace.
Aspekty, které bývají velmi argumentovány při přestřelce jestli je HTML lepší než nativní
aplikace. [33]
Bohatá škála vlastností
Nativní aplikace mohou dělat cokoliv, co mobilní zařízení poskytuje, webové aplikace se
této úrovni rychle přibližují formou hybridních řešení [33][39]
67
Výkonnost
Nativní aplikace je jednoznačně výkonnější, ale v mnoha případech není důvod tak velký
výkon využít, a proto jsou webové aplikace často použitelné Nacházejí se alternativy jak
obejít interpretovanou část JavaScriptu a docílit lepších výkonů, ve formě web workers (web
multithreading) nebo CSS3 (GPU accelerated). [33][39]
Vývojářská zkušenost
Do tohoto tématu bych nerad zabíhal znovu, v úvodu jsem dal krátký názor na
dostupnost pracovní síly pro web nebo nativní aplikace Obecně ve světovém měřítku je více
zkušených webových než nativních vývojářů [33][39]
User experience
Nativní aplikace mají jednoznačně dodržené UI UX (ne, že by tomu bylo v každé firmě),
ale oproti tomu webová část publika argumentuje, že jejich formou zaměřují všechny
platformy Tady je úvaha k zamyšlení Chceme udělat marketingovou líbivou aplikaci, kterou
jiná platforma neodsoudí Protože její chování je pro platformu specifické, vytvoříme ho pro
každou zvlášť nebo vytvoříme unikátní vzhled napříč všemi platformami Tak jako tak, první
varianta je neakceptovatelná a možnost vytvářet jiné chování pro každou platformu se
několikanásobně protáhne a je za potřebí hlubší analýza a architektura kódu Tady by se
dalo už polemizovat, jestli je tato varianta vůbec udržitelná a není lepší udělat vše nativně
Pro druhou variantu unikátního vzhledu, je třeba dobrý UI UX designer, kterých je také
nedostatek. [33][39][51]
Monetizace
Jak webové (hybrid), tak nativní aplikace lze zpeněžit nebo distribuovat stejnou cestou
[51]
Na konci této podkapitoly povrchně zmíním co vlastně je a co není HTML5 Pod zkratkou
HTML5 spadají tyto věci: [34]

Všechny nové sémantické tagy

Použití audia a videa

Formuláře a jejich vlastnosti

Canvas a jeho API

Manipulace se soubory

Attribute contentEditable, který umožní z Vaší stránky udělat WIKI

Online a offline storage
68

DOM struktura

Drag and Drop

a několik dalších méně využitých…
Naopak následující seznam není HTML5: [34]

AJAX

ECMAScript5 (pracovní název pro JavaScript)

Rychlejší interpretace JavaScriptu (implementace prohlížeče)

FileReader

Geolocation

CSS3

Media Query

Web Workers

Web Sockets

WebGL

a mnoho dalších, většina zmíněných je ve své podstatě JavaScript
Jak je vidět, vývoj webových aplikací obnáší jiné problémy, potřebuje rozdílnou základnu
zaměstnanců a přináší jiný “feel” jak výsledná aplikace bude vypadat Je tedy uvážením
businessu společnosti a často dostupných prostředků, pro jakou cestu se firma vydá
4.11 Jailbreak
Mobilní systém iOS je uzavřená černá skříňka, do kterých lze vstupovat jen přes striktně,
ale na druhou stranu velmi propracované, definované API Ačkoliv se Applu nepovedlo
prosadit nelegálnost jailbreaku vlastních zařízení, jeho postoj k této činnosti je stále velmi
negativní Důvodem jailbreaku byl fakt, že si techničtější majitelé svých zařízení mohli
libovolně upravovat systém a stahovat nelegální aplikace Hlavními autory jailbreakových
mechanismů a poskytnutých nástrojů jsou hlavně mladí lidé, někteří prolamují systémové
bariéry z důvodu experimentování, jiní z důvodu prestiže ve své komunitě [41]
Postupem času, s nadcházejícími verzemi systému, je třeba vždy vytvořit nový způsob
prolomení systému Apple hází této skupině lidí klacky pod nohy, jak to jen jde, od
objektového maskování paměti až po důmyslnější algoritmy které rozeznají nelegálnost
systému Proto pokaždé, když vyjde nový update systému, je třeba počkat na některého
průkopníka s novými nástroji a poté obnovit zařízení do původního stavu, updatovat systém
69
a pak opět jailbreaknout novou verzi s novým nástrojem To ale nezabrání zvědavosti
a výzvě některých osob [41][42]
V běžné “legální” praxi nemá jailbreak příliš uplatnění, za použití vývojářského účtu, Adhoc releasu nebo distribučního business kanálu iTunes lze obejít ověřovací kroky, které
nastávají během schvalování aplikace na App Store. [41][42]
Výhody použití jailbreaku: [43][45]
1. Změna mobilního operátora, v ČR nejsou telefony blokovány na konkrétní
operátory, ale v Americe byl toto jeden z hlavních důvodů jailbreaku Poté, co se
odstraní restrikce telefonu, je třeba provést “unlock”, aby bylo možné změnit
operátora Jedná se o dva různé úkony a občas je komplikované na dané verzi
systému a zařízení získat nástroje pro docílení odemčení telefonu
2. Rychlejší a jednodušší systém, po restartu systému jsou provedeny různá ověření
a síťové přenosy pro získání nových aktualizací S jailbreakem je možné všechny tyto
věci vypnout a poté telefon nabíhá a vypíná se během několika vteřin
3. FaceTime video přes 3G, tato aplikace pracuje pouze po připojení Wi-Fi, je možné
rozchodit pouze za dostupnosti datového připojení
4. Plně vratné, jailbreak je softwarový zásah a v mnoha případech je možné připojit
zařízení k iTunes a provést obnovu systému zpět do původního nastavení
5. Nové aplikace, možnost stáhnout aplikace z neoficiální obchodu Cydia Náklady pro
vývojáře, udělat aplikaci a poslat ji na oficiální App Store jsou pouhých $99 Pokud se
jedná o schopné vývojáře, mohou mít možnost si slušně přivydělat nebo bez
problému dostat svoji aplikaci na App Store. Proto se ve většině případů jedná
o „šmejdy“ nebo nelegální aplikace Velmi malá výjimka jsou aplikace, které využívají
privátní API a poskytují přidanou hodnotu
6. Plný přístup do systému, bez restrikcí a přímého připojení zařízení s PC, je možné
jakkoliv upravovat iOS systém za použití nástrojů nebo vlastních rozšíření Tato část
je také velmi populární a každý jailbreak nástroj obsahuje nejednu formu změny
vzhledu nebo hierarchie navigace systémového menu
Nevýhody použití jailbreaku: [44][45]
1. Ztráta záruky, v podmínkách použití Apple zařízení je zákaz modifikace tohoto typu,
stejně tak jako mechanické otevření zařízení Pokud přijde nějaký problém a je třeba
70
podpora, jediné východisko je obnovit systém Apple má velmi kvalitní podporu a ne
vždy chceme všechno smazat
2. Nemožnost aktualizace, s novou verzí iOS systému nebo nových aplikací
podporující věci, které dosavadní systém neumí, není možné aktualizovat Toto je
nekonečný proces, kdy Apple vydá nový update, uživatelé čekají na nový jailbreak,
musí zdlouhavě upravovat a poté, pokud mají štěstí, tak bez ztráty dat mohou
aktualizovat.
3. Ztráta výkonnosti, s každým zásahem a úpravou obchází uživatel restrikce, které
jsou nastaveny Samotní Apple vývojáři designují, implementují a testují aplikace
v takovém rozsahu, finančních prostředcích a dostupných vědomostech, kterých není
možné docílit Proto s největší pravděpodobností nabalování nových aplikací a úprav
zapříčiní ztráty výkonu, v horším případě neschopnosti používat zařízení
4. Virová náchylnost, pádem restrikcí a různých omezení, tak nic nebrání autorům
aplikací přidat nějakou formu malwaru a sledovat tak tyto uživatele Spektrum
těchto lidí v této scéně je velmi široké, proto výskyt malwaru je velmi
pravděpodobný Bez jailbreaku jsou tyto problémy razantně řešeny na dvou místech
Jedním je schválení aplikace do App Store a druhým jsou rychlé aktualizace
problematických míst systému, které jsou plně zdarma
71
5 Nasazení aplikace
V předchozích kapitolách jsem zmínil jakou formou navrhovat a vytvářet aplikace
V této kapitole představím jak nasadit výslednou aplikaci na distribuční síť App Store nebo
další možné formy publikace prostřednictvím provozního portálu Následuje krátký popis
business problematiky, se kterou se potýká každý, kdo tvoří výsledný produkt za účelem
zisku nebo zakázkového vývoje
5.1 iOS Provisioning Portal
Provozní portál je hlavním místem, kde si vývojář nebo společnost
nastaví nad kterými zařízeními testovat aplikace, komu poskytnout
možnost tzv Ad-hoc instalace a vytvoření mnoha dalších certifikátů pro
různé potřeby [1][46]
5.1.1 Vytvoření developer účtu
Základem pro přístup do tohoto portálu je registrace s jedním ze
dvou vybraných programů, tj. účet za $99 pro jedince nebo firemní účet za
$ 99 Uživatel se stejnými logovacími údaji může být součástí více účtů, do
kterých se dostane většinou přes pozvánku firmy, která má již existující firemní účet
Přihlašovací brána mu dá na výběr, do jakého provozního účtu se chce s jeho logovacími
údaji přihlásit [1][46]
5.1.2 Vytvoření vývojového certifikátu
To, co by každý programátor měl nebo chtěl dělat je odladit výslednou
aplikaci na reálném zařízení a ne jen pouze v iOS simulátoru Pro tuto
možnost je nutné splnit dva body [46]
1. Získání vývojového certifikátu, který umožní podepsání vytvořené aplikace
2. Získání provozního profilu, který identifikuje vývojový certifikát, vlastní zařízení
a aplikaci, kterou lze na těchto zařízeních spouštět
Vývojový certifikát je získán za použití certifikačního požadavku (také známe jako CSR
nebo certificate signing request) Tento krok je proveden v aplikaci Keychain Po vytvoření
CSR stačí nahrát získaný soubor na provozní portál v záložce Certificates > Development
Trvá několik vteřin, než Apple vytvoří vývojový certifikát a nabídne možnost jeho stáhnutí.
Až se tak stane, tento soubor bude stáhnut a uložen do aplikace Keychain společně s dalším
WWDR (Apple Worldwide Developer Relations Certification Authority) certifikátem
72
potřebným k podepisování aplikací WWDR je ke stáhnutí pod odkazem, nacházejícím se na
stejné stránce, kde je stáhnut vývojový certifikát [46]
Dalším krokem je registrace zařízení v záložce Devices, kde se nachází všechny dostupné
telefony a tablety na kterých bude ze stejného účtu testováno formou Ad-hoc releasu nebo
vyvýjeno Tento seznam může pojmout 1
zařízení ročně, z pohledu jedince je to velký
seznam, ale z pohledu firmy může dojit rychle k jeho zaplnění a poté nezbývá, než některé
zařízení smazat a čekat rok na konec roku pro uvolnění místa Čísla, která se do tohoto místa
zapisují, jsou UDID nebo UUID (totožné pojmenování Unique Device Identifier), které každé
iOS zařízení má unikátní Tento identifikátor lze přečíst v Xcode organizeru nebo iTunes po
připojení telefonu či tabletu k počítači [46]
Další nutnou věcí je vytvoření App ID, jedná se o identifikátor, pod kterým jsou
identifikovány všechny vyvíjené aplikace Společnost si vytváří identifikátor ve tvaru
locale identifikátor_společnosti identifikátor_aplikace, například com apple safari nebo v
českých krajích cz tvurcehugo piskvorky Lze použít tzv Wildcards ve formě hvězdičky, kdy
není třeba přesně specifikovat bundle identifikátor Pro vývojový certifikát je použit App ID
“*”, tedy není třeba vyplňovat bundle id vůbec S distribucí aplikací a využitím specifických
funkcionalit v podání push notifikací, in-app purchase, game center služeb, iCloud služeb
nebo Keychain službě je ale nutné přesně zapsat bundle id, které bude použito v cílové
aplikaci Tyto certifikáty mají kratší životnost, není jejich účelem poskytnout možnost
využívání vývojové verze na tuto funkcionalitu, ale pouze pro rychlé otestování [46]
Po vyplnění všech těchto částí je třeba vytvořit vývojový provozní certifikát, který
identifikuje aplikaci pomocí jejího bundle id a zmíněné registrované zařízení Vytvoření
těchto certifikátů se provádí v části Provisioning V této části zadáváme název certifikátu,
jednotlivé členy teamu, zařízení a App ID Certifikát je vytvořen, stáhnut do Keychainu a od
tohoto místa je možné testovat na fyzickém zařízení [46]
5.1.3 Distribuční certifikáty
Distribuční certifikáty jsou vytvořeny obdobnou cestou jako vývojové
certifikáty Tady je jediný rozdíl pro vytváření Ad-hoc a App Store releasu.
Ad-hoc release
Tuto vlastnost má pouze nejvýše postavená pozice v hierarchii uživatelských rolí
v provozním profilu Pokud máme firmu o 5 iOS vývojářích a každý má mít možnost vytvářet
73
Ad-hoc bez centrální autority, která by tuto činnost spravovala, musí dojít ke kopii
distribučního certifikátu z Keychainu teamového agenta Toto není nijak složitý úkon, stačí
exportovat distribuční certifikát společnosti, nastavit odpovídající heslo a doručit ho členům
týmu, kteří mají mít toto privilegium [46]
Jako tomu bylo u vývojového certifikátu, i tady je třeba provozní certifikát, který
zahrnuje UUID jednotlivých zařízení, na kterých bude Ad-hoc build pracovat. [46]
App Store release
Druhou variantou je vytvoření otestované, odladěné aplikace, připravené pro odeslání
na App Store Tato část potřebuje pečlivou přípravu, stav po odeslání do schvalovacího
procesu je nevratný a při jeho zrušení může dojít k výrazné prodlevě k opětovnému
schvalovacímu kroku [46]
Certifikát pro tento typ releasu má přesný bundle id a je vždy vytvářen na míru finální
aplikace Stejné bundle id musí být uvedeno také v iTunesConnect profilu, což je portál
zastřešující distribuci a všechny věci s ní spojené pro App Store aplikace Na tomto portálu
dojde k vyplnění popisků, obrázků, ceny, bankovních údajů společnosti a mnoho dalších
informací pro finální aplikace Za použití vývojového rozhraní Xcode a jeho části organizéru
nebo programu Application Loader, která je náhradou pro nahrávání App Store aplikací bez
nutnosti spouštění rozhraní Xcode, dochází k odeslání finální aplikace podepsané
odpovídajícím certifikáten do schvalovacího procesu Tento krok nelze udělat kdykoliv,
portál iTunesConnect musí mít vyplněny všechny nutné informace a stav u aplikace
indikovat “Waiting for upload” Po odeslání aplikace nezbývá než čekat jak dopadne
schvalovací proces a aplikace bude zpřístupněna na distribučním kanálu App Store
Schvalovací proces trvá běžně 1 až
týdny pro menší aplikace a klidně i měsíc a déle pro
sofistikované řešení pokrývající distribuci po celém světě [46]
5.2 Retail business
V začátcích příchodu mobilního boomu si mohl každý, minimálně trochu schopný,
vydělat nemalé peníze s něčím, co doposud neexistovalo. Existuje spousta příběhů, kdy po
vytvoření jedné aplikace autor získal zisk, že nemusel dále pracovat, postavil si dům nebo
odjel na dlouhý čas relaxovat na pláž To je pouze hrstka těch úspěšných příběhů, která tvoří
velký klam a iluzi, jaká je nyní situace v profitabilitě iOS aplikací [47]
Apple zprostředkovává distribuční kanál ve formě App Store, který zpřístupní
a umožní stáhnutí aplikace z jakéhokoliv místa Je to také jediný oficiální kanál, který lze pro
74
iOS zařízení použít Tuto výhodu ale mají všichni autoři aplikací V dnešní době je App Store
přeplněn desítkami ne-li stovkami aplikací stejného druhu pro poskytnutí podobných řešení
od jednoduchých aplikací typu kalkulaček až po velmi složité a graficky propracované hry
[47][56]
Při vstupu na tento trh za účelem vytvořit další Angry Birds je třeba stát nohama na
zemi Mít povědomí o filozofii platformy, znát chování uživatelů a být obeznámen se všemi
částmi vývoje a návrhu aplikací S těmito věcmi jsme v polovině cesty za úspěchem jak
vytvořit unikátní nástroj k poskytnutí řešení nezabrané části na trhu Základem je
zmapování trhu a existence podobných aplikací Ne vždy je pravidlo, když konkurence
existuje, je idea ztracena a vlastní aplikace nemá šanci Většina existujících aplikací jsou
nekvalitní, narychlo vytvořené nebo in-house aplikace kde je kladen větší důraz na zájmy
klienta než použitelnost širokému spektru uživatelů Z úspěšných cizích aplikací, které
nepokrývají místní trh, je možnost inspirace, poměrně bohaté inspirace, která hraničí s
kopírováním U špatných aplikací jsou recenze od uživatelů, lze takto snadno zjistit, kde
autoři udělali chybu a čemu se vyvarovat pro stejné téma, na které se snažíme vytvořit
vlastní aplikaci nebo jaké potřeby mají uživatel pro specifické téma [47]
Dalším důležitým prvkem je financování celého projektu, to je jeden z klíčových
důvodů proč se v rámci firem zabývající se iOS vývojem nevytváří vlastní aplikace Majitelé
by určitě rádi vytvořili něco vlastního Občas slýchám i použitelné nápady, které vypadají, že
by mohli uspět, ale není příliš udržitelné financovat projekt s riskantním výsledkem, když
vedle toho je dostupnost projektů na zakázku V podání autora nebo týmu lidí, kteří i přes to
tvoří něco vlastního za účelem zisku, je třeba zvolit business model, který má šanci na
návratnost financí nebo minimálně zaplacení celého vývoje Ve většině případů je to risk, ale
s více propracovaným nápadem, jak by měla aplikace generovat peníze je tento risk snížen
tak, jak je to jen možné Financování z pohledu promýšlení úzce souvisí s marketingem. iOS
aplikace je tím největším marketingovým nástrojem Může být využita pro promování jiných
aplikací Lze vytvořit jednu verzi aplikace zadarmo a druhou za peníze, a vzájemně tak na
sebe odkazovat Načasování je důležité Je možné použít tzv “freemium” model, kdy celá
aplikace je zadarmo a autor těží z mikro plateb v podání in-app purchase. [47]
Po vydání finálního produktu je vhodné naplánovat správné spuštění press release
zpráv a mít již připravenou webovou prezentaci, která obsahuje výstižné obrázky o aplikace,
popřípadě video ukázku Tyto weby běžně, hlavně ty zahraniční, obsahují press kit pro další
media a publikování tzv recenzí zadarmo Aplikace po startu na App Store musí dosáhnout
75
vrchních příček v co nejkratší době Po spadnutí do hlubin záplavy distribuční sítě je velmi
problematické získat opět prvotní místa, a tím také profit Jak bylo zmíněno, jedná se o silný
marketingový nástroj Pokud je aplikace po funkční a uživatelské stránce výborná, jsou větší
šance, že se dostane k horním pozicím a bude více na očích V opačném případě i při malém
množství negativních referencí může být tato cesta o to komplikovanější [47]
Příkladem jednoduchého, nekomplexního nápadu a silného PR je aplikace měřící
ošklivost Funguje na principu vyfocení obličeje, jednoduché detekce tváře za použití
grafických efektů a zobrazení stupnice od 1 do 1 s peprným komentářem jak ošklivý člověk
je Nápad hraničí s doslovnou urážkou a rozhodně se neuchytne na každém trhu Pro
zajímavost, tato aplikace se v době psaní bakalářské práce drží v TOP 25 placených aplikací
na US a Čínském App Store, oproti tomu v UK není ani v TOP 200. Princip aplikace je velmi
jednoduchý a smysl skoro žádný Nejedná se o unikátní nápad ani o nejlepší provedení, které
již existuje, ale po grafické stránce je tato aplikace líbivá Její existence byla zmíněna
v americké televizní show Sterna Howarda, po tomto pořadu aplikace vydělala kolem
$8 ,
a do této doby se její tržby vyšplhali na více než $5
Obráz k 19 – Ukázka ap ikac U y M
,
r
[49]
[50]
Všechny tyto body je možné zvládnout samostatně a mít tak absolutní kontrolu nad
produktem nebo je nechat outsourcovat jinou společností Z herních aplikací je jednou z nich
například společnost Chillingo, která stojí za tituly jako Angry Birds, Cut the Rope a mnoho
dalších populárních her. [47]
76
5.3 Zakázkový business
Druhá forma přivýdělku je v podobě zakázkového vývoje Touto cestou jde většina
českých firem zabývající se mobilním vývojem Ač se jedná o jednoduchou cestu a majorita
zákazníku má naordinováno, že vlastnictví aplikace je nutnost v dnešním mobilním světě
a taktéž je skvělým PR nástrojem, má to i své problematické stránky Klienti mívají
skreslenou představu o cenách a samotných nákladech na vývoj aplikací Většina klientů má
zkušenosti s webovým vývojem, se kterým se snaží srovnávat mobilní vývoj nativních
aplikací Časová rozdílnost a doba vyhrazená k převedení nápadu do mobilní podoby
titěrného displeje bývá vyšší než vytvoření webové stránky obsahující stejný objem dat
a funkcionalit. Progresivnější společnosti využívají různé formy vývoje Od hybridních
aplikací za použití vlastních knihoven, chováním stejným službě PhoneGap nebo Titanium
Appcelerator až po plně nativní vývoj v plném rozsahu co může nabídnout Ten bývá
zdlouhavým procesem a v záplavě stejných aplikací nabízející podobnou funkcionalitu
v jiných barvách, nákladově nevýhodným [47] [48]
Všechny komplikace a pohledy jak tvořit in-house aplikace, jsou jen formou
zefektivnění vývoje k dosažení vyšších zisků
Pokud společnost vyloženě nenabízí
marketingové služby nebo nemá vlastní zájmy tak získáním zakázky a odevzdáním finálního
odladěného produktu často končí proces v rámci jednoho klienta Od aplikace se nečeká
generování zisku, většina takto vytvořených aplikací by si nikdy nevydělala ani na vlastní
vývoj natož na přidaný zisk Proto lze očekávat, že tento trend nutnosti vlastnit mobilní
aplikaci jako PR nástroj v budoucnu opadne nebo se naskytnou společnosti, které budou
schopny poskytovat vývoj za pětinové ceny Už i v dnešním vývoji jsou vidět cesty jak
uspokojit zákazníka a minimalizovat náklady v podobě webové aplikace nebo jinak
z automatizovaného procesu nativních aplikací [47] [48]
77
6 Realizace praktické části
V této kapitole popíši praktickou implementaci aplikace Česká pošta s použitými prvky,
které byly zmíněny v předešlých kapitolách Pro tuto část jsem si mohl vybrat jiné projekty,
na kterých jsem se podílel nebo vytvořit vlastní demonstrativní aplikaci, která by byla
určena pouze pro tuto práci, a ztrácela tak praktický smysl Výběr tohoto projektu snad
povzbudí čtenáře pro další čtení a ukáže velmi realistické prvky vývoje Z důvodu důvěry
mezi klientem a společností nebudu zmiňovat problémy a specifická rozhodnutí pro
konkrétního klienta tohoto projektu, ale přidám obecný přístup, se kterým jsem se setkal
v praxi nad tímto a jinými projekty Proto různorodost mezi zvolenými postupy a nabídnuté
možnosti nejsou v této kapitole označovány jako správné nebo špatné pro zvolený projekt
a čtenář si může udělat vlastní obrázek, co si myslí o nabídnutých možnostech a jejich finální
podobě
Začátek moji práce na tomto projektu je v bodě, kdy byla ucelená klientská specifikace
a získaná konceptuální idea celého projektu Během vytváření technického projektu probíhá
komunikace mezi analytiky a vývojáři nebo architekty implementační části za účelem
sjednocení analýzy co jsme a nejsme schopni vytvořit pro dobro klienta a naší nejlépe
možné implementace Odpovídající lidé jsou alokování mezi mnoha projekty pro jejich
efektivní pokrytí a hladký průběh realizace jednotlivých projektů Dokument „Technický
projekt“ bývá pro klienta zárukou toho, co výsledná aplikace bude obsahovat a pro tvůrce
důkazem, co nebylo v začátcích specifikováno a schváleno klientem pro vyhnutí se často
požadovaných změn nebo „výmyslů“ ve výsledné aplikaci Samotný vývoj začíná v bodě, kdy
je schválená specifikace v podobě technického projektu a wireframe návrhů jednotlivých
oken mobilní aplikace Často se vyvíjí a komunikuje paralelně s platformou Android, ale pro
účel této práce se budu věnovat pouze iOS části a nutným potřebám pro její vývoj
V rámci tohoto projektu se začalo vyvíjet bez schválené grafiky, která se souběžně
s implementací vytvářela a schvalovala Průběžně se také upravovala jednotlivá okna
s rozšiřující analýzou a požadavky klienta
78
Obráz k 20 – Wir fram návrh a imp m n ac b z použi é rafiky
[57]
Výhodnější bývá mít finální nebo částečný grafický design před začátkem vývoje
z důvodu navržení technických možností a vzhledu celé aplikace Ne vždy je ale takový
přístup realizovatelný, často se vyvíjí a vytváří design, který je souběžně schvalován
klientem.
Obráz k 21 – Grafický návrh a výs dná imp m n ac
[57]
Ne vždy bývá jednoduché klientovi vnutit grafický design, který odpovídá filozofii
platformy a je navrhnut s citem a zkušenostmi společností zabývající se mobilním vývojem
79
Někdy si klient nechá poradit, jindy si slepě stojí za svým zaujatým názorem, který podle
praxe často vede k neúspěchu celé aplikace Nicméně i přes tuhý boj společnosti pro
prosazení dobrých úmyslů klienta, je výsledek v některých případech nepřijat a vývoj nebo
design se uchyluje cestou, která není optimální
Obráz k 22 – Varian y návrhu úvodního m nu a éma ického vzh du c é ap ikac
[57]
Aplikace je za předpokladu hladké součinnosti s klientem poměrně jednoduchá Její
hlavní funkcionalita spočívá v poskytnutí služby Track & Trace, která umožňuje sledovat
stav poštovní zásilky Nemůžou chybět ani funkcionality pro vyhledání PSČ dle zadané
80
adresy nebo zobrazení nejbližších poboček České pošty s jejich detailními informacemi
Všechny části aplikace komunikují s back-end serverem Sledování zásilek a seznam
poštovních poboček je synchronizován, vyhledávání PSČ dynamicky načítá data podle
potřeb uživatele Databáze adres o rozsahu miliónů záznamů se nachází na serveru a ne
v mobilní aplikaci Obsahem jsou také další statické dokumenty, včetně nápovědy jak
aplikaci využívat Řekněme si u tohoto bodu upřímně, kdo z mobilních uživatelů kdy četl
několika stránkový návod jak využívat aplikaci Nicméně tento jeden z mnoha požadavků byl
nutný splnit, v tomto případě se jedná o zbytečnou přidanou hodnotu, která však v aplikaci
nijak nevadí
Ze zmíněných technologií jsou zde použity push notifikace pro oznamování změny stavu
sledované zásilky Další častou a specifickou technologií je geolocation, podle které se
získává poloha uživatele a jeho zobrazení na mapě včetně okolních poboček České pošty
Pobočky lze tak řadit podle jejich vzdálenosti od uživatele a zobrazovat cestu na mapě
k vybrané pobočce Jejich persistentní uložení je v SQLite za použití Core Data s migrací verzí
mezi první a druhou verzí aplikace Poslední prvek z nestandardních částí je využití kamery
pro skenování čárového kódu balíku za použití knihovny ZBarSDK
Po publikování této aplikace na App Store došlo z počátku k několika negativním
ohlasům, ač aplikace nabízela běžnou funkcionalitu, kterou nabízí spousta jiných aplikací
Uživatelům vadily drobnosti, které jsem v této práci zmiňoval Jedním z podnětů byla také
neaktuálnost synchronizovaného seznamu poboček. V tomto případě je vidět, jak uživatelé
využívají aplikaci pro poskytnutí účelu, než jen slepého využití funkcionalit V pozdější verzi
nastaly úpravy, které se nepodařilo prosadit v průběhu projektu a bylo na ně uživateli
poukázáno Synchronizace poskytuje grafickou indikaci, při které je vidět aktualizující stav
poboček, stejně tak jako obnova seznamu sledovaných zásilek
81
7 Závěr
Za dobu zabývající se iOS jsem se setkal s několika knižními publikacemi Vždy se jedná
o velmi specializované témata, která je požitek číst, když člověk potřebuje danou
problematiku pochopit detailněji Druhým typem jsou knížky, které méně nebo více kvalitně
popisují celý vývoj od úplných základů Krok po kroku nebo naopak chaoticky přeskakující
mezi různorodými tématy, tak jak autor uznal za vhodné Já jsem se v této práci nesnažil ani
o jeden ze zmíněných přístupů. Cílem této práce bylo nastínění tvorby aplikace pro mobilní
platformu iOS převážně pro lidi pátrající po samotné implementaci výsledné aplikace,
a představit jim tak jiné zákoutí než jenom samotný kód Čtenář by měl získat povědomí
o přístupu s nutnými postranními znalostmi, ať již je vývojář nebo světem IT
nepoznamenaný.
V začátcích jsem se snažil popsat dopad návrhu před započetím celého vývoje To je
problematika, na kterou narážím skoro každý den Tím pádem k tomu mohu mít zaujatý
pohled, který se určitě promítl v popisu důležitosti designu Samotný vývoj v podobě
implementace a použitých technologií poskytl obecný pohled na celou věc Toto je z počátku
převážně analytická práce v získávání znalostí a jasného pochopení, jak každá věc přesně
pracuje Později se stává mechanickou, kdy člověk píše skoro jako robot. Podrobení této
části je stejné jako v jiných programovacích jazycích, pro každého jedince různě dlouhé
v řádech týdnů až po dobu, kdy se člověk vzdá a nikdy nepochopí, jak věci vlastně fungují
V poslední části jsem vysvětlil celý mechanismus certifikátů, který bývá často přehlížen
Snažil jsem se tuto část minimalizovat, jak jen to bylo možné, protože termíny a úkony v ní
zmíněné se bez živého vyzkoušení špatně vstřebávají
Během běžného vývoje se člověk setká s malou částí věcí zmíněných v kapitole „Vývoj
aplikací“, jejich rozsah odpovídá často rozsahu aplikace popsané v praktické části Povědomí
o jejich existenci je nutné pro navrhování a použití zmíněných technologií. Tvorba pro
mobilní platformu je velice rozmanitá a bylo v této práci prezentováno několik
hardwarových „vychytávek“, které před začátkem mobilní éry vůbec neexistovali nebo bylo
nepředstavitelné jejich použití v běžné praxi Osobně si myslím, že člověk pohybující se
v tomto vývoji má širší uplatnění než je tomu například u webových technologií Znalosti
získané z této oblasti jsou aplikovatelné v jiných oborech nebo různých typech IT Je zde
stále co se učit a objevovat nové technologie a přístupy v podání tvorby her, rozšířené
reality nebo hardwarového propojení mezi externím zařízením a mobilní aplikací
82
8 Conclusion
While I worked with iOS I read several books. I found that there are two types of books
on the subject of iOS. One type of books goes into great detail on several selected topics and
requires extensive prior knowledge. The other type covers everything yet explains very
little. I have tried to avoid either approach. My goal is to introduce the entire mobile iOS
development process, targeting developers who want to learn how to develop mobile iOS
applications without any prior knowledge. Readers of this thesis will acquire a good
understanding of the iOS development process and its use in real projects.
At the beginning of my thesis I describe the importance of conceptual design, which is
crucial to understand before touching on real code. This is a sensitive problematical area,
which I deal with every day. I have a biased point of view on this topic and I believe that my
viewpoint is reflected in this introductory section. Next, the actual implementation process
from an initial idea to a real application is described. This may be a logical process at the
beginning but later it becomes a mainly mechanical job, causing the developer to feel more
like a trained monkey instead of a developer. Although the process is the same in any other
programming language, every person adapts differently. Someone might learn the entire
concept in a matter of weeks, someone else may never understand even the simplest of
ideas. The last part of my thesis describes application deployment and the mechanism of
provisioning portal and its certificates, a concept that is often overlooked. My aim was to
minimize the amount of text because it is not practical to explain all uncommon terms and
describe them step by step without practical application.
During enterprise development, a developer often uses only a small portion of
technologies and topics mentioned in the chapter “Application development” Although,
awareness of those technologies and design patterns is critical to fully understand how they
are being used. Development of mobile applications is very diverse. It provides numerous
hardware features which were unimaginable in everyday use or they did not exist at all
before the mobile boom. Personally, I think that developers in mobile areas have wider
application compared to web developers. There is always some new software or hardware
technology to explore and there are many other specialized areas such as game
development, augmented reality, or hardware communication between mobile applications
and external third party devices.
83
9 Seznam použitých zdrojů
1. Mark, D., Nutting, J., LaMarche, J.: Beginning iPhone 4 Development: Exploring the iOS SDK; 1.
vydání; New York: Apress 2011; 676 stran; ISBN-10 1430230243
2. Conway, J., HILLEGASS, A.: iPhone Programming: The Big Nerd Ranch; 1 vydání; Indianapolis:
Addison-Wesley Professional 2010; 432 stran; ISBN-10 0321706242
3. Apple Inc.: iOS App Programming Guide [online]; iOS Developer Library; [cit. 2012-05-03];
dostupné z URL:
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSPro
grammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html
4. Apple Inc.: iOS Technology Overview [online]; iOS Developer Library; [cit. 2012-05-03];
dostupné z URL:
http://developer.apple.com/library/ios/#documentation/Miscellaneous/Conceptual/iPhon
eOSTechOverview/Introduction/Introduction.html
5. Kochan, S.: Programming in Objective-C 2.0;
Vydání; Indianapolis: Addison-Wesley
Professional 2009; 624 stran; ISBN-10 0321566157
6. Apple Inc.: Learning Objective-C [online]; Mac OS X Developer Library; [cit. 2012-05-03];
dostupné z URL:
http://developer.apple.com/library/mac/#referencelibrary/GettingStarted/Learning_Objec
tive-C_A_Primer/_index.html
7. Apple Inc.: Developer Tools [online]; Developer Center; [cit. 2012-05-03]; dostupné z URL:
https://developer.apple.com/technologies/tools/
8. Privat, M., Warner, R.: Pro Core Data for iOS: Data Access and Persistence Engine for iPhone,
iPad, and iPod touch; 1 vydání; New York: Apress
11; 4
stran; ISBN-10 1430233559
9. Jordan, L.: Beginning iOS 5 Games Development: Using SDk for iPad, iPhone and iPod touch; 1.
vydání; New York: Apress 2011; 244 stran; ISBN-10 1430237105
10. Apple Inc.: WWDC 2012: It's all here at WWDC [online]; WWDC; [cit. 2012-05-03]; dostupné
z URL: https://developer.apple.com/wwdc/about/
11. Sudan, E.: WWDC 2012 is sold out [online]; TÚAW 5 4
1 ; [cit. 2012-05-03]; dostupné
z URL: http://www.tuaw.com/2012/04/25/wwdc-sold-out/
12. Apple Inc.: Device milestones and their press releases [online]; [cit. 2012-05-03]; Apple Press
Release; http://www.apple.com/pr/library/
13. Apple Inc.: Compare iPhone Models [online]; iPhone Product website; [cit. 2012-05-03];
dostupné z URL: http://www.apple.com/ipodtouch/specs.html
14. Apple Inc.: iPod Touch Tech Specification [online]; iPod Product website; [cit. 2012-05-03];
dostupné z URL: http://www.apple.com/ipodtouch/specs.html
15. Apple Inc.: Compare iPad Models [online]; iPad Product website; [cit. 2012-05-03]; dostupné
z URL: http://www.apple.com/ipad/compare/
84
16. Apple Inc.: Apple TV Tech Specification [online]; Apple TV Product website; [cit. 2012-05-03];
dostupné z URL: http://www.apple.com/appletv/specs.html
17. Apple Inc.: iOS Human Interface Guidelines [online]; iOS Developer Library; [cit. 2012-05-03];
dostupné z URL:
http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/Mob
ileHIG/Introduction/Introduction.html
18. Ginsburg, S.: Designing the iPhone User Experience: A User-Centered Approach to Sketching
and Prototyping iPhone Apps; 1 vydání; Indianapolis: Addison-Wesley Professional 2010;
336 stran; ISBN-10 0321699432
19. Cultured Code: Designing the UI of Things for iPhone [online]; Cultured Code website; [cit.
2012-05-03]; dostupné z URL: http://culturedcode.com/things/iphone/makingof/
20. Realmac Software.: Clear [online]; iTunes Preview; [cit. 2012-05-03]; dostupné z URL:
http://itunes.apple.com/us/app/clear/id493136154?mt=8
21. Apple Inc.: Introducing Automatic Reference Counting [online]; WWDC 2011 Session Videos;
[cit. 2012-05-03]; dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
22. Apple Inc.: iOS Printing System [online]; WWDC 2011 Session Videos; [cit. 2012-05-03];
dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
23. Apple Inc.: Designing User Interfaces for iOS and Mac OS X Apps [online]; WWDC 2011 Session
Videos; [cit. 2012-05-03]; dostupné z URL:
https://developer.apple.com/videos/wwdc/2011/
24. Apple Inc.: Understanding UIKit Rendering [online]; WWDC 2011 Session Videos; [cit. 201205-03]; dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
25. Apple Inc.: Advances in OpenGL ES for iOS 5 [online]; WWDC 2011 Session Videos; [cit. 201205-03]; dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
26. Apple Inc.: Core OS Networking [online]; WWDC 2011 Session Videos; [cit. 2012-05-03];
dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
27. Apple Inc.: iCloud Storage Overview [online]; WWDC 2011 Session Videos; [cit. 2012-05-03];
dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
28. Apple Inc.: Mastering Grand Central Dispatch [online]; WWDC 2011 Session Videos; [cit.
2012-05-03]; dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
29. Bruzenak, D. a kol.: iPhone Advanced Projects; 1 vydání; New York: Apress 2011; 392 stran;
ISBN-10 1430224037
30. Apple Inc.: Twitter Integration [online]; WWDC 2011 Session Videos; [cit. 2012-05-03];
dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
31. Apple Inc.: Bonjour Network Discovery and Connectivity [online]; WWDC 2011 Session
Videos; [cit. 2012-05-03]; dostupné z URL:
https://developer.apple.com/videos/wwdc/2011/
32. Apple Inc.: Working with iOS Accessories [online]; WWDC 2011 Session Videos; [cit. 2012-0503]; dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
85
33. Apple Inc.: Advanced HTML5 Media Controllers in Safari [online]; WWDC 2011 Session
Videos; [cit. 2012-05-03]; dostupné z URL:
https://developer.apple.com/videos/wwdc/2011/
34. Lawson, B., Sharp, R.: Introducing HTML5;
vydání; Berkeley: New Riders Press
11; 31
stran; ISBN-10 0321784421
35. HTML5 Rocks: A resource for open web HTML5 developers [online]; Google HTML5 Promo
Website; [cit. 2012-05-03]; dostupné z URL: http://www.html5rocks.com/en/
36. W3C: W3C Confirms May 2011 for HTML5 Last Call, Targets 2014 for HTML5 Standard
[online]; W3C Press Release; [cit. 2012-05-03]; dostupné z URL:
http://www.w3.org/2011/02/htmlwg-pr.html.en
37. Adobe Systems Inc.: PhoneGap [online]; PhoneGap website; [cit. 2012-05-03]; dostupné
z URL: http://phonegap.com/
38. Appcelerator Inc.: Appcelerator [online]; Appcelerator website; [cit. 2012-05-03]; dostupné
z URL: http://www.appcelerator.com/
39. Apple Inc.: Hidden Gems for Web Apps [online]; WWDC 2011 Session Videos; [cit. 2012-0503]; dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
40. Balaei A. T., Wu J., Dempster A.: Comparison between GPS and Galileo satelliteavailability in
the presence of CW interference; Sydney: The University of New South Wales 6. 12. 2007; [cit.
2012-05-03]; http://www.gmat.unsw.edu.au/snap/publications/asghar_etal2007e.pdf
41. Ricker, T.: iPhone Hackers: “we have owned the filesystem” [online]; Engadget 17. 7. 2009; [cit.
2012-05-03]; dostupné z URL: http://www.engadget.com/2007/07/10/iphone-hackers-wehave-owned-the-filesystem/
42. Keller, M.: Geek 101: What Is Jailbreaking? [online]; PCWorld 13. 2. 2012; [cit. 2012-05-03];
dostupné z URL:
http://www.pcworld.com/article/249091/geek_101_what_is_jailbreaking.html
43. Chen, B.: 6 Reasons to Jailbreak Your iPhone [online]; GADGET LAB 7. 8. 2009; [cit. 2012-0503]; dostupné z URL: http://www.wired.com/gadgetlab/2009/08/reasons-to-jailbreak/
44. Dachis, A.: Four Reasons Not to Jailbreak Your iPhone, iPod touch, or iPad [online]; Lifehacker
5. 5. 2011; [cit. 2012-05-03]; dostupné z URL: http://lifehacker.com/5799007/why-youshould-not-jailbreak-your-iphone-ipod-touch-or-ipad
45. Slattery, B.: 5 Reasons to Jailbreak Your iPhone – and 5 Reasons Not [online]; PCWorld 3. 8.
2010; [cit. 2012-05-03]; dostupné z URL:
http://www.pcworld.com/article/202441/5_reasons_to_jailbreak_your_iphone_and_5_reaso
ns_not.html
46. Apple Inc.: About the Tools Workflow for iOS; [cit. 2012-05-03]; dostupné z URL:
http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_developm
ent_workflow
86
47. Wooldridge, D., Schneider, M.: The Business of iPhone and iPad App Development: Making and
Marketing Apps that Succed;
vydání; New York: Apress 2011; 480 stran; ISBN-10
1430233008
48. Apple Inc.: Build breakthrough apps for your employees [online]; In-house app development;
[cit. 2012-05-03]; dostupné z URL: http://www.apple.com/business/accelerator/
49. Sawers, P.: This iPhone app has made $500,000 from telling people how ugly they are [online];
The Next Web 30. 4. 2012; [cit. 2012-05-03]; dostupné z URL:
http://thenextweb.com/apps/2012/04/30/this-iphone-app-has-made-500000-fromtelling-people-how-ugly-they-are/
50. Gentlemen, D.: Ugly Meter™ [online]; iTunes Preview; [cit. 2012-05-03]; dostupné z URL:
http://itunes.apple.com/us/app/ugly-meter/id388336485?mt=8 [cit. 2012-05-03]
51. Apple Inc.: Good design is an iterative process [online]; In-house app development; [cit. 201205-03]; dostupné z URL:
http://www.apple.com/business/accelerator/design/optimize.html
52. Apple Inc.: Securing iOS Applications [online]; WWDC 2011 Session Videos; [cit. 2012-05-03];
dostupné z URL: https://developer.apple.com/videos/wwdc/2011/
53. Apple Inc.: Introduction to Coding Guidelines for Cocoa [online]; Mac OS X Developer Library;
[cit. 2012-05-03]; dostupné z URL:
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuide
lines/CodingGuidelines.html
54. Chung, C.: Pro Objective-C Design Patterns for iOS; 1 vydání; New York: Apress
11; 39
stran; ISBN-10 1430233303
55. Buck, E.: Cocoa Design Patterns; 1. vydání; Indianapolis: Addison-Wesley Professional 2009;
456 stran; ISBN-10 0321535022
56. Burba, N.: Cocos2d for iPhone 1 Game Development Cookbook; 1 vydání; Birmingham: Packt
Publishing 2011; 446 stran; ISBN-10 1849514003
57. eMan s.r.o.: 24. 1. 2012; [cit. 2012-05-03]; Interní materiály eMan s r o
87
10 Seznam použitých zkratek
2D
dimensional, dvou rozměrný prostor
3D
3 dimensional, troj rozměrný prostor
3G
Třetí generace mobilní telekomunikace pro mobilní telefony
AGPS
Assisted Global Position Systém
API
Application Programming Interface
APNS
Apple Push Notification Service
ARC
Auto Reference Counting
ARM
Advanced RISC Machine nebo také Acorn RISC Machine
BSD
Berkeley Software Distribution
CCD
Charge-coupled device
CDMA
Code division multiple access
CPU
Central processing unit
CSS
Cascading Style Sheets
DNS
Domain Name Systém
EDGE
Enhanced Data rates for GSM Evolution
FTP
File Transfer Protocol
GCD
Grand Central Dispatch
GLONASS
GPRS
Globalnaya Navigatsionnaya Sputnikovaya Sistema, ruský globální družicový
polohový systém
General Packet Radio Service
GPS
Global Position Systém
GPU
Graphics processing unit
HD
High-definition
HIG
Human Interface Guidelines
HMAC
Hash-based Message Authentication Code
HSDPA
High-Speed Downlink Packet Access
HTML
HyperText Markup Language
HTTP
Hypertext Transfer Protocol
HTTPS
Hypertext Transfer Protocol Secure
iOS
Operační systém společnosti Apple
JS
JavaScript
LTE
3GPP Long Term Evolution
MD5
Hašovací algoritmus Message-Digest
MFi
Made for iPhone/iPod/iPad
88
MIDI
Musical Instrument Digital Interface
MRC
Manual Reference Counting
NAND
Polovodič logického hradla NAND
ORM
Object Relation Mapping
OS
Operating systém
PAN
Personal area network
POSIX
Portable Operating System Interface
RAM
Random Access Memory
SDK
Software Development Kit
SHA1
Hašovací algoritmus Secure Hash Algorithm
SIM
Subscriber identity module
SIRI
Speech Interpretation and Recognition Interface
SSD
Solid State Disk
SSL
Secure Sockets Layer
TLS
Transport Layer Security
UDID
Unique Device Identifier, v iOS systému synonymum UUID
UI
User Interface
UMTS
Universal Mobile Telecommunications System
URL
Uniform Resource Locator
USB
Universal Serial Bus
UUID
Universally Unique Identifier, v iOS systému synonymum UDID
UX
User Experience
VGA
Video Graphics Array
VoIP
Voice over Internet Protocol
WWDC
Worldwide Developers Conference
WWDR
Apple Worldwide Developer Relations Certification Authority
XML
Extensible Markup Language
89
11 Seznam obrázků
Obrázek 1 - Ilustrace SDK balíku [7] ........................................................................................................ 17
Obrázek 2 - Vývojové rozhraní Xcode [7] ................................................................................................ 17
Obrázek 3 – Ladící nástroj Instruments [7] ............................................................................................. 18
Obrázek 4 – iOS simulator pro testování aplikací [7] .............................................................................. 18
Obrázek 5 – Apple inženýr pomáhá účastníkovi WWDC konference s vývojovými problémy [10] ........ 20
Obrázek 6 – Časová osa Apple zařízení s příchodem na trh [12] ............................................................. 21
Obrázek 7 – Ikona aplikace Things [19] ................................................................................................... 29
Obrázek 8 – Průběh návrhu mobilní aplikace od desktopového až po výsledný vzhled [19] .................. 30
Obrázek 9 – Návrh využití Tab Baru [19] ................................................................................................. 30
Obrázek 10 – Návrh a realizace využití Toolbaru [19] ............................................................................. 31
Obrázek 11 – Návrh a implementovaný vzhled nového úkolu [19]......................................................... 31
Obrázek 12 – Návrh a realizace vytváření nového úkolu [19] ................................................................. 32
Obrázek 13 – Optimalizovaný návrh a realizace nového úkolu ve verzi 1.1 [19] .................................... 32
Obrázek 14 – Ovládací gesta aplikace Clear [20] ..................................................................................... 34
Obrázek 15 – Ilustrativní proces vývoje hybridních aplikací [37] ............................................................ 65
Obrázek 16 – Logo společnosti PhoneGap [37] ....................................................................................... 66
Obrázek 17 – Logo společnosti Appcelerator [38]................................................................................... 66
Obrázek 18 – Loga předních desktopových a mobilních prohlížečů [35] ................................................ 67
Obrázek 19 – Ukázka aplikace Ugly Meter [50] ....................................................................................... 76
Obrázek 20 – Wireframe návrh a implementace bez použité grafiky [57].............................................. 79
Obrázek 21 – Grafický návrh a výsledná implementace [57] .................................................................. 79
Obrázek 22 – Varianty návrhu úvodního menu a tématického vzhledu celé aplikace [57] .................... 80
90

Podobné dokumenty

Mobilní zařízení - Platforma informačních technologií

Mobilní zařízení - Platforma informačních technologií aplikace nepodstupují kontrolu jako na Apple App Store  může být více marketů, odkud aplikace stahovat

Více

MBAce in Management for Competitiveness

MBAce in Management for Competitiveness Druhá kapitola, navazující popisná část, představuje klíčový prostor, ve kterém identifikujete organizaci jako takovou, klíčové reálie, historii a veškeré relevantní informace o současném stavu. V ...

Více

Sborník příspěvků

Sborník příspěvků obrazu a analýzu RAM, což vedlo ke změně zavedených postupů i usnadnění práce bezpečnostních týmů. Namísto vypínání počítačů se v některých případech pořizuje obraz paměti a provádí se jeho detailn...

Více

Nové b learningové kurzy jako nástroj prohlubování kvalifikace IT

Nové b learningové kurzy jako nástroj prohlubování kvalifikace IT odborníky, kteří zdarma získají časově flexibilní vzdělání pro další profesní růst. Kapacita vzdělávacího projektu je v pilotní fázi 60 účastníků. Projekt počítá s udržitelností a dalším rozvojem. ...

Více

Nástroje pro vývoj aplikací v závislosti na platformě a jejich vazba na

Nástroje pro vývoj aplikací v závislosti na platformě a jejich vazba na Abychom mohli přejít k určení kritérií, je vhodné vysvětlit si tří základní pojmy, se kterými

Více

- Konference Security

- Konference Security Adam J. Aviv, Benjamin Sapp, Matt Blaze and Jonathan M. Smith - Practicality of Accelerometer Side Channels on Smartphones [2012] Adam J. Aviv, Katherine Gibson, Evan Mossop, Matt Blaze, and Jonath...

Více