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