Bankovní institut vysoká škola Praha zahraničná vysoká škola Banská Bystrica

Katedra kvantitatívnych metód a informatiky

Vývoj aplikácií pre Apple iOS Apple iOS Software Development

Bakalárska práca

Autor: Lukáš Medveď Informačné technológie, správca informačných systémov

Vedúci práce: doc. RNDr. Juraj Pančík, CSc.

Banská Bystrica Apríl 2012

1

Vyhlásenie

Vyhlasujem, že som bakalársku prácu vypracoval samostatne a s použitím uvedenej literatúry.

Svojím podpisom potvrdzujem, že odovzdaná elektronická verzia práce je identická s jej tlačenou verziou a som oboznámený so skutočnosťou, že sa práca bude archivovať v knižnici BIVŠ a ďalej bude sprístupnená tretím osobám prostredníctvom internej databázy elektronických vysokoškolských prác.

V Bratislave dňa 27.4.2012 Lukáš Medveď

2

Poďakovanie

V prvom rade by som rád poďakoval vedúcemu mojej bakalárskej práce, doc. RNDr. Jurajovi Pančíkovi, CSc., za jeho užitočné rady, pripomienky a názory pri tvorbe mojej bakalárskej práce.

3

Anotácia

MEDVEĎ, Lukáš: Vývoj aplikácií pre Apple iOS. [Bakalárska práca]. Bankovní institut vysoká škola Praha, zahraničná vysoká škola Banská Bystrica. Katedra kvantitatívnych metód a informatiky. Vedúci práce: doc. RNDr. Juraj Pančík, CSc. Rok obhajoby: 2012. Počet strán: 54.

Bakalárska práca poukazuje na možnosť vytvorenia ukážkovej iOS aplikácie, ktorá bude k dispozícii na zariadení iPhone. V prvej kapitole sú vymedzené základné pojmy, história firmy APPLE, opis iOS zariadení a charakteristika konkurenčných mobilných platforiem. Druhá kapitola analyzuje vývojové nástroje Objective-C a iPhone SDK. Tretia kapitola je praktickou ukážkou na vytvorenie samostatnej aplikácie pre Apple iOS.

Kľúčové slová: Apple, iOS, iPhone, objective-C, aplikácia

4

Annotation

MEDVEĎ, Lukáš: Apple iOS Software Development. [Bachelor's thesis]. Banking Institute of the university of Prague, a foreign university Banská Bystrica. Department of Quantitative Methods and Computer Science. Supervisor of thesis: Doc. Mgr. Pančík Juraj, CSc. Year of defense: 2012. Number of pages: 54.

The bachelor thesis points to the possibility of creating an iOS application which will be available on iPhone. The first part contains the basic concepts like history of the Apple company, destription and characteristics ofthe iOS competitive mobile platform devices. In the second chapter we analyze the development tools Objective-C andiPhone SDK. The third part of the work is the practical part and is a demonstration for creating an application for iOS.

Key words: Apple, iOS, iPhone, objective-C, application

5

Obsah Úvod ...... 8

1 Vymedzenie základných pojmov ...... 10

1.1 História APPLE ...... 10

1.1.1 ...... 10

1.1.2 APPLE II ...... 11

1.1.3 APPLE III, LISA ...... 11

1.1.4 ...... 12

1.1.5 PowerBook, Apple QuickTake, PDA Newton ...... 12

1.1.6 iMac ...... 12

1.1.7 iPod, iTunes ...... 13

1.1.8 OS X ...... 13

1.2 Súčasnosť APPLE ...... 14

1.2.1 Hudobné prehrávače ...... 14

1.2.2 Prenosné počítače ...... 15

1.2.3 Stolné počítače ...... 16

1.2.4 Operačný systém ...... 17

1.3 iOS ...... 18

1.3.1 iPhone ...... 18

1.3.2 iPod touch ...... 20

1.3.3 iPad ...... 21

1.4 História iOS verzií ...... 22

1.4.1 iOS 1 ...... 22

1.4.2 iOS 2 ...... 23

1.4.3 iOS 3 ...... 24

1.4.4 iOS 4 ...... 24

1.4.5 iOS 5 ...... 25

1.5 Konkurenčné mobilné platformy ...... 26 6

1.5.1 Android ...... 26

1.5.2 Phone 7 ...... 26

1.5.3 Blackberry OS ...... 27

2 Analýza vývojových nástrojov Objective-C a iPhone SDK ...... 28

2.1 Objective-C ...... 28

2.2 História Objective-C ...... 28

2.3 Princíp programovania Objective-C ...... 28

2.4 iPhone SDK ...... 30

2.5 Architektúra iOS ...... 32

3 Vytvorenie ukážkovej iOS aplikácie ...... 37

3.1 Požiadavky na mobilnú aplikáciu ...... 37

3.2 iPhone Aplikácia Pokutár ...... 38

3.2.1 Užívateľské rozhranie ...... 38

3.2.2 Finálny vzhľad ...... 39

3.2.3 Vývojárske prostredie ...... 40

3.2.4 Interface Builder ...... 43

3.3 Popis tried a funkcií prvej sekcie ...... 44

3.3.1 Práca s dátami - import dát ...... 45

3.3.2 Vytvorenie vnorenej tabuľky ...... 46

3.4 Realizácia druhej sekcie obrazovky ...... 48

3.5 Realizácia tretej sekcie obrazovky ...... 48

3.6 Testovanie a ladenie aplikácie ...... 49

Záver ...... 50

Zoznam použitej literatúry ...... 51

Zoznam obrázkov ...... 53

Príloha č. 1 ...... 54

7

Úvod Počítačová technika prešla v posledných rokoch zásadnými zmenami a IT svet sa čoraz viac prelína s bežným životom obyčajného človeka. Je ťažké si predstaviť život bez notebooku s pripojením na internet, bez mobilu s kvalitným fotoaparátom, či bez obľúbenej hudby v mp3 prehrávači. Vývoj techniky neustále rozširuje svoje možnosti a prekonáva svoje limity. Za symbol tohto trendu možno v súčasnosti považovať mobilné telefóny. Donedávna záležitosť jedincov, momentálne priam povinná výbava.

Prvý mobilný telefón pre praktické používanie vynašiel Martin Cooper zo spoločnosti Motorola. Úlohou mobilného telefónu bolo vytvorenie verbálneho spojenia medzi dvoma osobami, ku ktorej sa neskôr pridali krátke textové správy, známe tiež pod označením SMS. Postupne sa pridávali mobilnému telefónu ďalšie funkcie a nezaostával ani jeho technologický vývoj. Mobilné telefóny začali prehrávať hudbu, vyhotovovať fotografie, či využívať internet. Práve prístup na internet spoločne s technologickým vývojom umožnil rozmach v súčasnosti najviac pre využitie mobilného telefónu – mobilným aplikáciám.

Mobilná aplikácia je program, ktorý umožňuje využívať úplný potenciál mobilného telefónu za najrozmanitejším účelom, ktorého limitom je kreativita jeho tvorcov. Môžu slúžiť na hranie hier, zistenie predpovedi počasia, sociálnu komunikáciu s priateľmi, nakupovanie online či ovládanie domácich spotrebičov. Mobilné aplikácie existovali už s prvými mobilnými telefónmi, avšak až s nástupom inteligentných telefónov, takzvaných smartfónov, ktoré majú prístup na internet a vytvorením trhu s mobilnými aplikáciami sa akceleroval ich vývoj. V súčasnosti sú vo svete dve platformy, na ktorých základoch sú postavené mobilné aplikácie, a to Android a iOS. Android vytvoril konzorcium spoločností Open handser alliance na čele s Google, iOS vytvorila spoločnosť Apple. Obidve platformy majú svoje výhody a nevýhody, avšak z pohľadu komerčného pohľadu vývojára je dôležitý trh s mobilnými aplikáciami, kde jednoznačne dominuje Apple store spoločnosti Apple s viac ako 500 000 mobilnými aplikáciami.

Tieto skutočnosti sa stali inšpiráciou pre moju tému bakalárskej práce vývoj aplikácií pre Apple iOS. Cieľom bakalárskej práce je vytvorenie vzorovej iOS aplikácie pre iPhone – mobilný telefón od spoločnosti Apple. Bakalárska práca je členená na kapitoly, ktoré sú usporiadané vo vzájomnej logickej súvislosti. Základným pojmom, histórii spoločnosti Apple a jej produktom sa venuje prvá kapitola. História spoločnosti Apple je dôležitá pre

8 pochopenie filozofie spoločnosti a následne pre celkový systém mobilných aplikácii pod hlavičkou iOS. Ďalej si predstavíme jednotlivé produkty, kde je možné uplatniť vývojársky systém iOS, a taktiež aj jeho históriu, princípy a možnosti. Druhá kapitola mapuje históriu a princípy jazyka Objective-C a sadu nástrojov iPhone SDK, ktoré majú tiež významnú úlohu v iOS. Samotná vzorová aplikácia je spracovaná v tretej kapitole, kde je detailne opísaný postup jej tvorby z pohľadu vývojára. Tretia kapitola predstavuje praktickú časť bakalárskej práce, ktorá je výsledkom teoretickej časti pozostávajúcej z predchádzajúcich kapitol.

Dúfame, že bakalárska práca bude prínosom nielen pre začínajúcich vývojárov iOS mobilných aplikácií, ale aj pre laickú verejnosť, ktorej priblíži proces tvorby iOS mobilnej aplikácie.

9

1 Vymedzenie základných pojmov

V prvej kapitole sa venujeme základným pojmom ako je história firmy APPLE. Podrobnejšie si rozoberieme produkty od ich vzniku až po súčasnosť. Charakterizujeme si operačný systém iOS a podrobnejšie si opíšeme novinky verzií iOS. Opíšeme iOS zariadenia iPhone, iPod touch a iPad. Na záver kapitoly si objasníme konkurenčné mobilné platformy.

1.1 História APPLE Firma APPLE má dlhú históriu a v bakalárskej práci si spomenieme najdôležitejšie roky tejto spoločnosti. Založeniu firmy predchádzal nápad Stephana Wozniaka, ktorý v roku 1975 navštevoval klub, ktorý bol známy ako Homebrew Computer Club a začal pracovať s počítačom Altair 8000. Už vtedy rozmýšľal o zostrojení vlastného počítača. Na strednej škole sa spoznal so svojím spolužiakom Stevom Jobsom, ktorý prišiel s myšlienkou založiť spoločnú firmu. Po spoločnom rozhodnutí založili spoločnosť APPLE Computer 4.apríla v roku 1976. Išlo o spoločnícku zmluvu medzi Stevom Jobsom, Stephanom Wozniakom a Ronom Waynom. Wayne sa následne celého projektu zľakol a z firmy odišiel po dvanástich dňoch. Príčinou bolo Jobsové finančné plánovanie. (Isaacson, 2011 s. 99)

1.1.1 APPLE I

Za krátky čas začala vyrastať jedna z najpozoruhodnejších počítačových spoločností. Wozniak spoločne zo svojím spoločníkom Jobsom zostrojili v garáži prvých 50 kusov počítačov a nazvali ho APPLE I. APPLE I vyzeral skôr ako písací stroj a nie ako osobný počítač. Jednalo sa o skutočnú zaujímavú novinku, ktorú možno označiť za predchodcu osobného počítača. Apple I sa prvýkrát objavil na prezentácii v Homebrew klube, kde technickí nadšenci neváhali zaplatiť 666,66 dolárov. Celkom sa ich predalo okolo dvesto kusov . Po vynikajúcom štarte Jobs spolu s Wozniakom začali pracovať na vývoji konceptu modelu APPLE II.

10

1.1.2 APPLE II

Vízia pri vývoji druhého modelu bola, aby osobný počítač mal skvelý kryt, zabudovanú klávesnicu a bol kompletne integrovaný, od napájania až po softvér a monitor. Predstavenie počítača APPLE II sa konalo počas počítačového veľtrhu West Coast Computer Faire v apríli v roku 1977. Drevený kryt nahradila plastová skriňa a počítač disponoval farebným monitorom a 4 kB pamäte. Farebný monitor v počítači bol revolučný prvok a tak sa za krátky čas z neho stal predajný hit. (Weyhrich, 2010)

V tom istom roku boli uvedené počítače od firmy Tandy a Commodore PET, ktoré sa nazývali TRS-80. Ani jeden z nich sa nemohol porovnávať úspechom APPLE II, i keď boli lacnejšie. Apple neskôr uviedol disketovú mechaniku, ktorá sa stala exkluzívnou platformou pre VisiCals. VisiCals bol prvý tabuľkový procesor v histórii. APPLE II bol v rôznych modifikáciách predávaný počas ďalších rokov a predalo sa ich takmer šesť miliónov kusov. Viac ako akýkoľvek iný stroj, odštartoval priemysel výroby osobných počítačov.

1.1.3 APPLE III, LISA

V roku 1980 bol uvedený na trh nový model APPLE III. Rok po tom firma IBM uviedla svoj prvý PC. APPLE III mal problémy obstáť v ťažkej konkurencii a distribúcia sa skončila fiaskom. Jobs a jeho kolegovia navštívili v decembri 1979 technológiu vo výskumnom centre XEROX PARC (The Xerox Corporation's Palo Alto Research Centre). Xerox PARC bola založená v roku 1970 s cieľom vytvoriť základ pre rozvoj digitálnych nápadov.

,,Návšteva Jobsa v Xeroxi sa niekedy opisuje ako jedna z najväčších lúpeží v dejinách počítačového priemyslu a presvedčila ho, že budúcnosť počítačov je taktiež v grafickom rozhraní. Po návšteve PARC odišiel s novými nápadmi pre dokončenie svojho ďalšieho počítača LISA. Počítač sa predával v roku 1983 za 9995 dolárov. Tento model nebol úspešný hlavne kvôli vysokej cene.“ (Isaacson, 2011 s. 85)

11

1.1.4 Macintosh

Po neúspechu s sa firma začala dostávať do problémov a tak Jobs oslovil marketingového manažéra Johna Sculleyho. Vývojári sa neustále sústredili na vytvorenie nového PC. Výsledkom bol Macintosh, ktorý bol uvedený v roku 1984. APPLE uviedol Macintosh vo veľkom štýle dnes už v legendárnom reklamnom spote ,,1984". Vďaka reklame zaznamenal veľký úspech. Po roku úspech predajnosti poklesol, hlavne kvôli nedostatku softwaru a kompatibility. Väčšina užívateľov nevolila najvyspelejší počítač MAC, ale radšej lacnejšiu alternatívu od firmy IBM PC, vybavené Windows 3.0.

1.1.5 PowerBook, Apple QuickTake, PDA Newton

V roku 1991 sa situácia čiastočne zlepšila uvedením prvého PowerBooku s novým operačným systémom, ktorý sa nazýval . PowerBook opäť predbehol platformu Windows. Medzi ďalšie produkty, ktoré nemali veľký úspech v digitálnom svete môžeme spomenúť fotoaparát Apple QuickTake alebo PDA Newton.

APPLE sa dostalo do veľkých problémov a preto sa John Scully, ktorý o počítačovom priemysle veľa nevedel, pokúša reorganizovať firmu. Za týchto okolností odchádza z firmy Stephen Wozniak a neskôr nato rezignoval aj , ktorý odchádza z APPLE. Jobs si založil firmu NEXT Computer, kde sa mal vyrábať produkt s názvom NEXTcube. Prvý prototyp bol uvedený v roku 1988 s 256 MB optickým diskom. NextComputer vytvoril síce najlepšiu techniku ale opäť cena bola príliš vysoká.

1.1.6 iMac

APPLE medzitým pracoval na svojom novom PC Macintosh II, ktorý bol uvedený v roku 1987. V roku 1991 prišiel zlom, keď sa APPLE spojilo so silnou spoločnosťou IBM a spoločne začali vyvíjať populárny PowerBook. Ďalšie produkty, ktoré nasledovali, už nemali takú popularitu a tak v roku 1993 Sculley rezignuje a spoločnosť APPLE sa prepadá. Oživenie prišlo v roku 1997, keď sa Steve Jobs vrátil do APPLE najskôr ako konzultant a neskôr ako CEO (Chief executive officer) spoločnosti APPLE. Úplne nový manažment sa zameral na nový projekt iMac.

12

Bol to počítač zabudovaný do CRT monitoru s krytom z futuristického priesvitného plastu. iMac verejnosť očaril svojim dizajnom a v roku 1998 prvýkrát APPLE po piatich rokoch ohlásil zisk.

1.1.7 iPod, iTunes

Historicky najväčším úspechom APPLE sa stal rok 2001 s predstavením hudobného prehrávača APPLE iPod a programu iTunes. iPod bol hudobný prehrávač s pevným diskom s kapacitou 5 GB a s veľkým displejom . Celý iPod bol ovládaný otočným mechanickým kolieskom v strede. Progam iTunes je bezplatne dostupná aplikácia pre počítače Mac alebo PC. Umožňuje užívateľovi prehrávať hudbu a videá v počítači a s jej pomocou automaticky preberať zakúpenú hudbu, aplikácie a knihy do všetkých zariadení a počítačov.

1.1.8 OS X

V historickom milníku treba spomenúť aj prvý stabilný operačný systém, ktorý sa nazýval OS X. Základom systému je hybridné jadro XNU ( anglicky X is Not Unix), ktoré bolo zložené z mikrojadra Mach, ktoré komunikovalo s hardwarom a malo na starosti správu pamäti, vlákien a procesov. Jadro spolu s ďalšími komponentmi tvorí systém Darwin. Historický vývoj ďalších verejne dostupných verzií si môžeme pozrieť na obrázku č.1.

Obrázok 1 Verzie operačného systému

Zdroj: Vlastné spracovanie

13

1.2 Súčasnosť APPLE

Popísali a objasnili sme si v stručnosti históriu firmy APPLE a jej najdôležitejšie momenty. Pred tým ako si charakterizujeme iOS zariadenia iPhone, iPodTouch a iPad, považujeme za potrebné si priblížiť aj ostatné produkty vyvíjané firmou Apple, ich funkcie a služby. Produkty si rozdelíme na štyri kategórie: hudobné prehrávače, prenosné počítače, stolné počítače a operačný systém.

1.2.1 Hudobné prehrávače

Obrázok 2 Hudobné prehrávače

Zdroj: (http://www.apple.com, 3.1.2012) iPod Shuffle

Je malý hudobný prehrávač s kapacitou 2 GB a výdržou 15 hodín prehrávania. iPod Shuffle je najlacnejší a patrí medzi najpopulárnejšie hudobné prehrávače firmy APPLE. Prehrávač má tvar štvorca s rozmermi 29 x 31,6 x 8,77 mm a váži 12,5 g. Pre jeho rozmer a váhu je určený predovšetkým pre šport. Predáva sa v piatich rôznych farbách . Obsahuje funkciu nazvanú VoiceOver, pomocou ktorej si užívateľ prehráva názov skladby a jej interpreta a kontroluje aktuálny stav batérie. iPod Nano

Je druhý z kategórie hudobných prehrávačov. Jeho dominantou je jednoduchý farebný Multi-Touch displej s uhlopriečkou 1,54 palca. Ovláda sa pomocou ťukania na displej, ktorý má rozlíšenie 220 pixelov. iPod Nano sa predáva v dvoch kapacitných veľkostiach 8GB, 16GB a v šiestich farebných verziách. Výdrž batérie je 24 hodín. Okrem prehrávania

14 hudby disponuje mnohými funkciami ako sú audioknihy, podcasty, fotky, rádio FM a vstavaná podpora pre fitnes chôdzu, či krokomer. iPod Classic

Práve tento prehrávač zahájil prvú etapu iPodov. Dnes už poznáme šiestu generáciu tohto modelu prehrávača. Okrem prehrávania hudby si na ňom môžeme prezerať fotografie a videá. Jeho kapacita je 160 GB a výdrž batérie je 36 hodín. iPod Classic sa ovláda pomocou kolieska Click Wheel.Obsahuje funkciu Genius, ktorá mixuje zoznam náhodne vybratých skladieb.

1.2.2 Prenosné počítače

Obrázok 3 Prenosné počítače

Zdroj: (http://www.apple.com, 15.1.2012)

Macbook Pro

Pod označením Macbook Pro rozumieme radu profesionálnych prenosných počítačov od firmy APPLE. Macbooky boli aktualizované naposledy v roku 2011. Počas písania bakalárskej práce sme pracovali s 13-palcovým Macbookom Pro. Vyrábajú sa aj v ďalších veľkostných verziách 15 a 17 palcových. 13-palcový Macbook Pro obsahuje procesor Intel Core i5 s výkonom 2.4 GHz alebo najrýchlejší dostupný dvojjadrový procesor - Intel Core i7 s výkonom 2,8 GHz. Spomínané 15 a 17 palcové sú dostupné so štvorjadrovým procesorom Intel Core i7. Súčasťou procesoru je grafická karta Intel HD Graphics 3000. Súčasné Macbooky Pro sú vyrobené z jedného kusu hliníka a nachádza sa v nich nový technologický port Thunderbolt. Technológiu pre vysokorýchlostný prenos dát vyvíjal niekoľko rokov Intel pod názvom Light Peak. Po spolupráci s firmou Apple tak vznikol

15 produkt Thunderbolt. Ide o nové vysokorýchlostné pripojenie, ktoré spája vysokorýchlostný prenos dát a high-definition (HD) obrazu v jednom kábli. Macbooky Pro sa predávajú s aktuálnym operačným systémom OS X Lion.

MacBook Air

Jeho konštrukcia sa skladá z precízneho jednoliateho hliníka. Je dostupný v dvoch veľkostiach, 11-palcový a 13 palcový, a obsahuje procesory Intel Core i5 a i7. Jeho výnimočnosťou je tenký dizajn .V najhrubšom mieste má 1.7 cm a v najtenšom 0,3 cm. Obsahuje flash pamäť, ktorá umožňuje okamžité spustenie počítača a rýchly prístup k údajom.

1.2.3 Stolné počítače

Obrázok 4 Stolné počítače

Zdroj: (http://www.apple.com, 23.1.2012) iMac iMac je legenda od firmy APPLE, ktorú sme spomenuli už v úvode práce. Patrí do kategórie ,,all in one" počítačov, čo znamená, že všetok hardvér je ukrytý v tele monitoru. V súčasnosti sa vyrába 21,5-palcový alebo 27-palcový model s procesorom Intel Core I7 so štvorjadrovým procesorom. Najdominantnejšou časťou je obrovský displej, ktorý dosahuje rozlíšenie až 2560 x 1440 pixelov.

16

Mac mini

Prvýkrát bol počítač predstavený v roku 2005. So svojou cenou 499 USD mal prilákať hlavne užívateľov, ktorí používali Windows, ale chceli skúsiť niečo nové. Dnešný pripomína skôr externú CD mechaniku ako počítač.

2.5 GHz Mac obsahuje oddelený grafický procesor AMD Redeon HD s 256 MB pamäťou, ktorý poskytuje možnosť pracovať s graficky náročnými aplikáciami. Dodáva sa s pevným diskom s kapacitou 500 GB. K počítaču je možné zapojiť APPLE Thunderbolt Displej.

Mac Pro

Do kategórie najvýkonnejších počítačov od firmy APPLE patrí počítač , ktorý pripomína klasický desktopový počítač. Ponúka sa v dvoch konfiguráciách procesora. Jeden z nich je štvorjadrový Intel Xeon Nehalem so štyrmi jadrami s rýchlosťou 3,2 GHz. Druhý rad Westmere je k dispozícii v štvorjadrovej a šesťjadrovej verzii a dodáva sa s jedným alebo dvomi procesormi. Mac Pro obsahuje štyri pozície pre 3,5 -palcové disky s kapacitou až 8 TB.

1.2.4 Operačný systém

Počas práce sme pracovali s najnovším operačným systémom, ktorý priniesol radikálne vylepšenia a mnoho zásadných zmien a preto spomenieme niektoré z nich.

Mac OS X LION

,,Na konferencii 20. júla 2011 firma APPLE predstavila svoj nový operačný systém, ktorý sa nazýva Mac OS X Lion. Prvou novinkou je spôsob distribúcie a inštalácie Liona. Ide o prvý operačný systém firmy APPLE, ktorý je k dispozícii čisto digitálne on-line. Užívateľ si ho môže stiahnuť výlučne z obchodu Mac App Store. Lion pre inštaláciu potrebuje procesor Intel Core 2 Duo, i5 alebo i7. Uvedená 64 bitová verzia operačného systému nevyhnutne potrebuje pre svoj chod 64 bitový procesor.“ (Seibold, 2011 s. 1)

Nový operačný systém ponúka viac ako 250 nových funkcií. Počas práce sme využívali najmä:

17

. Gestá Multi-Touch (na posúvanie, približovanie strán a obrázkov sa používajú gestá, ktoré vytvoríme pomocou prstov) . Celoobrázkové aplikácie (systém zobrazuje aplikácie na celej obrazovke) . Mission Control (zobrazuje aplikácie, exposé, spaces a widgety na celej obrazovke) . Mac App Store (prostriedok na vyhľadávanie aplikácií) . Launchpad (aplikácia, ktorá sa zobrazuje na celej obrazovke a je tzv. ,,domovom" všetkých aplikácií) . Resume (obnova systému) . Auto Save (automatické ukladanie dokumentov) . Versions (ponúka históriu všetkých dokumentov) . AirDrop (funkcia, ktorá umožňuje bezdrôtovo odosielať súbory komukoľvek v okolí)

1.3 iOS

„iOS je skratkou pre operačný systém vytvorený spoločnosťou APPLE. Je určený pre mobilné zariadenia iPhone, hudobný prehrávač iPod touch a pre tablet iPad. Systém je postavený na báze Mac OS. Pomenovanie iOS sa používa až od štvrtej verzie tohto systému. Do tej doby sa nazýval oficiálne iPhone OS.“ (Kochan, 2010 s. 434)

1.3.1 iPhone Prvý mobilný telefón od firmy Apple bol predstavený v roku 2007 na podujatí Macworld v San Franciscu. Predstavil ho riaditeľ Apple Steve Jobs a dal mu názov iPhone. iPhone je revolučný mobilný telefón, ktorý predstavuje tri produkty v jednom. Prvým je iPod so širokouhlou obrazovkou a dotykovým ovládaním, druhým je mobilný telefón a tretím je zariadenie na internetovú komunikáciu.

V tom čase bol iPhone jedinečným zariadením svojho druhu, pretože obsahoval iba veľký displej a jedno tlačidlo. Firma Apple predstavením iPhonu udala nový smer v mobilnom priemysle. Po prvej úspešnej verzii mobilného telefónu boli predstavené ďalšie verzie, a to už v roku 2008 s názvom iPhone 3G, v roku 2009 iPhone 3GS, v roku 2010 iPhone 4 a poslednou novinkou ktorá vyšla v roku 2011 je iPhone 4S. (Trautschold, 2012 s. 29-45)

18

V bakalárskej práci sme mali možnosť pracovať s posledným modelom iPhonu, ktorý priniesol množstvo noviniek a niektoré z nich si bližšie popíšeme v nasledujúcej časti. iPhone 4S je piaty mobilný telefón spoločnosti Apple a v rade druhý, ktorý používa za svojím číselným označením písmeno S. V oficiálnej terminológii spoločnosti to znamená ,,speed" (rýchlosť). Jeho rozmery sú 115,2 x 58,6 mm. (Apple, 2011)

Telefón je zložený s jedného hardwerového tlačidla na prednej strane a ovláda sa pomocou multidotykového displeja, ktorý reaguje na vodivosť ľudského tela. Typ displeja sa označuje ako Retina displej, ktorý ponúka rozlíšenie obrazovky 960x640 bodov. Predáva sa v troch kapacitných veľkostiach 16GB, 32 GB a 64 GB a v dvoch farebných prevedeniach, a to v bielej a čiernej.

Obrázok 5 iPhone 4S

Zdroj: (http://www.apple.com, 15.2.2012)

Telefón disponuje rýchlym procesorom s dvoma jadrami s taktom 800 MHz. Procesor má k dispozícii 512 MB operačnej pamäte. iPhone 4S je prvý telefón, ktorý dokáže ingeligentne prepínať medzi dvomi anténami na vysielanie a príjem, čo zvyšuje kvalitu hovorov. Boli zdvojnásobené prenosové rýchlosti údajov. To v praxi znamená rýchlejšie pripojenie, načítavanie a sťahovanie údajov. Na zadnej strane telefónu sa

19 nachádza vstavaná kamera, ktorá umožňuje fotografovať a natáčať videá. Fotoaparát disponuje 8-megapixlovým rozlíšením a zaznamenáva videá s HD rozlíšením 1080p. iPhone 4S je vybavený najnovším operačným systémom iOS 5. Operačný systém iOS 5 budeme rozoberať v ďalšej časti práce.

1.3.2 iPod touch

Medzi ďalšie iOS zariadenia patrí hudobný prehrávač iPod touch. iPod touch sa objavil vo svojej prvej generácii v roku 2007 a môžeme povedať, že predstavuje aktuálny iPhone bez telefónnej časti.

Jeho hlavnou funkciou je prehrávanie hudby. Okrem hudby ho môžeme využiť na prehliadanie webových stránok prostredníctvom Wi-Fi, sťahovanie aplikácií, možnosť hrania hier, natáčanie a prehrávanie HD videa, či prezeranie fotiek a filmov.

Obrázok 6 iPod touch

Zdroj: (http://www.apple.com, 16.2.2012)

20

1.3.3 iPad

Tretím zariadením, ktoré využíva operačný systém iOS je tablet iPad. Firma Apple sa s myšlienkou vytvorenia tabletového počítača pohrávala už dávno pred tým ako vznikol iPad. V súčasnosti existujú dve verzie tohto tabletu. Prvá bola uvedená na trh s označením iPad v roku 2010. Po úspešnom predaji prvej verzie netrvalo dlho, kým Apple uviedol na trh v roku 2011 svoju druhú vylepšenú verziu s názvom iPad 2.

Môžeme konštatovať, že práve iPad odštartoval éru tabletov. Prednosťou iPadu sú jeho rozmery. Najnovší model iPadu je k dispozícii s kapacitou 16 GB, 32 GB a 64 GB a ponúka sa v dvoch verziách s Wi-Fi alebo Wifi+3G.

„Tablet je vybavený najnovším procesorom Apple A5. Zahŕňa funkcie ako prehrávanie videa, hudby, prehliadanie fotografií, pripojenie na internet pomocou Wi-Fi alebo 3G siete a mnoho iných užitočných funkcií. iPad môžeme využiť aj ako čítačku kníh. Myslíme si, že iPad poskytuje široké využitie v praxi a dá sa využiť v školstve, vo firmách a iných odvetviach.“ (Gregor, 2011 s. 25)

Obrázok 7 iPad

Zdroj: (http://www.apple.com, 18.2.2012)

21

1.4 História iOS verzií

1.4.1 iOS 1

V nasledujúcej časti bakalárskej práce opíšeme verzie a históriu operačného systému iOS. Operačný systém iOS 1 bol predstavený spolu s iPhonom v roku 2007. Na rozdiel od operačných systémov Windows Mobil , Palm , Symbian a BlackBerry, v tom čase iPhone nepodporoval mnoho funkcií. Nepodporoval 3G, multitasking (schopnosť vykonávať niekoľko úloh súčasne), prikladanie súborov k emailom , či hlasové vytáčanie. Napriek spomínaným nedostatkom, iOS 1 priniesol revolučné inovácie v mobilnom priemysle.

Jadro užívateľského rozhrania

Do vzniku iOS 1 smartphony nepodporovali dotykový displej. Túto skutočnosť iPhone zmenil svojim dotykovým displejom a vytvoril tak nový systém, ktorý bol oveľa jednoduchší a výkonnejší. Tým, že boli odstránené všetky tlačidlá, bol vytvorený nový interaktívny model.

Safari prehliadač

Vznikol ako nový prehliadač pre iOS. Jeho predstavenie znamenalo pre Apple veľký krok pred konkurenciou. Internetový prehliadač Safari nikdy nepodporoval Flash plugin. Táto skutočnosť je nevýhodou, pretože mnoho internetových stránok podporuje práve Flash.

Google Maps

Google Maps bola v iOS 1 prekvapujúco lepšia v iPhone ako na inom mobilnom zariadení. Aplikácia fungovala hladko, rýchlo a užívateľovi ponúkala prirodzenú interaktivitu.

Visual Voicemail

Funkcia Visual Voicemail užívateľom umožňuje pozrieť sa na zoznam hlasových správ a vypočuť si správy bez nutnosti počúvať predchádzajúce správy. Podobne ako e-mail, aj Visual Voicemail umožňuje okamžitý prístup k tým najdôležitejším správam nezávisle na poradí.

22

Softvérová klávesnica

Mnoho mobilných telefónov ponúkalo klávesnice, na ktoré sa dalo písať pomocou pera. Operačný systém iOS 1 dokonale vytvoril softvérovú klávesnicu, ktorá sa ovláda len pomocou dotyku prstov a užívateľovi sa zobrazuje len vtedy, keď ju potrebuje.

1.4.2 iOS 2

Ďalším dôležitým momentom bol príchod iOS 2 v roku 2008. Apple predstavil novinku App Store (digitálna distribúcia aplikácií pre iOS).

App Store

App Store môžeme definovať aj ako katalóg aplikácií. Všetky pridané aplikácie musia prejsť schvaľovacím procesom, čo zabráni šíreniu nevhodných aplikácií. V App Store je možné kúpiť aplikácie rôzneho charakteru, napríklad zábavné, vzdelávacie, či mnohé užitočné aplikácie. iOS SDK (iOS software development kit) iPhone bol silným konkurenčným zariadením, a preto Apple vytvoril nástroje pre vývojárov, aby mohli vytvárať lepšie vyzerajúce a pokročilejšie aplikácie. O nástroji iOS SDK sa dozvieme v druhej kapitole bakalárskej práce.

Podpora Microsoftu Exchange iOS 2 priniesol funkcie, ktoré už existovali na iných platformách. Najdôležitejšia z nich bola celková podpora produktu Microsoft Exchange pre email, kalendáre a kontakty.

MobileMe

Apple predstavil službu MobileMe ktorá bola spoplatnená 99 $ ročne. MobilMe bola službou na internete, ktorá poskytovala vzdialenú synchronizáciu emailov, adresár kontaktov, miesto pre kalendár, webovú galériu a funkciu pre vyhľadávanie polohy iPhonu. Služba bola dosť drahá a v tom čase nespoľahlivá.

23

1.4.3 iOS 3

Operačný systém iOS 3 vyšiel spolu s iPhonom 3GS v roku 2009. Príchodom tohto operačného systému boli vyplnené všetky medzery mnohými funkciami. Jednou z nich bola funkcia ,,cut, copy and paste". Ďalšia funkcia je Spotlight Search, ktorá užívateľom pomáha pri rýchlom vyhľadávaní informácií, napríklad: kontakt, mail, kalendár, hudba, podcasty, audioknihy, poznámky a video. Medzi ďalšie nové funkcie patrila podpora MMS, hlasové vytáčanie, bluetooth, aplikácia kompas a iné.

1.4.4 iOS 4

Vyšiel v roku 2010. Hlavným cieľom iOS 4 bol vznik nových vlastností pre užívateľov. Spomenieme si tie, ktoré považujeme za najvýznamnejšie.

Multitasking

„Do vzniku iOS 4 táto funkcia užívateľom chýbala a s jeho príchodom bol tento nedostatok odstránený. Mutlitasking je funkcia, ktorá umožňuje spustenie viacerých aplikácií súčasne. K tejto novej funkcii bol pridaný nový multitasking dock, ktorý sa po dvojitom stlačení Home tlačidla zjaví v dolnej časti obrazovky. Multitasking môžeme charakterizovať aj ako zoznam naposledy otvorených aplikácií. Túto funkciu považujeme za významnú, pretože nám uľahčí rýchlejšie prepínanie medzi aplikáciami.“ (Neuburg, 2011 s. 124)

Folders (priečinky)

Folders je ďalšou z funkcií, ktorá prichádza s IO4. Táto funkcia slúži na usporiadanie aplikácií do priečinkov. Považujeme ju za užitočnú, pretože nám šetrí miesto na ploche, no niekedy sa stáva, že namiesto presunutia aplikácie vytvoríme priečinok. Obsah priečinka je limitovaný. Môžeme doňho vložiť maximálne dvanásť aplikácií.

24

1.4.5 iOS 5 Dostali sme sa k poslednej časti verzií operačných systémov iOS. Predstavíme si posledný aktuálny operačný systém, ktorý bol vydaný v auguste roku 2011 s názvom iOS 5. S jeho príchodom bolo predstavených viac ako 200 noviniek, no medzi hlavné, ktoré si uvedieme, patria Siri, iMessage a iCloud.

Siri

Siri je inteligentný hlasový asistent ovládaný ľudskou rečou. Dokáže odpovedať, vytočiť telefónne číslo, posielať správy, naplánovať si stretnutie, nastaviť pripomienky a mnoho iných. Siri zatiaľ podporuje anglický, francúzsky a nemecký jazyk. Aj napriek tomu, že aplikácia Siri je v testovacej verzii, pokladáme ju za veľmi užitočnú a v budúcnosti v nej vidíme obrovský potenciál. iMessage iMessage bol vytvorený ako nová služba na posielanie správ pre užívateľov systému iOS 5. Medzi užívateľmi je možné posielať textové správy cez Wi-Fi alebo 3G. Správy sa dajú posielať cez iPad, iPhone a iPodTouch. Okrem textových správ umožňuje posielať fotky, videá. alebo kontakty.

iCloud

Služba iCloud synchronizuje fotografie, hudbu, dokumenty, kalendár a aplikácie. V praxi si iCoud môžeme predstaviť ako centrálne sieťové úložisko, ktoré sa automaticky duplikuje na všetky prístroje. Všetko čo synchronizujeme, budeme mať na iPhone, iPode touch, iPade , stolnom počítači Mac alebo v počítači s operačným systémom Windows. Z technologického hľadiska nejde o úplne prevratnú novinku. (Mark, 2011 s. 493)

Podobnými sú Dropbox alebo Windows Live Mesch. Jediný rozdiel je v tom, že zatiaľ čo tieto služby synchronizujú súbory a adresáre operačného systému, iCloud pracuje priamo na úrovni jednotlivých aplikácií. Po prihlásení do služby iCloud dostane užívateľ automaticky 5 GB voľného priestoru zdarma. iCoud zálohuje zakúpenú hudbu, aplikácie, knihy, fotky, správy každý deň prostredníctvom Wi-Fi.

25

Ak priestor 5 GB nie je pre užívateľa dostatočný, pamäť si môže za poplatok rozšíriť. Cena za 10 GB je 16 Eur za rok, 20 GB je spoplatnené sumou 32 Eur za rok a 50 GB za 80 Eur za jeden rok.

1.5 Konkurenčné mobilné platformy

1.5.1 Android

,,Andorid je komplexná open source platforma , ktorá bola navrhnutá pre mobilné zariadenia. Presadzuje ju firma Google a vlastní ju open handset alliance. Cieľom aliancie je poháňať inovácie v oblasti mobilov a ponúknuť zákazníkom bohatšie, lacnejšie a lepšie mobilné skúsenosti. Android je otvorená platforma, ktorá oddeľuje hardware od softwaru, na ktorom beží. To umožňuje viacerým zariadeniam spustiť rovnaké aplikácie a vytvoriť tak bohatší ekosystém pre vývojárov a zákazníkov“. (Gargenta, 2011 s. 34)

Pre vývojárov poskytuje Android všetky nástroje a frameworky na vývoj mobilných aplikácií. Android SDK zahŕňa všetko, čo je pre vývoj aplikácií potrebné dokonca nie je potreba ani samotné zariadenie. Pri vývoji Android aplikácií možeme naraziť na nevýhody tejto platformy. Ide o veľký počet zariadení s Androidom na trhu a tu vidíme asi najväčšiu nevýhodu. Vývojár nepozná dopredu veľkosť a rozlíšenie obrazovky. Na jednej strane sa môže stať, že na trhu je viac verzií jedného telefónu kvôli úpravám mobilných operátorov. Vyvinúť bezchybne fungujúcu aplikáciu je pre väčší počet zariadení je preto náročné. Výhody Androidu vidíme v minimálnych vstupných investíciách oproti iOS a taktiež rozšírenom programovacom jazyku Java. Najnovší softvérový upgrade Androidu nesie verziu Android 4.

1.5.2 Microsoft Windows Phone 7

Microsoft Windows Phone je operačný systém pre mobilné telefóny, ktorý vyvíja spoločnosť Microsoft. Spoločnosť má dlhoročné skúsenosti s vývojom . Začínala so systémom Windows CE, potom prišlo k pomenovaniu Windows Mobile. V roku 2010 uviedla nový operačný systém s názvom Windows Phone 7, ktorý prináša veľa nových funkcií . (Petzold, 2010 s. 10)

26

Pre vývojára je potrebné stiahnuť balík Windows Phone SDK a vývojové prostredie Microsoft Visual Studio 2010. Pre vývoj Windos Phone 7 sme sa nerozhodli, pretože tento operačný systém je ešte veľmi mladý.

1.5.3 Blackberry OS

Za mobilným operačným systémom stojí firma Research in Motion (RIM) , ktorý BlacBerry OS vyvíja už niekoľko rokov. Tento mobilný operačný systém je ideálny do biznis prostredia a využívajú ho väčšie firmy, ako i jednotlivci pre stály prístup k dôležitým dátam , internetu. (Rizk, 2009 s. 17)

Zameriava sa hlavne na bezpečnosť a pripojiteľnosť. Aplikácie sa vyvíjajú v programovacom jazyku Java a pre vývoj sa doporučuje vývojové prostredie Eclipce. BlackBerry OS je rozšírený hlavne v severnej Amerike a to bol hlavný dôvod prečo sme sa nevenovali vývoju spomínanej mobilnej platformy.

V nasledujúcich odrážkach si uvedieme prečo sme sa rozhodli vyvíjať aplikácie pre Apple iOS :

 pretože platformu poznáme ako užívatelia  iOS je operačný systém, ktorý je kvalitný, rýchly a stabilný  vývojár presne vie na akom prístroji bude aplikácia spúšťaná  práca s dynamickým a flexibilným jazykom Objective-C

27

2 Analýza vývojových nástrojov Objective-C a iPhone SDK

2.1 Objective-C

Pre splnenie nášho hlavného cieľa bakalárskej práce, vytvorenie iPhone aplikácie, bolo potrebné naučiť sa programovací jazyk. Programovanie pre platformu iOS vyžaduje znalosti objektovo orientovaného jazyka Objective-C. Jazyk je rozšírením štandardného jazyka ANSIC a ide o veľmi dynamický a flexibilný jazyk.

2.2 História Objective-C

Objective-C navrhol v 80 rokoch 20 storočia Brad J.Cox. Jazyk vychádzal z jazyka nazývaného SmallTalk 80. Objective-C je ďalšia vrstva jazyka C, kde boli doplnené rôzne prvky, a tým vznikal programovací jazyk umožňujúci tvorbu objektov a manipuláciu s nimi.

,,V roku 1988 si firma Next Software licencovala jazyk Objective-C a vyvíjala k nemu vývojové prostredie, ktoré sa nazývalo NextStep. V roku 1996 firma Apple prebrala Next a tým prebrala aj prostredie NextStep. NextStep sa stal základom operačného systému Apple a Mac OS X. O niekoľko rokov sa uvoľnila aktualizácia Objective-C , ktorá bola označená za Objective- C 2.0.“ (Mark, 2010 s. 56)

Zdrojové súbory v Objective-C používajú prípony .h - hlavičkový súbor. Zdrojový kód používa príponu .m.

2.3 Princíp programovania Objective-C

V nasledujúcej časti si rozoberieme princípy objektového orientovaného programovania, ktoré sú základom pre jazyk Objective-C.

28

Trieda Trieda je základná programovacia jednotka , ktorá definuje štruktúru objektov vytvorených podľa tejto triedy. Obsahuje deklarácie inštančných premenných, v ktorých sa hodnota v každom objekte môže líšiť. Okrem toho obsahuje definície metód ktoré môžu objekty danej triedy vykonávať. Jedna trieda môže mať ľubovoľný počet inštancii. Príkladom môže byt trieda ČLOVEK, ktorá deklaruje prítomnosť MENA a VEKU a definuje činnosti, ktoré môže človek vykonávať CHODZU a BEH.

Objekt

Objekt je inštancia konkrétnej triedy, ktorá definuje konkrétne hodnoty inštančných premenných. Samotná vnútorná štruktúra inštančných premenných je definovaná v triede. Objekt môže nad svojimi inštančnými premennými vykonávať metódy, ktoré sú definované v triede. Príkladom môže byť Auto ktoré v metóde Natankuj zvýši objem paliva. (Čada, 2009 s. 71)

Metóda

Metóda je funkcia, ktorú vykonáva objekt. Môže mať vstupné argumenty a výstupnú hodnotu. Metódy častokrát predstavujú jediný spôsob k inštančným premenným. Táto technika sa nazýva zapuzdrenie.

Zapuzdrenie

Je mechanizmus, ktorý dovoľuje pristupovať k inštančnej premennej objektu iba cez prístupové metódy (jedna na získanie hodnoty, druhá na nastavenie hodnoty). Toto umožňuje vykonávať kód pri každom vyžiadaní alebo zmene hodnoty. Objective-C umožňuje veľmi jednoduché používanie zapuzdrenia cez mechanizmus properties.

29

Dedičnosť

Triedu vieme vytvoriť tak, že definujeme jej predchodcu (inú triedu). Novovytvorená trieda bude ihneď obsahovať všetky inštančné premenné a metódy. Hovoríme, že ich zdedila. Umožňuje nám to detailnejšie definovať špeciálne prípady nad triedy. Podtrieda môže doplniť vlastne inštančné premenné a rozšíriť alebo úplne prepísať zdedené metódy.

Polymorfizmus

Vychádza zo schopnosti uložiť do premennej istej triedy inštanciu jej ľubovoľnej podtriedy.

2.4 iPhone SDK iPhone SDK je sada nástrojov, ktoré potrebujeme pre vývoj iOS aplikácie. Sada obsahuje všetky rozhrania, zdroje a nástroje. Apple svoje systémové rozhranie dodáva v špeciálnych balíkoch, ktoré sa nazývajú frameworky. Obsahujú knižnicu, kolekciu tried, metódy , funkcií zdrojov a dokumentácie. Frameworky Objective C sa označujú aj ako objektové knižnice. Práve na triedach a objektoch je postavená ich funkčnosť.

iOS podporuje vytvárať dva tipy aplikácií:

Natívne aplikácie - Obsahujú podporu využitia iOS SDK . Sú to aplikácie, skompilované do procesorových inštrukcií, teda pristupujú priamo k procesoru. V našej práci sa budeme venovať výlučne programovaniu ukážkovej natívnej aplikácie.

Webové aplikácie - Sú kombináciou HTML, kaskádových štýlov (CSS) a kódu JavaScript. K aplikáciám máme prístup iba cez internet a sú spúšťané cez webový prehliadač Safari, ktorý je postavený na jadre WebKit. (WebKit môžeme označiť za ,,motor" pre internetový prehliadač Apple Safari ). iOS umožňuje spúšťať webové aplikácie v špeciálnom režime bez užívateľského prostredia safari, kde je možnosť využiť celú obrazovku.

30

SDK zahŕňa ďalšie dôležité komponenty, ktoré je potrebné opísať. Sú rozdelené do štyroch častí :

 XCODE  Instruments  iOS Simulator  iOS Developer Library

XCODE

Nám napomáha pri vývoji aplikácií pre iOS a Mac OSX. Je to integrované vývojové prostredie a poskytuje všetky nástroje, ktoré potrebujeme na vytvorenie nášho iOS projektu. Umožňuje vytvárať, kompilovať a ladiť zdrojový kód aplikácie pomocou kompilátora a debuggera.

Instruments

Nástroj na analýzu programu, taktiež ho môžeme nazvať aj ako ladiaci nástroj. Používa sa na analýzu aplikácie a pomáha pri identifikovaní potenciálnych problémov hlavne s operačnou pamäťou. iOS Simulátor

Simulátor reálneho zariadenia nám napomáha pri testovaní aplikácie. Tým sa ubezpečíme, či sa naša aplikácia správa tak ako očakávame. Simulátor poskytuje niektoré špecifické služby, ktoré nie sú dostupné na zariadení. iOS Developer Library

Predstavuje kompletnú dokumentáciu a ukážkové zdrojové kódy. Dokumentácia je k dispozícii aj na internetových stránkach pre registrovaných vývojárov formou HTML alebo v súboroch PDF. Taktiež k dokumentácii máme prístup vo vývojovom prostredí Xcode .

31

2.5 Architektúra iOS

Architektúra operačného systému iOS sa skladá zo štyroch vrstiev:

Obrázok 8 iOS Architektúra

Zdroj: (http://developer.apple.com, 15.3.2012)

Core OS

Najnižšia vrstva Core OS poskytuje nízko úrovňové funkcie. Zaisťuje podporu napríklad pre komunikáciu s hardvérovým príslušenstvom. Ponúka rozhranie pre prácu s matematickými funkciami, zaručuje bezpečnosť citlivých dát.

Core Services

Vrstva Core Services umožňuje základnú úroveň. Umožňuje vo vysokoúrovňových službách vykonávať platby vo vnútri aplikácie, sledovať aktuálnu polohu užívateľa alebo pomocou Grand Central Dispatch vykonávať asynchrónne programovanie. Z poskytovaných frameworkov vrstva ponuka hľadajúcu aktuálnu geografickú polohu alebo umožňuje nízkoúrovňový prístup k audio a video súborom.

32

Media

Nasledujúca vrstva umožňuje vytvárať zložitejšie grafické a zvukové aplikácie. Grafickými technológiami sú napríklad CoreGraphics (Quartz) a Core Animation, zvukovými The Media Player framework, AV Foundation alebo OpenAL. K audiovizuálnym patrí Media Player framework.

Cocoa Touch

Používatelia iOS zariadení sú zvyknutí na príjemné prostredie a jednoduché používanie. Pri podpore vytvorenia pokročilého užívateľského rozhrania GUI (Graphical User Interface ) nám pomáha hlavná vrchná vrstva framework Cocoa Touch.

Cocoa Touch sa skladá z dvoch frameworkov: Foundation a UIKIT o ktorých si popíšeme v nasledujúcej časti.

Framework Foundation

Základnou triedou je vo frameworku foundation NSObject, ktorý je koreňovou triedou pre všetky triedy v Objective-C. Framework nám povoľuje pracovať zo základnými objektami ako sú čísla a textové reťazce, slovníky a množiny.

Počas našej práce sme používali hlavne :

NSString- uchovanie znakových reťazcov NSArray - združenie podobných objektov do kolekcií NSDictionary - uchovanie objektových párov (tabuľka)

Na obrázku č. 9 môžeme vidieť triedy NSObject

33

Obrázok 9 Triedy NSObject

Zdroj: (https://developer.apple.com, 25.3.2012)

UIKit

UIKit sa používa na grafické používateľské rozhranie (GUI). Stará sa o zobrazovanie komponentov a užívateľský vstup. Základná trieda je UIView od ktorej sú odvodené všetky viditeľné komponenty.

Na obrázku môžeme vidieť štruktúru UIKit.

34

Obrázok 10 UIKit

Zdroj: (https://developer.apple.com/, 28.3.2012)

35

Softvérová architektúra

Počas práce sme sa riadili konceptom MVC (Model – View- Controller) . Skratka vysvetľuje spôsob rozdelenia zdrojového kódu. Prakticky všetky iOS aplikácie sa prísne riadia funkcionalitou MVC.

Koncept MVC sa delí na tri časti:

Model - Obsahuje triedy, ktoré vytvárajú dátový model aplikácie - štruktúru dát.

View - Vytvára okná, ovládacie prvky a iné časti, ktoré užívateľ vidí a má na starosti užívateľský vstup.

Controller - Spája model a vzhľad a predstavuje logickú súčasť aplikácie.

Cieľom návrhu aplikácie podľa architektúry je maximálnym možným spôsobom od seba odlíšiť tieto tri súčasti od jej zdrojového kódu.

Obrázok 11 Model MVC

Zdroj: Vlastné spracovanie

36

3 Vytvorenie ukážkovej iOS aplikácie

Po naštudovaní teoretických znalostí jazyka Objetive-C a sady iPhone SDK, môžeme naprogramovať iPhone aplikáciu. Pri vytvorení sme kládli dôraz na jej využiteľnosť, prehľadnosť a jej reálne spustenie na zariadení iPhone 4S. V budúcnosti by sme chceli aplikáciu zverejniť do App Store - obchod s aplikáciami . Preto sme kládli veľký dôraz aj na celkový vzhľad aplikácie a jednoduché používanie.

3.1 Požiadavky na mobilnú aplikáciu

Dnešná doba nám prináša mobilné aplikácie, ktoré vyžívajú nielen technologický používatelia, ale aj široká verejnosť. Preto je potrebné pri tvorbe každej mobilnej aplikácie zadať si špecifické požiadavky, ktoré budú následne zohľadnené pri vývoji .

,,Pod pojmom požiadavky rozumieme funkcie alebo vlastnosti, ktorá by mali byť vo vyvíjanom systéme implementované. Rozlišujeme dva základné typy požiadaviek sú to funkčné a nefunkčné. Funkčné špecifikujú požiadavky na funkčnosť systému. Pod nefunkčnými požiadavkami rozumieme vlastnosti, prípadne podmienky, ktoré obmedzujú fungovanie systému.“ (Kanisová, 2007 s. 17)

Funkčné požiadavky :

- aplikácia nebude vyžadovať zdĺhavú inštaláciu

- aplikácia je navrhnutá výlučne na ovládanie prstami

- pre použitie aplikácie nie je potrebný prístup na internet, funguje v režime offline

-možnosť posielania emailu

Nefunkčné požiadavky :

- pre beh aplikácie je potrebný operačný systém iOS 5

37

Počas vývoja mobilnej aplikácie sme postupovali v štyroch fázach modelu ktorý môžeme vidieť na obrázku .

Obrázok 12 Fázy vývoja

Zdroj: Vlastné spracovanie

3.2 iPhone Aplikácia Pokutár

Je natívna aplikácia s názvom ,,Pokutár“, ktorá je určená širokej verejnosti za účelom zvýšenia právneho povedomia v blokovom konaní za priestupky proti bezpečnosti a plynulosti cestnej premávky. Užívateľom poskytuje prehľad pokút podľa sadzobníka pokút. Zdroj pokút sme čerpali z oficiálnej stránky ministerstva spravodlivosti. Zámer je zvýšiť prevenciu a bezpečnosť v cestnej premávke a tiež prispieť k transparentnosti pri styku s orgánmi Policajného zboru Slovenskej republiky.

Kvôli lepšej informovanosti užívateľa, aplikácia rozlišuje medzi výškou pokút podľa zákona o priestupkoch a podľa sadzobníka pokút. Smerodajnou výškou pokuty je výška pokuty podľa sadzobníka pokút, pretože ten je podzákonnou právnou normou, ktorou sa vykonávajú niektoré ustanovenia zákona o priestupkoch. Súčasťou aplikácie sú aj úplné znenia príslušných zákonov na úseku bezpečnosti a plynulosti cestnej premávky.

3.2.1 Užívateľské rozhranie

Snaha bola vytvoriť užívateľské rozhranie zrozumiteľné pre široké spektrum používateľom, ktorí nebudú mať problém rýchlo vyhľadať požadovanú informáciu.

Štruktúra rozhrania je jednoduchá a intuitívna, čomu je prispôsobený nenáročný, ale pritom moderný dizajn. Spoločne tak tieto prvky prispievajú k atraktivite samotnej aplikácie. Na obrázku môžeme vidieť prvotné náčrty aplikácie a rozloženie prvkov.

38

Obrázok 13 Prvotný náčrt aplikácie

Zdroj: Vlastné spracovanie

3.2.2 Finálny vzhľad

Aplikáciu sme po prvotných náčrtoch rozdelili na tri sekcie. Prvú sekciu s názvom ,,Pokutár" . Sekcia je zameraná na všetky hlavné kategórie pokút, ktorú môžeme vidieť na obrázku č.14. V databáze sa ich nachádza tridsaťjeden. Pre každú z týchto kategórií sme vytvorili jedinečnú ikonu. Koncept návrhu ikon mal jednoznačný cieľ, aby bolo pre používateľa jasné a zrozumiteľné, pri akej kategórii sa nachádza. Pre celkový vzhľad aplikácie sme použili texturované pozadie. To isté pozadie bude implementované na všetkých obrazovkách .

Obrázok 14 Finálny vzhľad aplikácie

39

Zdroj: Vlastné spracovanie

Pre druhú sekciu s názvom ,,Zákony" sme použili to isté texturované pozadie a vytvorili sme dva obrázky pre tlačidlá . Používateľ si bude môcť prezerať aktuálne zákony o cestnej premávke a zákone o priestupkoch v PDF.

Na tretej sekcii s názvom ,,Info" sme použili tlačidlo. Tlačidlo bude slúžiť na internetový odkaz stránky, kde budú informácie o aplikácií. Používateľ v tretej sekcii nájde aj informácie o aplikácii, aktuálnej verzii a zámer aplikácie .

3.2.3 Vývojárske prostredie

Pri vytvorení aplikácie sme použili vývojárske prostredie Xcode s najnovšou verziou 4.3.2. Spustením programu Xcode sme mali možnosť vidieť úvodnú obrazovku, ktorá má pre vývojára užitočné odkazy. Z odkazov sme využili hlavne prvú ponuku a to vytvorenie nového projektu v Xcode .

Ako môžeme vidieť na obrázku č.15 Xcode ponúka šablóny pre nové projekty, ktoré sú rozdelené do dvoch kategórií a sú to šablóny pre programovanie pre iOS alebo Mac OS X. Pre našu aplikáciu sme vybrali šablónu prázdna aplikácia (Empty Application), ktorá neobsahuje žiadne preddefinované triedy, iba správne nastavenie komplilácie.

Obrázok 15 Nový projekt v Xcode

Zdroj: Vlastné spracovanie

40

Vývojové prostredie nám umožňuje sofistikované používateľské prostredie. Na vrchnej časti sa nachádza panel nástrojov. Panel nástrojov zabezpečí, aby sme mali prístup k bežným príkazom napríklad vytvorenie novej triedy, kopírovanie , vloženie, testovanie aplikácie, pomoc a ďalšie.

Obrázok 16 Vývojové prostredie Xcode

Zdroj: Vlastné spracovanie

Pre základnú orientáciu v projekte nám slúži hlavne stĺpec na ľavej strane obrazovky. V ňom sa nachádza náš vytvorený projekt ,,pokutar“. Na obrázku č. 17 si môžeme všimnúť hierarchicky rozdelenú štruktúru súborov, ktorá sa v projekte rozdeľuje na päť zložiek. Zakony, Pokutar, Frameworks, Pomocné súbory a Produkt.

Vo vytvorenej zložke ,,zakony“ sú uložené zákony o cestnej premávke a priestupkoch vo formáte PDF. V adresári s názvom ,,pokutar“ sú umiestené naše zdrojové kódy a obrázky a dátové súbory.

41

Obrázok 17 Štruktúra projektu

Zdroj: Vlastné spracovanie

Zložka Pomocné súbory obsahuje súbory (Supporting Files):

Pokutar-Info.plist: súbor ktorý obsahuje metadata o aplikácii.

Main.m: obsahuje funkciu main , ktorá ma na starosti spustenie samotnej aplikácie.

Pokutar-Prefix.pch: koncovka .pch znamená prekompilovaná hlavička. Ide o hlavičkové súbory z externých frameworkov, ktoré využívame. Obsah tejto hlavičky je pridaný na začiatok každého zdrojového súboru v projekte.

Frameworks: v zložke frameworks sa nachádzajú odkazy frameworky ako sme už spomínali Foundation a UIKit. V projekte sme použili aj framework Message UI, na posielanie emailových správ.

Produkt: odkaz na výslednú aplikáciu .

Hlavný vstup programu

Ako môžeme vidieť na obrázku č. 18 hlavný vstup programu sa nachádza v adresári v pomocných súboroch v main.m

42

Obrázok 18 Hlavný vstup do programu

Zdroj: Vlastné spracovanie main.m obsahuje špeciálny blok začínajúci slovom @autoreleasepool, ktorý je súčasťou správy pamäti. Main spustí funkciu UIApplicationMain z frameworku UIKit. UIApplicationMain má štyri parametre: fukciu main. Tretí je názov vlastnej potriedy UIApplication alebo nil. Štvrtý je názov triedy, ktorá slúži ako delegát aplikácie. int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, @" UIApplication", @"PKAppDelegate"); } }

Zdroj: Vlastné spracovanie

3.2.4 Interface Builder

Interface Builder je grafický nástroj, ktorý je v najnovšej verzii už súčasťou aplikácie XCODE. Slúži na vytváranie grafického rozhrania iOS aplikácií a Mac OS . Vizuálnou formou nám pomáha vytvárať, rozvrhnúť a nakonfigurovať viditeľnú časť aplikácie (View).

Poskytuje všetky potrebné komponenty od textov, tlačidiel, prepínanie medzi oknami, tabuľky, navigačný bar až po zložitejšie objekty. Interface Builder pracuje zo súbormi typu .xib , ktoré sa skompilujú na .nib.

43

Obrázok 19 Interface Builder

Zdroj: Vlastné spracovanie

3.3 Popis tried a funkcií prvej sekcie

Aplikácia ,,Pokutár“ umožňuje používateľovi prehľad pokút. Aby sme mu umožnili prechádzať medzi jednotlivými kategóriami, použili sme objekt tabuľka.

Tabuľky sa využívajú v rôznych iPhone systémových aplikáciách a je to najbežnejší spôsob zobrazenia dát. Pre príklad uvedieme aplikácie Mail a iPod, ktoré využívajú tabuľky.

Tabuľky zobrazujú zoznam dát. Tabuľka je objekt a je inštančnou triedy UITableView. Každý viditeľný riadok tabuľky je inštancia triedy UITableViewCell. Treba ale spomenúť, že tabuľky nezodpovedajú za zachovanie dát. Dáta získavajú od objektu označovaného ako dátový zdroj, ktorý implementuje protokoly UITableViewDelegate a UITableViewDataSource.

Dátový zdroj má na starosti nastavenie počtu riadkov, výšky riadkov a obsahu a reakcie stlačenia jednotlivých buniek.

44

Ukážka metódy, ktorá nastaví obsah bunky:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellID = @"PKCategoryCELL"; PKCategoryCELL *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

NSDictionary *rowDictionary = [[self.propertyList objectForKey:@"rows"] objectAtIndex:indexPath.row];

cell.titleLabel.text = [rowDictionary objectForKey:@"text"];

UIImage *image = [UIImage imageNamed:[rowDictionary objectForKey:@"image name"]]; cell.iconImageView.image = image;

return cell; } Zdroj: Vlastné spracovanie

3.3.1 Práca s dátami - import dát

Projekt si vyžadoval veľký objem dát. V projekte sme vytvorili zložku označenú ako Data, v ktorej sme vytvorili súbory typu property.list. Property list je založený na xml a umožňuje jednoduché definovanie statických dát. Podporuje základné typy ako string (reťazec) array (pole) a dictionary (tabuľka).

Pre každú hlavnú kategóriu pokút sme vytvorili samostatný property list a jeden hlavný ktorý slúži ako index.

Obrázok 20 Property list

Zdroj: Vlastné spracovanie

45

Property listy majú výbornú podporu vo framework Foundation , ktorý poskytuje prakticky jednoriadkové načítanie dát do objektovej štruktúry.

Ukážka načítania property list: self.propertyList = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

Zdroj: Vlastné spracovanie

3.3.2 Vytvorenie vnorenej tabuľky

Po označení kategórie priestupku sa zobrazí zoznam priestupkov v danej kategórii.

Zoznam je znova tabuľka s podobnou funkčnosťou ako sme použili v hlavnej sekcii tabuľky. Pridali sme text hlavnej kategórie priestupku do záhlavia tabuľky, aby používateľ vedel v ktorej časti sa nachádza. Každá bunka obsahuje sumy a tlačidlo na odoslanie emailu príslušnej pokuty.

Obrázok 21 Vnorená tabuľka

Zdroj: Vlastné spracovanie

Stlačenie tlačidla email spustí vlastnú metódu, ktorá zostaví predmet a telo emailu. V tele emailu sme použili HTML kód na naformátovanie správy. Šablónu sme načítali z pomocného súboru.

46

Obrázok 22 Email

Zdroj: Vlastné spracovanie

Následne sa spustí inicializáciu emailovej obrazovky obrázok č. 22. To má na starosti metóda:

- (void) showEmailWithBody:(NSString *)body { if ( ! [MFMailComposeViewController canSendMail]) { [[[UIAlertView alloc] initWithTitle:@"Nie je možné odoslať email" message:@"Nie je možné odoslať, nie je nastavený účet" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; return; }

MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; mailController.mailComposeDelegate = self; [mailController setSubject:@"Pokutár - informácia o pokute"]; [mailController setMessageBody:body isHTML:YES];

//...

[self presentViewController:mailController animated:YES completion:nil]; } Zdroj: Vlastné spracovanie

47

3.4 Realizácia druhej sekcie obrazovky

Pre vytvorenie druhej sekcie sme použili nový View Controller . Obsahuje dve tlačidlá, ktoré umožnia prezerať aktuálne zákony vo formáte pdf. Používateľ má možnosť zákon vytlačiť priamo na kompatibilnej tlačiarni, alebo otvoriť v inej aplikácii na prezeranie PDF.

Kód pre zobrazenie pdf dokumentu:

-(IBAction)otvorPDF:(id)sender{

NSURL *documentURL = [[NSBundle mainBundle] URLForResource:@"Zákon o cestnej premávke" withExtension:@"pdf"]; UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:documentURL]; documentController.name = @"8/2009 Z.z."; documentController.delegate = self; [documentController presentPreviewAnimated:YES];

}

Zdroj: Vlastné spracovanie

3.5 Realizácia tretej sekcie obrazovky

Obsahuje informácie o aplikácii a tlačidlo, ktoré zobrazí internetovú stránku.

Kód pre otvorenie internetovej stránky:

- (IBAction)otvorImedo:(id)sender{ NSURL *url = [ [ NSURL alloc ] initWithString: @"http://www.imedo.sk" ]; [[UIApplication sharedApplication] openURL:url];

}

Zdroj: Vlastné spracovanie

48

3.6 Testovanie a ladenie aplikácie

Testovanie a ladenie je veľmi dôležitá vec. Skôr ako sa dostane aplikácia k používateľovi, je potrebné ju počas celého vývoja ladiť. Aplikáciu sme testovali v dvoch fázach: počas vývoja, implementácie a formou beta testu, pri ktorom aplikáciu testovali vytipovaný používatelia.

Počas vývoja sme neraz narazili na problematické miesta. Tu sme využívali možnosť Debuggera ako ho môžeme vidieť na obrázku č 23. Debugger nám umožňoval odkrokovať beh programu a vidieť hodnoty premenných.

Obrázok 23 Debugger

Zdroj: Vlastné spracovanie

49

Záver

Čoraz viac ľudí aktívne používa mobilné zariadenia, ktoré sú z roka na rok výkonnejšie. Možnosti ich využitia naberajú na intenzite. Preto sme sa rozhodli pre tému vývoja aplikácií pre Apple iOS . Prácu sme rozdelili do troch kapitol. V prvej kapitole sme si vymedzili základné pojmy histórie firmy APPLE až po súčasnosť. Opísali sme iOS zariadenia a históriu operačného systému iOS. Pre porovnanie sme sa venovali aj konkurenčným mobilným platformám Android, Microsoft a Blackberry. Tento čiastkový cieľ bol naplnený v 1. kapitole.

Programovanie pre platformu iOS vyžadovalo znalosť objektovo orientovaného jazyka Objective-C. V druhej kapitole sme sa zamerali na spomínaný jazyk Objective-C. Popísali sme princípy programovania, rozobrali sme pojmy trieda, objekt, metóda, zapuzdrenie, dedičnosť a polymorfizmus. V kapitole 2.4 sme analyzovali sadu iPhone SDK, ktorá je potrebná pre vývoj iOS aplikácie. Druhý čiastkový cieľ bol naplnený.

Hlavným cieľom tejto bakalárskej práce bolo bližšie zoznámiť sa s vývojom aplikácií pre zariadenie Apple iPhone a následne vytvoriť ukážkovú aplikáciu.

Vytvorili sme aplikáciu s názvom Pokutár, ktorá je určená širokej verejnosti za účelom zvýšenia právneho povedomia v blokovom konaní za priestupky proti bezpečnosti a plynulosti cestnej premávky. Jej hlavným cieľom je poskytovať prehľad pokút podľa sadzobníka. Aplikáciu je možné reálne otestovať a spustiť na zariadení iPhone 4S. Počas vývoja sme kládli veľký dôraz nielen na funkcionalitu, ale aj na vzhľad, pretože by sme chceli v budúcnosti aplikáciu zverejniť do obchodu s aplikáciami App Store.

V budúcnosti môžeme počítať s rozšírením aplikácie pre ďalšie iOS zariadenie iPad. Cieľ bakalárskej práce bol splnený, a to ako v hlavnom cieli, tak aj v čiastkových cieľoch. Zdrojový kód aplikácie je priložený v prílohe.

50

Zoznam použitej literatúry

1. Apple. 2011. www.apple.com. iPhone. [Online] 20. 11 2011. [Dátum: 10. 2 2012.] http://www.apple.com/iphone/. 2. Čada, O. 2009. Cocoa úvod do programování počítaču Apple. Praha : Grada Publishing, a. s., 2009. s. 199. ISBN 978-80-247-6356 9.

3. Gargenta, M. 2011. Learning Android. Canada : O´Reilly Media, 2011. s. 245. ISBN 978-1-449-39050-1. 4. Gregor, L. 2011. iPad - pruvodce s tipy a triky. Brno : Computer Press, 2011. s. 287. ISBN 978-80-251-3336-1. 5. Isaacson, W. 2011. Steve Jobs. Bratislava : Eastone Books, 2011. s. 546. ISBN 978-80-8109-194-0. 6. Kanisová, H.- Muller,M. 2007. UML srozumitelne, 2.aktualizované vydání. Brno : Computer Press, a. s., 2007. s. 176. ISBN 80-251-1083-4. 7. Kochan, S. 2010. Objective-C 2.0. Brno : Computer Press, a. s., 2010. s. 550. ISBN 978-80-251-2654-7. 8. Mark, D.- LaMarche, J. 2010. iPhone SDK. Brno : Computer Press, 2010. s. 480. ISBN 978-80-251-2820-6. 9. Mark, D.- Nutting, J.- LaMarche, J. 2011. Beginning iOS 5 Development. New York : Apress, 2011. s. 731. ISBN 978-1-4302-3606-1. 10. Murphy, M. 2011. Android 2 - pruvodce programováním mobilných aplikací. Brno : Computer Press, 2011. ISBN 978-80-251-3194-7. 11. Neuburg, M. 2011. Programming iOS 4. Canada : O´Reilly Media, 2011. s. 787. ISBN 978-1-449-38843-0. 12. Petzold, Ch. 2010. Programming Windows Phone 7. Washington : Microsoft Press, 2010. s. 997. ISBN 978-0-7356-4335-2. 13. Rizk, A. 2009. Beginning BlackBerry Development. New York : Apress, 2009. s. 251. ISBN 978-1-4302-2428-0. 14. Seibold, Ch. 2011. Mac OS X Lion. Canada : O´Reilly Media, 2011. s. 219. ISBN 978-1-449-31058-5. 15. Trautschold, M.- Ritchie, R.- Mazo, G. 2012. iPhone 4S - made simple. New York : Apress, 2012. s. 607. ISBN 978-1-4302-3588-0. 16. Weyhrich, Stephnen. 2010. Apple II history. [Online] 25. 12 2010. [Dátum: 25. 1 2012.] http://apple2history.org/history/ah03/. 17. http://www.apple.com. 15.1.2012. [Online] 15.1.2012. http://www.apple.com/mac/. 18. http://www.apple.com. 3.1.2012. [Online] 3.1.2012.http://www.apple.com/ipod/.

51

19. http://www.apple.com. 15.2.2012. [Online] 15.2.2012. http://www.apple.com/iphone/. 20. http://www.apple.com. 16.2.2012. [Online] 16.2.2012. http://www.apple.com/ipodtouch/. 21. http://www.apple.com. 18.2.2012. [Online] 18.2.2012. http://www.apple.com/ipad/. 22. https://developer.apple.com. 25.3.2012. [Online] 25.3.2012. https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundat ion/ObjC_classic/Intro/IntroFoundation.html. 23. http://developer.apple.com. 15.3.2012. [Online] 15.3.2012. http://developer.apple.com/library/ios/#DOCUMENTATION/Miscellaneous/Conce ptual/iPhoneOSTechOverview/IPhoneOSOverview/IPhoneOSOverview.html. 24. https://developer.apple.com/. 28.3.2012. [Online] 28.3.2012. http://disanji.net/iOS_Doc/#documentation/UIKit/Reference/UIKit_Framework/Intr oduction/Introduction.html.

52

Zoznam obrázkov

Obrázok 1 Verzie operačného systému ...... 13 Obrázok 2 Hudobné prehrávače ...... 14 Obrázok 3 Prenosné počítače ...... 15 Obrázok 4 Stolné počítače ...... 16 Obrázok 5 iPhone 4S ...... 19 Obrázok 6 iPod touch ...... 20 Obrázok 7 iPad ...... 21 Obrázok 8 iOS Architektúra ...... 32 Obrázok 9 Triedy NSObject ...... 34 Obrázok 10 UIKit ...... 35 Obrázok 11 Model MVC ...... 36 Obrázok 12 Fázy vývoja ...... 38 Obrázok 13 Prvotný náčrt aplikácie ...... 39 Obrázok 14 Finálny vzhľad aplikácie ...... 39 Obrázok 15 Nový projekt v Xcode ...... 40 Obrázok 16 Vývojové prostredie Xcode ...... 41 Obrázok 17 Štruktúra projektu ...... 42 Obrázok 18 Hlavný vstup do programu ...... 43 Obrázok 19 Interface Builder ...... 44 Obrázok 20 Property list ...... 45 Obrázok 21 Vnorená tabuľka ...... 46 Obrázok 22 Email ...... 47 Obrázok 23 Debugger ...... 49

53

Príloha č. 1 Zdrojový kód aplikácie Pokutár

Na obrázku vidíme celú štruktúru objektového návrhu aplikácie.

 PKAppDelegate – objekt, z ktorého sa vytvorí pri spúšťaní aplikácie jedna inštancia, ktorá je zaregistrovaná ako delegát hlavnému objektu triedy UIApplication.  UIApplication tomuto objektu spúšťa metódy definované v protokole UIApplicationDelegate, ak ich implementuje.

// // PKAppDelegate.h // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

54

#import @interface PKAppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; @end

 V triede PKAppDelegate.m sme nastavili hlavnú štruktúru pre hlavné grafické požívateľské prostredie.

// PKAppDelegate.m // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import "PKAppDelegate.h" #import "PKCategoriesViewController.h" #import "PKInfoViewController.h" #import "PKLawViewController.h"

@implementation PKAppDelegate @synthesize window = _window;

 V aplikácii je implementovaná metóda - (BOOL) applicationdidFinishLaunchingWithOptions. Identifikátor BOOL väčšinou používa hodnoty typu YES a NO. Metóda má za úlohu zostaviť hlavnú štruktúru grafického užívateľského prostredia.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

//tab 1 PKCategoriesViewController *categoriesController = [[PKCategoriesViewController alloc] init]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:categoriesController];

//tab 3 PKInfoViewController * infoController = [[PKInfoViewController alloc] init]; UINavigationController *infonavController = [[UINavigationController alloc]

55 initWithRootViewController:infoController]; [infoController updateTitle];

//tab 4 PKLawViewController * lawController = [[PKLawViewController alloc]init]; UINavigationController *lawNavController = [[UINavigationController alloc] initWithRootViewController:lawController]; [lawController updateTitle];

UITabBarController *tabController = [[UITabBarController alloc ]init]; NSArray*sekcie = [[NSArray alloc]initWithObjects:navController,lawNavController,infonavController, nil]; tabController.viewControllers = sekcie;

 Pomocou triedy UITabBar sme v projekte nastavovali prepínanie farby obrazovky V našom prípade sme nastavili bielu.

tabController.tabBar.selectedImageTintColor = [UIColor colorWithWhite:0.75 alpha:1];

 Pre pozadie TabBaru sme nastavili obrázok pozadia s názvom bottom-bar.

tabController.tabBar.backgroundImage = [UIImage imageNamed:@"bottom-bar"];

 Nastavenie triedy UIImage pre vrchný obrázok aplikácie . Použili sme obrázok s názvom bar.png.

//bar UIImage *barBG = [UIImage imageNamed:@"bar.png"]; [[UINavigationBar appearance] setBackgroundImage:barBG forBarMetrics:UIBarMetricsDefault];

56

NSMutableDictionary *textAttr = [[NSMutableDictionary alloc] init];

 Nastavenie písma vo vrchnom bare použitý font Helvetica-Bold veľkosť 20.

[textAttr setValue:[UIFont fontWithName:@"Helvetica-Bold" size:20] forKey:UITextAttributeFont];

 Pre aplikáciu sme vytvorili špeciálne tlačidlo. Ako vidíme na obrázku, pre tlačidlo sme vytvorili nový obrázok s parametrami meniacimi veľkosť obrázka (2, 16, 2, 16).

UIImage *image = [UIImage imageNamed:@"back6"]; NSLog(@"size=%@", NSStringFromCGSize(image.size)); UIImage *scaledImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(2, 16, 2, 16)]; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:scaledImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

 Pomocou NSMutableDictionary sme nakonfigurovali atribúty pre text v tlačidlách.

NSMutableDictionary *backTextAttr = [[NSMutableDictionary alloc] init]; [backTextAttr setValue:[UIFont boldSystemFontOfSize:12] forKey:UITextAttributeFont]; [backTextAttr setValue:[UIColor blackColor] forKey:UITextAttributeTextColor]; UIOffset backOffset = UIOffsetMake(0, 0); [backTextAttr setValue:[NSValue valueWithUIOffset:backOffset] forKey:UITextAttributeTextShadowOffset];

[[UIBarButtonItem appearance] setTitleTextAttributes:[backTextAttr copy] forState:UIControlStateNormal];

[backTextAttr setValue:[UIColor whiteColor] forKey:UITextAttributeTextColor]; [[UIBarButtonItem appearance] setTitleTextAttributes:[backTextAttr copy] forState:UIControlStateHighlighted];

UIImage *imageGo = [UIImage imageNamed:@"back51"]; UIImage *scaledImageGo = [imageGo resizableImageWithCapInsets:UIEdgeInsetsMake(2, 15, 2, 14)]; [[UIBarButtonItem appearance] setBackgroundImage:scaledImageGo forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; self.window.rootViewController = tabController;

self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }

@end 57

// PKCategoriesViewController.h // pokutar // Created by Lukas Medved// Copyright (c) 2012 Company. All rights reserved.

@class PKSearchEngine;

 PKCategoriesViewController je podtrieda systémovej UIViewController, ktorá je jedným zo základných prvkov GUI. UIViewController reprezentuje jednu obrazovku a definuje jej rozloženie, správanie jednotlivých prvkov a zachytáva požívateľský vstup

@interface PKCategoriesViewController : UIViewController

 V premennej propertyList uchovávame obsah plistu prevedeného do objektovej formy deklarujeme, že táto trieda funguje ako zdroj dát a je správca pre UItableView - tabuľku/zoznam (objektova forma = sustava NSDictionary, NSArray, NSString)

@property (nonatomic, strong) NSDictionary *propertyList;

 Inštancia UItableView prostriedok na zobrazovanie informácií IBOutlet – predstavuje inštanciu, ktorá je definovaná v súbore XIB.

@property (nonatomic, strong) IBOutlet UITableView *tableView;

@end

// PKCategoriesViewController.m // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import "PKCategoriesViewController.h" #import "PKPenaltiesViewController.h" #import "PKCategoryCELL.h" #import "PKSearchEngine.h"

58

@implementation PKCategoriesViewController

@synthesize propertyList = _propertyList; @synthesize tableView = _tableView; @synthesize searchEngine = _searchEngine;

 (NSDictionary *)propertyList - prístupová metóda k inštančnej premennej _propertyList. V nej overujeme či v _propertyList je niečo uložené. Ak nie, tak načíta konkrétny súbor Data-Kategorie.

- (NSDictionary *)propertyList { if (_propertyList == nil) { //Loading property list on demand. NSLog(@"Accessing 'propertyList' for the first time."); NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Data - Kategorie" ofType:@"plist"]; self.propertyList = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; } return _propertyList; }

- (void)viewDidLoad { [super viewDidLoad]; self.title = [self.propertyList objectForKey:@"title"]; self.navigationItem.title = self.title; self.navigationController.tabBarItem.title = self.navigationItem.title;

 Nastavenie obrázku v našom prvom TabBare

UIImage*pokutarImage = [UIImage imageNamed:@"pokutaricon"]; self.navigationController.tabBarItem.image= pokutarImage;  Registrácia súboru XIB s konkrétnym názvom triedy bunky

UINib *cellNib = [UINib nibWithNibName:@"PKCategoryCELL" bundle:nil]; [self.tableView registerNib: cellNib forCellReuseIdentifier:@"PKCategoryCELL" ];

 Metóda pre spustenie tableView. Kontrolór (self) je jeho dataSource. Metóda vráti tableView počet riadkov, ktoré má zobraziť.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSInteger rows = [[self.propertyList objectForKey:@"rows"] count]; NSLog(@"Categories: %i", rows); return rows; }

59

 Úlohou metódy UITableViewCell je nakonfigurovať bunku, ktorá sa zobrazí v tabuľke

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellID = @"PKCategoryCELL"; PKCategoryCELL *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

NSDictionary *rowDictionary = [[self.propertyList objectForKey:@"rows"] objectAtIndex:indexPath.row];

cell.titleLabel.text = [rowDictionary objectForKey:@"text"];

UIImage *image = [UIImage imageNamed:[rowDictionary objectForKey:@"image name"]]; cell.iconImageView.image = image;

return cell; }

 Metóda sa spustí po označení riadku a vytvorí pod-obrazovku, nakonfiguruje ju a zobrazí

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES];

NSDictionary *rowDictionary = [[self.propertyList objectForKey:@"rows"] objectAtIndex:indexPath.row];

PKPenaltiesViewController *penaltiesController = [[PKPenaltiesViewController alloc] init];

NSString *subPlistPath = [[NSBundle mainBundle] pathForResource:[rowDictionary objectForKey:@"sub file"] ofType:@"plist"]; penaltiesController.propertyList = [[NSDictionary alloc] initWithContentsOfFile:subPlistPath];

[self.navigationController pushViewController:penaltiesController animated:YES]; }

 Nastavenie výšky riadku

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 75;

}

@end

60

// // PKPenaltiesViewController.h // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import

@interface PKPenaltiesViewController : UIViewController

@property (nonatomic, strong) NSDictionary *propertyList; @property (nonatomic, strong) IBOutlet UITableView *tableView; @property (nonatomic, strong) IBOutlet UILabel *priestupokLabel;

 Metóda pre zobrazenie tela emailu. Podľa stlačeného riadku zobrazíme email s požadovaným textom.

- (void) showEmailWithBody:(NSString *)body;

@end

// // PKPenaltiesViewController.m // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import "PKPenaltiesViewController.h" #import "PKCategoryCELLsecond.h"

@implementation PKPenaltiesViewController

@synthesize propertyList = _propertyList; @synthesize priestupokLabel = _priestupokLabel;

 Metóda pre zobrazenie názvu

- (void)viewDidLoad {

61

[super viewDidLoad]; self.navigationItem.title = @"Priestupky"; self.priestupokLabel.text = [self.propertyList objectForKey:@"title"];

 Registrácia súboru XIB s konkrétnym názvom triedy bunky

UINib *cellNib = [UINib nibWithNibName:@"PKCategoryCELLsecond" bundle:nil]; [self.tableView registerNib: cellNib forCellReuseIdentifier:@"PKCategoryCELLsecond"];

}

- (void)goBack { [self.navigationController popViewControllerAnimated:YES]; }

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; }

@synthesize tableView = _tableView;

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; }

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSArray *riadky = [self.propertyList objectForKey:@"rows"]; return riadky.count; }  Dáta

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { PKCategoryCELLsecond *cell = [tableView dequeueReusableCellWithIdentifier:@"PKCategoryCELLsecond"];

NSArray *riadky = [self.propertyList objectForKey:@"rows"]; NSDictionary *dataRiadku = [riadky objectAtIndex:indexPath.row];

cell.textLabel.text = [dataRiadku objectForKey:@"text"]; cell.subtextLabel.text = [dataRiadku objectForKey:@"sub text"]; cell.cenasadzobnikLabel.text = [dataRiadku objectForKey:@"cena sadzobnik"]; cell.cenazakonLabel.text = [dataRiadku objectForKey:@"cena zakon"];

62

 Výpočet výšky

NSString *text = [dataRiadku objectForKey:@"text"]; UIFont *textFont = [UIFont fontWithName:@"STHeitiTC-Medium" size:16]; CGSize textSize = [text sizeWithFont:textFont constrainedToSize:CGSizeMake(280, 1000) lineBreakMode:UILineBreakModeWordWrap]; cell.textLabel.frame = CGRectMake(20, 10, textSize.width, textSize.height);

NSString *subText = [dataRiadku objectForKey:@"sub text"]; UIFont *subTextFont = [UIFont fontWithName:@"STHeitiTC-Medium" size:15]; CGSize subTextSize = [subText sizeWithFont:subTextFont constrainedToSize:CGSizeMake(280, 1000) lineBreakMode: UILineBreakModeWordWrap]; cell.subtextLabel.frame = CGRectMake(20, 10 + textSize.height + 4, subTextSize.width, subTextSize.height);

cell.mailButton.tag = indexPath.row; [cell.mailButton addTarget:self action:@selector(mailButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

return cell; }

 Výška riadku

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSArray *riadky = [self.propertyList objectForKey:@"rows"]; NSDictionary *dataRiadku = [riadky objectAtIndex:indexPath.row];

NSString *text = [dataRiadku objectForKey:@"text"]; UIFont *textFont = [UIFont fontWithName:@"STHeitiTC-Medium" size:16]; CGSize textSize = [text sizeWithFont:textFont constrainedToSize:CGSizeMake(280, 1000) lineBreakMode:UILineBreakModeWordWrap];

NSString *subText = [dataRiadku objectForKey:@"sub text"]; UIFont *subTextFont = [UIFont fontWithName:@"STHeitiTC-Medium" size:15]; CGSize subTextSize = [subText sizeWithFont:subTextFont constrainedToSize:CGSizeMake(280, 1000) lineBreakMode: UILineBreakModeWordWrap];

return 10 + textSize.height + 4 + subTextSize.height + 75; }

63

 Metóda pre email

- (void) mailButtonTapped:(UIButton *)button { NSInteger riadok = button.tag;

NSArray *riadky = [self.propertyList objectForKey:@"rows"]; NSDictionary *dataRiadku = [riadky objectAtIndex:riadok];

NSString *title = [self.propertyList objectForKey:@"title"]; NSString *kategoria = [dataRiadku objectForKey:@"text"]; NSString *popis = [dataRiadku objectForKey:@"sub text"];

NSString *cenaSadzobnika = [dataRiadku objectForKey:@"cena sadzobnik"]; NSString *cenaZakona = [dataRiadku objectForKey:@"cena zakon"];

NSURL *htmlFormatURL = [[NSBundle mainBundle] URLForResource:@"Email" withExtension:@"xhtml"]; NSString *htmlFormat = [NSString stringWithContentsOfURL:htmlFormatURL encoding:NSUTF8StringEncoding error:nil]; NSString *emailBody = [NSString stringWithFormat:htmlFormat, title, kategoria, popis, cenaSadzobnika, cenaZakona];

[self showEmailWithBody:emailBody]; }

- (void) showEmailWithBody:(NSString *)body { if ( ! [MFMailComposeViewController canSendMail]) { [[[UIAlertView alloc] initWithTitle:@"Nie je možné odoslať email" message:@"Nie je možné odoslať, nie je nastavený účet" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; return; }

MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; mailController.mailComposeDelegate = self; [mailController setSubject:@"Pokutár - informácia o pokute"]; [mailController setMessageBody:body isHTML:YES];

UIImage *imageGo = [UIImage imageNamed:@"back4"]; UIImage *scaledImageGo = [imageGo resizableImageWithCapInsets:UIEdgeInsetsMake(2, 16, 2, 16)]; [[UIBarButtonItem appearance] setBackgroundImage:scaledImageGo forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

[self presentViewController:mailController animated:YES completion:nil]; }

64

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {

[self dismissViewControllerAnimated:YES completion:^{ UIImage *imageGo = [UIImage imageNamed:@"back51"]; UIImage *scaledImageGo = [imageGo resizableImageWithCapInsets:UIEdgeInsetsMake(2, 15, 2, 14)]; [[UIBarButtonItem appearance] setBackgroundImage:scaledImageGo forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; }];

}

@end

65

Opis kódu:

 Pomocný súbor email.xhtml pre naformátovanie emailu podľa HTML

Pokutar

%@

%@

%@

Sankcia podľa sadzobníka: %@

Sankcia podľa zákona: %@

66

 Pre nastavenie hlavičky PKCategoryCell sme nastavili obrázok pre zobrazovanie ikony, obrázok navigačnej šípky a textu hlavnej kategórie

// PKCategoryCELL.h // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import

@interface PKCategoryCELL : UITableViewCell @property (nonatomic, strong) IBOutlet UIImageView *iconImageView; @property (nonatomic, strong) IBOutlet UIImageView *backgroundImageView; @property (nonatomic, strong) IBOutlet UILabel * titleLabel;

@end

Opis kódu:

// PKCategoryCELL.m // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. // #import "PKCategoryCELL.h"

@implementation PKCategoryCELL @synthesize iconImageView = _iconImageView; @synthesize backgroundImageView = _backgroundImageView; @synthesize titleLabel = _titleLabel;

@end

67

 V hlavičkovom súbore PKCategoryCELLsecond boli nastavené atribúty pre hlavný text priestupku, pre pomocný text, pre zobrazovanie súm sadzobníkov a sumy podľa zákona. Pre odoslanie emailu sme požili tlačidlo.

// // PKCategoryCELLsecond.h // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import

@interface PKCategoryCELLsecond : UITableViewCell @property (nonatomic, strong) IBOutlet UILabel * textLabel; @property (nonatomic, strong) IBOutlet UILabel * subtextLabel; @property (nonatomic, strong) IBOutlet UILabel * cenasadzobnikLabel; @property (nonatomic, strong) IBOutlet UILabel * cenazakonLabel; @property (nonatomic, strong) IBOutlet UIButton * mailButton;

@end

 V zdrojovom kóde sme následne vytvorili prístupové metódy

// // PKCategoryCELLsecond.m // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

68

#import "PKCategoryCELLsecond.h"

@implementation PKCategoryCELLsecond

@synthesize textLabel = __textLabel; @synthesize subtextLabel = _subtextLabel; @synthesize cenasadzobnikLabel = _cenasadzobnikLabel; @synthesize cenazakonLabel = _cenazakonLabel; @synthesize mailButton = _mailButton;

@end

69

// PKLawViewController.h // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import

@interface PKLawViewController : UIViewController

- (void)updateTitle;

@end

// PKLawViewController.m // pokutar // // Created by Lukas Medved on 4/2/12. // Copyright (c) 2012 Company. All rights reserved. //

#import "PKLawViewController.h"

@implementation PKLawViewController

 Metóda pre názov druhej sekcie

- (void)updateTitle { self.title = @"Zákony"; self.navigationItem.title = self.title; self.navigationController.tabBarItem.title = self.navigationItem.title;

UIImage*zakonImage = [UIImage imageNamed:@"zakonyicon"]; self.navigationController.tabBarItem.image= zakonImage;

}

70

- (void)viewDidLoad { [super viewDidLoad];

}

-  Metóda pre otvorenie PDF zákona o cestnej premávke

-(IBAction)otvorPDF:(id)sender{

NSURL *documentURL = [[NSBundle mainBundle] URLForResource:@"Zákon o cestnej premávke" withExtension:@"pdf"]; UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:documentURL]; documentController.name = @"8/2009 Z.z."; documentController.delegate = self; [documentController presentPreviewAnimated:YES];

//icon black self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

}

 Metóda pre otvorenie PDF zákona o priestupkoch

-(IBAction)otvorPDF2:(id)sender{ NSURL *documentURL = [[NSBundle mainBundle] URLForResource:@"Zákon o priestupkoch" withExtension:@"pdf"]; UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:documentURL]; documentController.name = @"372/1990 Zb."; documentController.delegate = self; [documentController presentPreviewAnimated:YES];

//icon black self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

}

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionContr oller *)controller { return self.navigationController; }

@end

71

Opis kódu:

// // PKInfoViewController.h // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import

@interface PKInfoViewController : UIViewController

- (void)updateTitle;

@end

// // PKInfoViewController.m // pokutar // // Created by Lukas Medved // Copyright (c) 2012 Company. All rights reserved. //

#import "PKInfoViewController.h"

@implementation PKInfoViewController

- (void)updateTitle { self.title = @"Info"; self.navigationItem.title = self.title; self.navigationController.tabBarItem.title = self.navigationItem.title;

UIImage*pokutarImage = [UIImage imageNamed:@"infoicon"]; self.navigationController.tabBarItem.image= pokutarImage;

}

- (void)viewDidLoad { [super viewDidLoad];

72

}

 -Metóda pre otvorenie internetovej stránky. Metóda sa spustí pri stlačení tlačidla. Samotné otvorenie v systémovom prehliadači sa postará objekt triedy UIApplication, ktorý existuje iba jeden.

- (IBAction)otvorImedo:(id)sender{ NSURL *url = [ [ NSURL alloc ] initWithString: @"http://www.imedo.sk" ]; [[UIApplication sharedApplication] openURL:url];

}

@end

73