MASARYKOVA UNIVERZITA Fakulta informatiky
DIPLOMOVÁ PRÁCE Vývoj aplikací pro Windows Phone 8 a portace na Windows 8
Brno, 2014
Bc. Václav Holuša
Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Bc. Václav Holuša
Poděkování Rád bych poděkoval především vedoucí mé diplomové práce, Ing. RNDr. Barboře Bühnové, Ph.D., za ochotu a spolupráci při vytváření této práce a za zkušenosti, doporučení a rady, které mi předala. Dále bych chtěl poděkovat rodině, přátelům a známým, kteří mi tvořili zázemí v průběhu celého vysokoškolského studia.
Abstrakt Diplomová práce se zabývá vývojem aplikací pro chytré telefony a tablety, především pro zařízení s operačními systémy Windows Phone resp. Windows 8. Jsou diskutovány možností vývoje pro obě tyto platformy zároveň. Důraz je kladen na sdílení kódu mezi oběma aplikacemi, čehož je dosáhnuto vhodným návrhem architektury aplikace a využitím sdílené knihovny Portable Class Library. Jsou popsány možnosti propojení těchto sdílených knihoven s platformně specifickým uživatelským rozhraním implementovaným v jazyce XAML. Součástí práce jsou ukázkové aplikace demonstrující tyto techniky.
Abstract Diploma thesis deals with application development for smartphones and tablets, primarily devices running Windows Phone and Windows 8 operating systems. Applications co-development options for both platforms are discussed, with focus on sharing code between these applications, which is attained by using suitable application architecture and Portable Class Libraries. Possibilities of linking shared libraries with platform-specific user interface implemented in XAML are described. Sample application demonstrating these techniques is bundled with the thesis.
Klíčová slova Chytrý telefon, tablet, aplikace, vývoj aplikací, Windows Phone, Windows 8, Visual Studio, sdílení kódu, Portable Class Library, .NET, XAML, architektura MVVM, Data Binding, Commanding
Keywords Smartphone, tablet, application, application development, Windows Phone, Windows 8, Visual Studio, code sharing, Portable Class Library, .NET, XAML, MVVM architecture, Data Binding, Commanding
Obsah 1
Úvod .................................................................................................................................. 6
2
Mobilní zařízení ............................................................................................................... 8
3
2.1
Smartphone................................................................................................................ 8
2.2
Tablet ........................................................................................................................ 10
2.3
Phablet ...................................................................................................................... 10
2.4
Hybridní zařízení .................................................................................................... 11
Aplikace .......................................................................................................................... 12 3.1
3.1.1
Graficky náročné aplikace .............................................................................. 12
3.1.2
Aplikace s vysokou mírou integrace do systému ....................................... 13
3.1.3
Aplikace náročné na síťové připojení ........................................................... 14
3.1.4
Aplikace informačního charakteru ............................................................... 14
3.2 4
Typy aplikací ........................................................................................................... 12
Charakteristiky aplikací ......................................................................................... 14
Možnosti implementace aplikací ................................................................................ 16 4.1
Nativní aplikace ...................................................................................................... 16
4.1.1
Výhody a nevýhody ........................................................................................ 16
4.1.2
Vhodnost použití ............................................................................................. 17
4.2
In-Browser aplikace ................................................................................................ 17
4.2.1
Výhody a nevýhody ........................................................................................ 18
4.2.2
Vhodnost použití ............................................................................................. 18
4.2.3
Standardy ......................................................................................................... 18
4.3
Kompromisní řešení ............................................................................................... 19
4.3.1 5
Platforma Windows Phone 8 a Windows 8 ............................................................... 20 5.1
6
Výhody a nevýhody ........................................................................................ 19
Windows Phone 8 ................................................................................................... 20
5.1.1
Poskytované funkce ........................................................................................ 21
5.1.2
Historie verzí .................................................................................................... 22
5.2
Windows 8 a Windows 8 RT ................................................................................. 22
5.3
Modern UI................................................................................................................ 23
5.4
Windows Store, Windows Phone Store............................................................... 26
Charakteristika platforem vzhledem k vývoji aplikací .......................................... 28 6.1
Grafické rozhraní .................................................................................................... 29
6.2
7
API ............................................................................................................................ 30
6.2.1
Windows Phone 8 ............................................................................................ 30
6.2.2
Windows 8 ........................................................................................................ 32
Implementace aplikací pro Windows Phone 8 a Windows 8 ................................. 34 7.1
Architektura............................................................................................................. 34
7.1.1
Model-View-ViewModel ................................................................................ 34
7.1.2
Portable class libraries .................................................................................... 36
7.2
Vývojové nástroje ................................................................................................... 36
7.3
Typy projektů .......................................................................................................... 37
7.4
Typická struktura projektu.................................................................................... 39
7.4.1 7.5
Windows Phone 8 ............................................................................................ 43
7.5.2
Windows 8 ........................................................................................................ 45
XAML ....................................................................................................................... 46
7.6.1
Data Binding .................................................................................................... 46
7.6.2
Příkazy (Commands) ...................................................................................... 48
7.7
9
Životní cyklus aplikace .......................................................................................... 43
7.5.1 7.6
8
Soubor aplikačního manifestu ....................................................................... 40
Publikace na aplikační obchody ........................................................................... 49
7.7.1
Schvalovací proces .......................................................................................... 49
7.7.2
Zveřejnění aplikace ......................................................................................... 50
Ukázková aplikace ........................................................................................................ 51 8.1
Specifikace ............................................................................................................... 51
8.2
Implementace .......................................................................................................... 52
8.2.1
Struktura projektu a architektura aplikace .................................................. 52
8.2.2
Uživatelské rozhraní ....................................................................................... 53
8.2.3
Třídy ViewModel ............................................................................................ 55
8.2.4
Zpracování uživatelských vstupů ................................................................. 55
8.3
Publikace .................................................................................................................. 57
8.4
Problémy při vývoji ................................................................................................ 58
8.4.1
Hardware a operační systém ......................................................................... 58
8.4.2
Vývojové nástroje ............................................................................................ 58
Závěr ............................................................................................................................... 59
Slovník pojmů ........................................................................................................................ 61 Literatura ................................................................................................................................ 63 Přílohy ..................................................................................................................................... 68
1 Úvod Život v 21. století si již málokdo dokáže představit bez moderní techniky. Během několika desetiletí se stala nejrůznější elektronická zařízení součástí běžného života mnoha lidí. Typickým představitelem takového zařízení je mobilní telefon či tablet. Trendem posledních let je neustálé zvyšování výkonu a obecně možností, které mobilní zařízení nabízí při zachování malé velikosti a nízké spotřeby energie. Spolu se zmenšováním zařízení vznikl další trend, a sice jejich ovládání pomocí dotykových displejů. Dříve se mobilní telefony ovládaly výhradně hardwarovou numerickou klávesnicí, avšak v současné době jsou na vzestupu plně dotyková zařízení s minimem fyzických tlačítek. Dnes se můžeme na trhu setkat s velkým množstvím takových mobilních zařízení. Přístroje určené především k telefonování jsou nazývány smartphony neboli chytré telefony, zařízení určená především pro multimédia a zábavu, prohlížení online obsahu či drobnou práci nazývané tablety. Kombinací těchto dvou zařízení bylo vytvořeno zařízení zvané phablet, neboli tabletofon. Hlavním znakem těchto zařízení je využití pokročilého operačního systému (dále jen OS), který telefonu poskytuje celou škálu možností. Tou nejzásadnější je možnost vývoje a instalace aplikací rozšiřujících funkce zařízení. V současnosti se můžeme setkat s celou řadou OS, z nichž většina má pouze minoritní tržní podíl. Z hlediska komerčního vývoje aplikací pro tyto operační systémy má smysl hovořit pouze o třech nejrozšířenějších, které jsou popořadě Android, iOS a Windows Phone 8. První dva jmenované jsou používány jak na chytrých telefonech, tak na tabletech. Windows Phone 8 je používán pouze na chytrých telefonech, pro tablety je využíván operační systém Windows 8. Cílem této práce je seznámení s principy vývoje aplikací právě pro třetí nejrozšířenější mobilní OS, kterým je Windows Phone 8. Dále práce představí způsob, jakým lze takovou aplikaci portovat na Windows 8 vytvořením odlišeného grafického rozhraní s využitím „Portable class libraries“ a nakonec bude ukázáno, jak lze takto vytvořené 6
aplikace publikovat do aplikačního obchodu Windows Phone Store, respektive Windows Store. Tato diplomová práce seznamuje s přehledem mobilních zařízení, definuje pojem aplikace, představuje jejich rozdělení a charakteristiky, a představuje možnosti vývoje aplikací pro mobilní zařízení. Dále představuje platformy Windows Phone 8 a Windows 8 a jejich charakteristiky vzhledem k vývoji aplikací pro tyto platformy. Na relevantních místech jsou diskutovány podobnosti a rozdíly těchto platforem oproti platformám konkurenčním. Součástí práce je také vytvoření ukázkové aplikace pro operační systém Windows Phone 8 a její portace na Windows 8 pomocí vhodných postupů a nástrojů. Jsou diskutovány možnosti publikace této ukázkové aplikace na aplikační obchody Windows Phone Store a Windows Store. V práci je využito mnoha zkratek, jejichž význam je uveden na konci práce v seznamu zkratek a v textu tedy není dále rozváděn. Vzhledem k faktu, že v textu jsou popisovány moderní technologie, je v práci využito především aktuálních online zdrojů.
7
2 Mobilní zařízení Za mobilní zařízení lze obecně chápat přístroj, který lze pohodlně přenášet a používat kdekoliv v terénu bez nutnosti složité montáže či zapojení. Musí tedy mít kompaktní rozměry pro snadné přenášení. K ovládání takových přístrojů je nejčastěji využito dotykového displeje. Mezi nejpoužívanější mobilní zařízení patří smartphone, tablet, phablet a řada hybridních zařízení, jako například notebook s dotykovým displejem.
2.1 Smartphone Smartphone, neboli chytrý telefon, je označení pro mobilní telefon s operačním systémem, jež poskytuje mnoho funkcí nad rámec schopností běžného mobilu především díky možnosti instalovat aplikace [1]. Maximální velikost displeje chytrého telefonu je 5 palců. Současně nejrozšířenější operační systémy v chytrých telefonech jsou Android, iOS a Windows Phone [2]. Celosvětový tržní podíl těchto operačních systémů je znázorněn na obrázku 2.1.
Procentuální podíl mobilních operačních systémů za 3. kvartál roku 2013 1,0%
0,2%
4,1%
Android
13,4%
iOS Windows Phone BlackBerry Ostatní 81,3%
Obrázek 2.1 Graf celosvětového tržního podílu mobilních OS
8
Chytré telefony původně sloužily pro potřeby manažerů, případně počítačovým nadšencům nebo IT technikům. Masové šíření chytrých telefonů mezi běžné uživatele začalo vydáním prvního Apple iPhone v roce 2007. Prodeje chytrých telefonů od té doby rostly a v prvním kvartále roku 2013 jejich prodeje poprvé překonaly prodeje klasických mobilních telefonů v počtu prodaných kusů [3]. Růst počtu prodaných chytrých telefonů během posledních tří let je patrný z obrázku 2.2, kde je vidět také tržní podíl jednotlivých výrobců chytrých telefonů [4]. Mezi největší producenty chytrých telefonů tedy patří společnosti Samsung a Apple. Tržní podíly dalších výrobců jsou navzájem srovnatelné.
Obrázek 2.2 Vývoj prodeje chytrých telefonů dle jednotlivých výrobců [4]
9
2.2 Tablet Tablet původně sloužil jako periferie k osobnímu počítači sloužící především grafikům k digitalizaci pohybu rukou s perem. Dnes je tablet vnímán širokou veřejností jako samostatné mobilní zařízení s integrovaným dotykovým displejem a operačním systémem. V porovnání s chytrým telefonem najdeme několik zásadních odlišností. Zatímco chytrý telefon je stále primárně zaměřen na poskytování telekomunikačních služeb (což je patrné i z jeho názvu), tablety mnohdy nemají ani instalován GSM modul. Rozdílná je také základní poloha zařízení, kdy v případě tabletu se jedná o polohu „na šířku“, tzv. landscape režim, v případě chytrého telefonu mluvíme o poloze „na výšku“ neboli portrait. Tablety mívají velikost displeje od 7 palců výš. Maximální rozměr displeje není stanoven. Dosud největší běžně prodejný tablet představila společnosti Panasonic. Její Toughpad má displej o úhlopříčce 20 palců s rozlišením 4K (3840 x 2560) [5]. Tablety jsou tedy oproti chytrým telefonům, především díky velikosti displeje, vhodné více na práci, prohlížení webu a multimédia. Nejrozšířenějšími operačními systémy pro tablety jsou Android, iOS a Windows 8. O oblíbenosti tabletů mezi širokou veřejností svědčí především neustále stoupající prodeje, které dle analytické společnosti Canalys překonají v prodejích stolní počítače v průběhu roku 2014 [6].
2.3 Phablet Phablet je jakýsi kompromis mezi chytrým telefonem a tabletem. Jedná se o přístroj s displejem o velikost 5 až 7 palců kombinující výhody obou zařízení. Svou velikostí se více hodí na práci a multimédia, podobně jako tablet, ale zároveň obsahují také GSM modul pro poskytování hlasových služeb. Tato zařízení jsou populární především v Asii, kde jsou jejich prodeje větší než prodeje tabletů či notebooků [7].
10
Slovo phablet vzniklo spojením slov phone a tablet a je již oficiálně zařazeno do slovníku Oxford Dictionary [8]. V České republice se můžeme setkat také s přeloženým názvem tabletofon. Phablety používají stejné operační systémy jako chytré telefony, pouze s mírně upraveným uživatelským rozhraním. Není tedy nutné se jimi dále v práci zabývat.
2.4 Hybridní zařízení Na trhu je také velké množství hybridních zařízení v podobě notebooků s dotykovým displejem. Tato zařízení nelze vzhledem k jejich konstrukci řadit mezi tablety. Výkonem a použitým operačním systémem mají blíže ke klasickým stolním počítačům či notebookům. Většina těchto zařízení využívá operační systém Microsoft Windows 8, případně některý z konkurenčních Unixových operačních systémů, který je však shodný s tablety a není tedy nutné se jimi v práci dále zabývat.
11
3 Aplikace Aplikace v kontextu chytrých zařízení znamená instalovatelný software sloužící k rozšíření funkčnosti mobilního zařízení. Aplikací existuje celá řada. Přibližný počet aplikací nabízených v jednotlivých aplikačních obchodech pro nejrozšířenější mobilní platformy je uveden v následující tabulce: platforma Android iOS Windows Phone Windows 8
aplikační obchod Play Store App Store Windows Phone Store Windows Store
počet aplikací více než 1 000 000 více než 1 000 000 více než 190 000 více než 137 500
platnost 24. 7. 2013 22. 11. 2013 20. 11. 2013 16. 12. 2013
Tabulka 3.1 Počet dostupných aplikací v aplikačních obchodech [9] [10] [11] [12]
3.1 Typy aplikací Žádný zdroj neuvádí rozdělení aplikací pro mobilní zařízení dle jejich charakteristik. Často využívané dělení aplikací je dle jejich druhu, jak bude diskutováno v kapitole 4. Z tohoto důvodu je v této práci navrženo vlastní dělení. Každý typ aplikace dle tohoto rozdělení má jiné požadavky na systémové prostředky jako dostupný hardware, případně konektivita nebo návaznost na specifické softwarové vybavení. Rozdělení dle charakteristik aplikací tedy budiž graficky náročné aplikace, aplikace s vysokou mírou integrace do systému, aplikace náročné na síťové připojení a aplikace informačního charakteru.
3.1.1 Graficky náročné aplikace Grafický náročné aplikace využívají ve větší míře grafický procesor (GPU) zařízení pro zpracování a zobrazení výstupu. Mezi graficky náročné aplikace řadíme především hry, kterým nepostačuje základní uživatelské rozhraní použitého zařízení. Dále lze do této kategorie zařadit aplikace zpracovávající větší množství vektorové grafiky, například různé prohlížeče mapových podkladů, případně navigační software. 12
V neposlední řadě zde řadíme také aplikace sloužící k tvorbě a editaci multimediálního obsahu pořízeného například vestavěným fotoaparátem, staženého z internetu nebo získaného jinou cestou. Typickými představiteli jsou aplikace na úpravu pořízených fotografií přidáním např. rámečku kolem obrázku, nebo přidáním nějakého grafického filtru např. převedení barevného obrázku do odstínu šedi. Můžeme se také setkat s digitální softwarovou střižnou umožňující editovat videonahrávky.
3.1.2 Aplikace s vysokou mírou integrace do systému Mnohé aplikace vyžadují ve zvýšené míře přístup k nejrůznějším systémovým prostředkům a to jak hardwarového charakteru, tak i softwarového. Mezí hardwarové prostředky patří především periferie zařízení, senzory a snímače, které lze již dnes považovat za standard. Často instalované senzory a snímače v chytrých telefonech a tabletech:
Fotoaparát – prakticky všechna chytrá zařízení již dnes obsahují minimálně jeden fotoaparát pro pořizování fotografií a videonahrávek. U levných low-end zařízení se setkáme pouze se základním snímačem s nízkým rozlišením a nepříliš vysokou kvalitou. U mid-end a high-end modelů se kromě primárního fotoaparátu umístěného na zadní straně přístroje setkáme také s přídavným, zpravidla horším fotoaparátem na přední straně zařízení sloužící primárně k pořizování autoportrétů, případně jsou využity při videohovorech, ať už přes GSM síť, či VoIP klienta.
GPS přijímač – dříve jsme se mohli s vestavěným přijímačem GPS signálu setkat jen velmi zřídka a bylo tedy nutné využít např. externího příjimače propojeného s chytrým telefonem pomocí technologie Bluetooth či sériového portu. Dnes už je tento přijímač standardně zabudován i do mnohých low-end zařízení. Moderní GPS moduly dokáží zpracovat nejen signál systému GPS, ale také signál systému Glonass. Tím je zajištěn jejich bezproblémový provoz kdekoliv na zeměkouli.
Gyroskop, akcelerometr, magnetometr – další snímače sloužící k určení polohy a náklonu zařízení, v případně magnetometru určení orientace vůči magnetickým pólům (magnetometr = elektronický kompas). V mnohých 13
zařízeních je gyroskop nahrazen dvojicí akcelerometrů, ze kterých je následně rotace zařízení softwarově dopočítávána. Kromě snímačů a senzorů vyžadují aplikace přístup také k softwarovým prostředkům zařízení. Mezi ně patří zejména:
telefonní seznam,
úložiště multimediálního obsahu – obrázků a hudby,
textové zprávy,
historie hovorů a další.
3.1.3 Aplikace náročné na síťové připojení Mobilní datová síť je neustále vylepšována a rozšiřována, aby bylo možné využít připojení k internetu kdekoliv v terénu bez dostupnosti pevného internetového připojení. Některé aplikace ke svému běhu vyžadují neustálé připojení k internetu a proto je dostupnost mobilních dat velice důležitá. Jedná se zejména o různé komunikační kanály, ať už IM resp. VoIP klienti, či sociální sítě. Dále do této kategorie patří online hry, zpravodajské aplikace a další, které načítají veškerý svůj obsah online. V neposlední řadě zde patří aplikace přenášející multimediální obsah jako například online rádia či přehrávače videí z Youtube a jiných zdrojů. Zde je míra potřeby připojení k internetu zcela zjevná.
3.1.4 Aplikace informačního charakteru Setkáme se také s množstvím aplikací, které nevyžadují žádné, nebo pouze minimum systémových prostředků. Jedná se o například o uživatelské příručky či čtečky elektronických knih, které zobrazují především text, případně jednoduchou nenáročnou grafiku.
3.2 Charakteristiky aplikací V závislosti na typu aplikace lze diskutovat rozdílné potřeby a požadavky aplikací. Zatímco aplikace informačního charakteru jsou poměrně lehce přenositelné na libovolnou platformu, graficky náročné aplikace vyžadující nativní přístup
14
ke grafickým knihovnám, které daná platforma nabízí (DirectX, OpenGL, …) jsou již na platformě silně závislé, a jejich přenositelnost je velice nákladná. Aplikace vyžadující stálé internetové připojení bývají velice náchylné k výpadkům sítě. Při vývoji aplikace musí tedy vývojář zohlednit nestabilitu mobilního připojení a adekvátně uzpůsobit chování aplikace v případě výpadku sítě. Aplikace mohou také být přímo závislé na konkrétním hardwaru, ať už celém zařízení, nebo některé z jeho komponent. Například nelze provozovat aplikaci spravující historii hovorů na tabletu, který není osazen GSM modulem a neumožňuje tedy hlasovou komunikaci prostřednictvím GSM sítě. Může také nastat situace, kdy aplikace vyžaduje vyšší rozlišení obrazovky, než dané zařízení nabízí. Většina vývojářů se snaží cílit své aplikace na co největší počet zařízení, bez nutnosti rozsáhlých změn. To jednak umožňují platformy, které mají shodný operační systém na chytrých telefonech i na tabletech (Android, iOS), ale také lze využít nástrojů, které poskytují aplikaci mezivrstvu, která ji zbaví závislosti na konkrétní platformě. Více o tomto tématu pojednává následující kapitola.
15
4 Možnosti implementace aplikací Velkou výhodou při implementaci aplikací pro mobilní zařízení je fakt, že není nutné se omezovat pouze na určitou technologii, případně programovací jazyk. Všechny dominantní mobilní platformy nabízí kromě nativních aplikací, které jsou vždy specifické pro danou platformu, podporu HTML5 + JS, která je definována a interpretována na všech zařízeních stejně.
4.1 Nativní aplikace Nativní aplikace jsou vždy implementovány pro konkrétní platformu a k jejich vývoji jsou využívány primární programovací jazyky a nástroje určené tvůrcem dané platformy. V případě platformy Android se jedná o programovací jazyk Java s využitím Android SDK [13], v případě iOS hovoříme o Objective-C, případně Object Pascal s využitím iOS SDK [14]. Pro platformy Windows Phone 8 a Windows 8 jsou nativní aplikace vyvíjeny v programovacím jazyce C++, C#, případně VB.NET s využitím Windows Phone SDK [15], respektive Windows SDK [16]. Shrnutí nativních vývojových nástrojů je uvedeno v tabulce 4.1. Platforma Android
Programovací jazyk
iOS
Java (části kódu mohou být v C nebo C++) Objective-C, Object Pascal
Windows Phone 8
C#, Visual Basic, C++
Windows 8
C#, Visual Basic, C++
Vývojové prostředí Eclipse, IntelliJ IDEA, NetBeans Xcode, AppCode, Embarcadero Visual Studio, Visual Studio Express Visual Studio, Visual Studio Express
Tabulka 4.1 Shrnutí vývojových nástrojů pro nativní aplikace pro jednotlivé mobilní OS
4.1.1 Výhody a nevýhody Výhody nativní aplikace jsou především v rychlosti, kdy odpadá nutnost emulace či překladu programových instrukcí speciální vrstvou mezi aplikací a jádrem operačního
16
systému. Díky tomu mají nativní aplikace k dispozici vyšší výkon, zejména v oblasti grafiky a paralelních výpočtů prováděných na GPU zařízení. Další nespornou výhodou jsou možnosti využití systémových prostředků. Aplikace postavené na systémové nástavbě mají přístup pouze k těm prostředkům, které daná nástavba umožňuje. Navíc může být vývojovou politikou stanoveno, že přístup k určitému hardwaru, či zdrojům mohou mít pouze nativní aplikace. Toto platí především pro využití grafických prostředků zařízení. V neposlední řadě je také nutno zmínit, že při programování nativní aplikace odpadá nutnost hledat vhodné vývojové nástroje a jejich možnosti, protože ty nejvhodnější jsou vždy stanoveny tvůrcem dané platformy. Největší nevýhodou nativních aplikaci je právě jejich závislost na dané platformě. Jejich přenos na platformu jinou je netriviální záležitostí a je potřeba velkou část zdrojových kódů přepsat. Spolu s tím souvisí také vyšší požadavky na kvalifikaci vývojářů. Důsledkem jsou větší náklady na vývoj nativních aplikací.
4.1.2 Vhodnost použití Jak už bylo zmíněno, nativní aplikace má k dispozici řádově vyšší výkon zařízení a rozsáhlejší přístup k prostředkům a senzorům. Jsou tedy vhodné pro aplikace náročné na grafiku, jako jsou hry, digitální střižny, editory fotografií apod. Dále jsou vhodné pro aplikace vyžadující vysokou míru integrace do systému a přístup k jeho zdrojům.
4.2 In-Browser aplikace Velká část dostupných aplikací je tvořena v tzv. in-browser režimu, což znamená, že aplikace využívá vestavěného internetového prohlížeče pro zobrazení veškerého svého obsahu. Takové aplikace jsou psány pomocí HTML5 + JavaScriptu. Jedná se o nejrozšířenější způsob vytváření multiplatformních aplikací. Jelikož HTML5 je striktně definováno konsorciem W3C [17], je jeho interpretace na různých platformách stejná.
17
4.2.1 Výhody a nevýhody Hlavní výhoda in-browser aplikace je zřejmá. Celá je vytvořená pro všechny platformy stejně s jediným rozdílem, kterým je komponenta internetového prohlížeče. Ten plní funkci middleware mezi aplikací a operačním systémem. Výhodou vyplývající z možností multiplatformního vývoje je především nižší nákladnost vývoje v porovnání s nativními aplikacemi. Klesají nároky na kvalifikaci programátorů a tím také náklady s tím spojené. Nevýhodou takového řešení je nižší možnost integrace a přístupu k systémovým prostředkům, než je tomu v případě aplikací nativních.
4.2.2 Vhodnost použití Metoda in-browser aplikace je velice vhodná pro nenáročné aplikace, které zobrazují spíše textové informace. Vzhledem ke způsobu implementace zde platí, že to, co může obsahovat běžná webová stránka, může obsahovat také in-browser aplikace plus má navíc možnost přístupu k některým senzorům v mobilním zařízení, například GPS lokátoru a základní možnosti integrace do systému. Z výše uvedeného je patrné, že tato metoda není vhodná pro graficky náročné aplikace a své využití nachází především u aplikací informačního charakteru.
4.2.3 Standardy Jak už bylo zmíněno, pro programování in-browser aplikací se používá jazyk HTML5 s využitím JavaScriptu. Jazyk HTML5 je plně podporován všemi moderními prohlížeči napříč mobilními platformami. Přehled prohlížečů plně podporujících HTML5 je uveden v následující tabulce: Prohlížeč Platforma Minimální verze prohlížeče
Safari iOS iOS
Android Browser Android
3.2
1.5
Internet Explorer Windows Phone Windows 8.x
9
10
Tabulka 4.2 Shrnutí webových prohlížečů s plnou podporou HTML5 v mobilních OS
18
Pro výměnu dat při využití online obsahu aplikace se nejčastěji využívá datový formát JSON [18]. Jeho výhodou je, že je to obecný formát zpracovatelný prakticky libovolným programovacím jazykem. Oproti datovému formátu XML, který je rovněž hojně využíván, má tu výhodu, že obsahuje jen malé procento znaků navíc oproti přenášeným datům. Je tedy méně náročný na datový přenos, což je zejména při použití nestabilních mobilních dat výhodné.
4.3 Kompromisní řešení Další alternativou v možnostech vývoje mobilních aplikací je podobně jako u in-browser aplikací využití nějaké middleware vrstvy mezi aplikací a systémem. Nejedná se ale o vestavěný webový prohlížeč ale o nástavbu třetí strany, která poskytuje vlastní SDK pro vývoj aplikace. Velká část zdrojového kódu je tedy stejná pro všechny platformy, pouze se tvoří více uživatelských rozhraní pro různé operační systémy, aby byly dodrženy design guidelines dané platformy.
4.3.1 Výhody a nevýhody Toto řešení vývoje aplikací má podobné výhody jako in-browser aplikace, spočívající ve snížení nákladů na vývoj použitím sdíleného kódu napříč platformami. Ve většině případů poskytuje dostatečný výkon i pro náročnější aplikace včetně možností integrace do systému. Jeví se tedy jako ideální volba způsobu vývoje multiplatformní aplikace. Nevýhodou je opět nutnost hledání a instalace vhodného middleware a vývojářských nástrojů. Některé tyto nástroje mají svá vlastní vývojová prostředí, případně se dají nainstalovat jako plug-in do již existujících vývojových prostředí jako Visual Studio, Eclipse či NetBeans. Příkladem takového nástroje budiž Xamarin [19], Marmalade [20] či PhoneGap [21].
19
5 Platforma Windows Phone 8 a Windows 8 Na rozdíl od dvou dominantních hráčů na trhu mobilních zařízení, společností Google a Apple, které používají své operační systémy Android (Google), respektive iOS (Apple) v chytrých telefonech i tabletech, poskytuje společnost Microsoft pro každý z těchto segmentů mobilních zařízení jiný operační systém. Pro chytré telefony a tabletofony se jedná o operační systém Windows Phone 8, pro tablety, stolní počítače, notebooky a hybridní zařízení je využit operační systém Windows 8. Oba tyto systémy jsou založeny na stejném jádru (Kernel base), a to Windows NT.
5.1 Windows Phone 8 Windows Phone je operační systém určen pro chytré telefony a tabletofony. V kontextu této práce bude vždy diskutována aktuálně nejnovější verze 8, pokud nebude explicitně uvedeno jinak. Podporovány jsou displeje o různých velikostech, v současné době od 3.8“ do 6“. Pro běh Windows Phone 8 jsou stanoveny minimální hardwarové požadavky. Telefon musí mít:
Kapacitní dotykový displej – systém je založen na ovládání dotyky a gesty. Některá gesta vyžadují multitouch (současný dotyk na více místech displeje) a proto je vyžadován displej kapacitní, který je na rozdíl od starší rezistivní technologie schopen rozpoznat více dotyků najednou. Pro Windows Phone je stanoven minimální počet simultánních dotyků, které displej musí umět zpracovat, na čtyři.
Alespoň 2-jádrový procesor – jelikož Windows Phone 8 poskytuje plný multitasking, vyžaduje ke svému běhu alespoň dvě výpočetní jádra procesoru, založeného na architektuře ARM. Použitím jádra Windows NT je zajištěna teoretická podpora až 64-jádrových procesorů.
Alespoň 512 MB RAM – pro plynulý běh systému s WVGA (800x480) rozlišením je nutné alespoň 512 MB RAM, pro vyšší rozlišení je již požadována velikost operační paměti 1024 MB. 20
Alespoň 4 GB vnitřní paměti – samotný systém po instalaci zabírá cca 2GB, pro aplikace a uživatelská data je tedy potřeba minimálně další 2 GB paměti.
Fotoaparát – vždy musí být přítomen fotoaparát minimálně s VGA (640x480) rozlišením na zadní straně přístroje. Přední snímač je volitelný.
Povinné senzory – GPS přijímač, akcelerometr, světelný senzor (ambient light sensor) a senzor přiblížení (proximity sensor). Magnetometr a gyroskop jsou volitelnými senzory.
Hardwarová tlačítka – na každém Windows Phone telefonu se musí nacházet minimálně 7 tlačítek. Zapínací tlačítko, spoušť fotoaparátu a volba hlasitosti musí být přítomny v podobě fyzických tlačítek. Tlačítko Start, Zpět a Hledání mohou být řešeny jako dotyková tlačítka.
GPU s podporou DirectX – Windows Phone 8 poskytuje nativní přístup ke knihovně DirectX a aplikace mohou využívat hardwarové akcelerace Direct3D.
Ze seznamu minimálních hardwarových požadavků plyne, že vývojář aplikace pro Windows Phone má jistotu, že uvedené senzory a další hardwarové vybavení mu budou vždy k dispozici. Dominantním producentem chytrých telefonů s operačním systémem Windows Phone je společnost Nokia která dle reklamní společnosti AdDuplex zaujímá 90% trhu s telefony běžícími na platformě Windows Phone [22]. Dalšími výrobci jsou HTC, Samsung a Huawei, které představily jen velmi málo modelů svých chytrých telefonů se systémem Windows Phone 8 a soustředí se na konkurenční platformy.
5.1.1 Poskytované funkce Operační systém Windows Phone poskytuje mimo běžných funkcí mobilního telefonu, jako je telefonování, psaní a správa SMS či správa kontaktů také další funkce, které se již dají považovat za standard. Pro správu a synchronizaci e-mailů, kalendářů a kontaktů poslouží plná integrace s korporátním řešením Microsoft Exchange, kterou využijí nejen firemní zákazníci. Pro uživatele, kteří nepoužívají Exchange je připravena plná integrace služeb 21
Outlook.com (dříve Hotmail) rovněž od Microsoftu, případně služeb Gmail společnosti Google. Specifickou funkčností systému Windows Phone 8 je nativní podpora sociálních sítí Facebook, Twitter, MySpace a dalších. Integrace spočívá především v aktualizaci kontaktních informací, možnosti číst statusy jednotlivých kontaktů či sdílet vlastní, možnost prohlížet veškerá fotoalba svých kontaktů, apod. Pokud některým uživatelům nevystačí interní paměť telefonu, mají v systému zajištěnu plnou podporu cloudového úložiště SkyDrive. Funkce systému lze rozšířit pomocí aplikací třetích stran. Pojem aplikace je definován v kapitole 3.
5.1.2 Historie verzí Ačkoliv může číslování působit zmatečně, první verzí operačního systému Windows Phone byla verze 7. Ta byla poprvé představena na Světovém mobilním kongresu (World Mobile Congress) v Barceloně 15. února 2010 a vydána necelých devět měsíců poté, v listopadu 2010. Systém byl vydán jako nástupce úspěšné platformy Windows Mobile. Běžel na stejné jádru jako jeho předchůdce – Windows CE, ale neexistovala žádná zpětná kompatibilita aplikací mezi těmito dvěma systémy. Systém se postupně dočkal řady aktualizací, z nichž podstatné byly aktualizace na verzi 7.5 (Mango) a později 7.8 (Tango). Kvůli rozdílenému jádru a potřebnému hardwaru nebylo možné žádné zařízení s Windows Phone 7 aktualizovat na verzi 8. Jejím vydáním tak došlo v podstatě k restartu platformy, což dle internetových diskuzí vzbudilo velkou vlnu nevole. Tržní podíl Windows Phone 7 klesá ve prospěch osmé verze. V současné době zaujímá již jen necelých 25 % trhu se zařízeními využívajících Windows Phone [22].
5.2 Windows 8 a Windows 8 RT Windows 8 je přímým následníkem populárního operačního systému pro stolní počítače Windows 7. Zásadní změnou oproti předchůdci je kompletní nahrazení 22
standardní nabídky Start novou celoobrazovkovou nabídkou s využitím Modern UI, viz kapitola 5.3. Tento koncept je zaměřen především na ovládání pomocí dotykového panelu, ale samozřejmě podporuje také standardní myš. Windows 8 je vydáváno ve dvou verzích, a to Windows 8 Pro a Windows 8 RT. Zatímco Windows 8 Pro je určen pro procesory s architekturou x86 (resp. x64), Windows RT je určena pro architekturu ARM [23] používanou především v tabletech, a to především z důvodu úspory energie při zachování dostatečného výpočetního výkonu. Windows 8 Pro stále obsahují klasické desktopové rozhraní známé ze starších verzí tohoto systému a ve většině případů jsou s aplikacemi vyvinutými pro tyto starší verze kompatibilní. Na rozdíl od Windows 8 RT však umožňují neomezenou instalaci aplikací ze kteréhokoliv zdroje. U Windows RT je možnost instalace pouze schválených aplikací a her ze Store, podobně jako je tomu u Windows Phone. Windows 8 tvoří jakýsi pomyslný přechodový můstek mezi standardním desktopovým
uživatelským
rozhraním
optimalizovaným
k
ovládání
myší
a moderním rozhraním optimalizovaným pro ovládání pomocí dotykového panelu. Tato verze systému Windows patrně ukazuje směr, kterým se vývoj operačních systémů Windows dále bude ubírat. Princip vývoje aplikací pro oba systémy (Windows 8 Pro i Windows 8 RT) je shodný, proto není dále v práci tento rozdíl zohledňován.
5.3 Modern UI Windows Phone a Windows 8 nabízí zcela nové grafické rozhraní Modern UI známé také pod starším označením Metro UI, které muselo být nahrazeno z důvodu porušení ochranné známky [24]. Modern UI je grafické rozhraní zaměřené především na jednoduchost, přehlednost a obsah. Speciálně pro toto uživatelské rozhraní navrhla společnost Microsoft vlastní moderní bezpatkový font Segoe. Primárním prvkem Modern UI je systém aktivních dlaždic na hlavní ploše, které slouží nejen jako zástupce pro aplikace, ale mohou také obsahovat proměnlivé, pravidelně 23
aktualizované informace a mohou být na hlavní obrazovce libovolně rozmístěny. Ve Windows Phone 7 existovala pouze jediná velikost dlaždice (některé systémové aplikace umožňovaly použití další velikosti), osmá verze již umožňuje vývojářům libovolně implementovat tři velikosti živých dlaždic (tato funkce byla v aktualizaci 7.8 (Tango) přidána také do Windows Phone 7), každou s jiným obsahem. Rozdíl v možnostech hlavní obrazovky mezi oběma verzemi systému Windows Phone je viditelný na obrázku 5.1.
Obrázek 5.1 Hlavní pracovní plocha systémů Windows Phone 7 (vlevo) a Windows Phone 8 (vpravo)
Microsoft přinesl v Modern UI další novinku, grafický prvek zvaný Hub. Plní funkci jakéhosi rozcestníku v aplikaci. Pro zobrazení je využito tzv. Panorama režimu, který zobrazuje kontinuální plochu s jednotným pozadím a nadpisem, přičemž každá poskytuje samostatný obsah. Princip Panorama režimu je patrný na obrázku 5.2. Vedle režimu Panorama můžeme využít dalšího prvku zvaného Pivot. Ten na rozdíl od režimu Panorama nesdílí nadpis, ani pozadí mezi jednotlivými stránkami. Jak je patrné z obrázku 5.3, v záhlaví prvku lze ale vidět nadpisy dalších stránek dostupných po provedení gesta tahu prstem od pravé strany displeje vlevo.
24
Obrázek 5.2 Panorama režim [25]
Obrázek 5.3 prvek Pivot [25]
Poprvé bylo toto grafické rozhraní představeno u Windows Phone 7, později vznikla jeho přepracovaná obdoba také pro Windows 8. Pro Windows 8 byly grafické prvky Modern UI přepracovány, protože jednak je primární polohou displeje režim Landscape, a také systém Windows 8 pracuje na zařízeních s displeji o větších úhlopříčkách, než je tomu u chytrých telefonů se systémem Windows Phone. 25
Na první pohled viditelnou změnou je tedy posun dlaždic, které je u Windows Phone směrem dolů, ale u Windows 8 do strany. K dispozici jsou 3 velikosti dlaždic (v systémové aktualizaci na verzi 8.1 rozšířeny o velikost čtvrtou) schopny zobrazit mnohem více informací, než je tomu v případě Windows Phone.
Obrázek 5.4 Hlavní pracovní plocha systému Windows 8 [26]
Prvky Panorama a Pivot jsou ve Windows 8 nahrazeny jednotným zobrazovacím prvkem zvaným Canvas. Ten zobrazuje neomezeně širokou kontinuální plochu s veškerým obsahem. Tímto způsobem je implementována také hlavní nabídka Start.
5.4 Windows Store, Windows Phone Store Aplikační obchod, neboli Store je oficiální globální zdroj aplikací a her pro zařízení s Windows 8 či Windows Phone. Vzhledem k tomu, že se jedná o dva odlišné operační systémy, jsou i tyto obchody oddělené. Konkurenční platformy Android a iOS mají své aplikační obchody sjednoceny a stejnou aplikaci lze tedy instalovat jak na chytrý telefon, tak na tablet. Windows Phone Store, respektive Windows Store obsahují pouze prověřené a schválené aplikace, které odpovídají pravidlům a požadavkům stanoveným Microsoftem. Publikovat aplikace zde mohou pouze registrovaní vývojáři. Podobnou 26
politiku aplikuje na svůj aplikační obchod výrobce operačního systému iOS Apple. Nejrozšířenější mobilní operační systém Android vyvíjený společností Google má aplikační obchod zcela otevřený všem vývojářům, bez implicitní kontroly aplikací provozovatelem. To bohužel dává prostor k šíření nejrůznějším škodlivým aplikacím a virům k šíření oficiální cestou. Donedávna museli mít tvůrci aplikací registrován vývojářský účet zvlášť pro Windows Store a zvlášť pro Windows Phone Store. Každá z těchto registrací vyžadovala úhradu ročního vývojářského poplatku. Dne 6. 11. 2013 oznámil Microsoft sjednocení vývojářských účtu pro oba tyto obchody [27] což je prvním krokem k plánovanému sjednocení Windows Store a Windows Phone Store do jednoho celku [28]. Tím Microsoft eliminuje velkou nevýhodu v podobě dvou obchodů oproti konkurenčním platformám a rozšiřuje základnu vývojářů aplikací pro své mobilní platformy.
27
6 Charakteristika platforem vzhledem k vývoji aplikací Systémy
Windows
8
a
Windows
Phone
8
jsou
postaveny
na
stejném
jádru - Windows NT. Vývojářská politika stanovená Microsoftem a uzavřenost vlastního systému neumožňuje přístup ke zdrojovým souborům systému, čímž brání v jakékoliv modifikaci samotného jádra. Podobně je tomu i u operačního systému iOS. Operační systém Android je založen na open-source unixovém jádře a jakýkoliv vývojář může libovolně provádět modifikace i v samotném jádru systému. To na jednu stranu otevírá široké spektrum možností vlastních úprav systému (výrobci chytrých telefonů hojně využíváno), na druhou stranu ale představuje bezpečnostní riziko. Pro vývoj aplikací na obou diskutovaných platformách je k dispozici řada nástrojů a možností. Jejich přehled je uveden v tabulce 6.1 [29]. Pro srovnání byla do tabulky přidána také předchozí generace operačního systému Windows Phone, verze 7.
Windows Phone 7 Rozlišení obrazovky (v px)
800x480
Windows Phone 8
Windows 8
800x480
1366x768 (minimum full)
1280x720
1024x768 (minimum filled)
1280x768
320x768 (minimum snapped)
1920x1080* Preferovaná orientace
Portrait
Portrait
Landscape
Programovací jazyky
C#, Visual Basic, F#
C#, Visual Basic
C#
C++/C#
C++/C#
HTML5 + js
HTML5 + js
HTML5 + js + WinJS
.NET
.NET
.NET
XNA
XNA**
API
DirectX
DirectX
WinRT
WinRT
* Podpora FullHD rozlišení (1920x1080) byla přidána až v systémové aktualizaci GDR3 ** XNA Framework je ve Windows Phone 8 podporován pouze pro účely zpětné kompatibility aplikací určených pro starší verzi systému. Nelze vytvořit novou XNA aplikaci cílenou na Windows Phone 8. Tabulka 6.1 Srovnání vývojářských nástrojů platforem Windows Phone 7, Windows Phone 8 a Windows 8 [29]
28
6.1 Grafické rozhraní Základním problémem při vyvíjení aplikace pro různé platformy je zobrazení uživatelského rozhraní na různých displejích s různým rozlišením a orientací. Výchozí zobrazení na chytrém telefonu ve Windows Phone je na výšku – tzv. Portait režim. Na tabletech a noteboocích je výchozí zobrazení na šířku – tzv. Landscape režim. Windows Phone podporuje rozlišení obrazovky s poměrem stran 15:9, vycházející z předchozí generace Windows Phone 7 (800x480 a 1280x720 pixelů) a 16:9 (1280x768 a 1920x1080 pixelů). Všechny aplikace na platformě Windows Phone jsou vždy spuštěny v celoobrazovkovém režimu, proto není nutné zabývat se vzhledem aplikace při jiném poměru stran. Podrobné specifikace včetně galerie aplikačních designů najdeme ve vývojářské příručce Windows Phone Dev Center na MSDN [30]. Naproti tomu Windows 8 poskytuje možnosti multitaskingu, kdy aplikaci lze spustit nejen v celoobrazovkovém režimu, ale také lze poskládat více aplikací vedle sebe najednou. V tomto režimu lze aplikace skládat pouze vedle sebe, odděleny vertikálně. Z tohoto důvodu je stanovena minimální výška aplikace na 768 pixelů. Šířka je velmi variabilní. Původně ve Windows 8 mohly aplikace zabírat buď celou plochu displeje, nebo jeho čtvrtinu, respektive tři čtvrtiny. Od aktualizace Windows 8.1 je už možné aplikaci libovolně roztáhnout. Zde už záleží na vývojářově píli a fantazii, zda vytvoří responsivní design. Detailní pravidla pro vytváření uživatelského rozhraní aplikací pro Windows 8 se dočteme v oficiálních guidelines [31]. Uživatelské rozhraní Modern UI (viz kapitola 5.3) výborně škáluje a proto je velice dobře použitelné i na diametrálně rozdílných rozlišeních (800x480 vs. 1920x1080 obrazových bodů) s minimálním dopadem na vzhled aplikace. Pro co největší univerzálnost je vhodné vyvinout aplikaci pro nejnižší možné rozlišení, které následně při použití většího rozlišení systém automaticky přetransformuje. Pokud bychom však navrhli uživatelské rozhraní pro použití vyššího rozlišení, na nižším již aplikaci nelze použít. Samozřejmě optimálním řešením je navrhnout vzhled aplikace pro různá rozlišení, což ale zbytečně zvyšuje náklady na vývoj.
29
Uživatelské rozhraní nativních aplikací pro Windows 8 i Windows Phone 8 je psáno pomocí deklarativního značkovacího jazyka XAML [32], který je používán napříč všemi technologiemi zahrnutými ve WPF. Jedna se o rozšíření jazyka XML a poskytuje nástroje k popisu veškerých ovládacích prvků, které se v těchto systémech využívají. Podrobněji se jazyku XAML věnuje kapitola 7.6. Další možností je samozřejmě vytvořit in-browser aplikaci a grafické rozhraní definovat pomocí HTML5 + CSS. Tyto nástroje však již neposkytují standardní ovládací prvky systému, ale pouze ty, které podporuje jazyk HTML5.
6.2 API Jak už bylo řečeno, systémy Windows Phone 8 a Windows 8 jsou uzavřené a možnosti integrace aplikací se systémem jsou omezeny pouze na veřejná API systémem poskytovaná. Tento přístup pomáhá udržet vysokou bezpečnost aplikací a stabilitu jádra systému. K tomuto kroku se Microsoft pravděpodobně rozhodl po zkušenostech s předchozí generací mobilního systému Windows Mobile, který umožňoval (stejně jako dnes Android) zásah do systémových souborů, čehož hojně využívali jednotliví výrobci mobilních zařízení k implementaci různých grafických nástaveb, což v řadě případů vedlo k nestabilitě systému a problémům s výkonem.
6.2.1 Windows Phone 8 Celé Windows Phone API sestává ze tří základních bloků, které jsou znázorněny na obrázku 6.1. Jsou jimi Windows Phone .NET API, Windows Phone Runtime API a blok nativních rozhraní Win32, COM a dalších.
Windows Phone .NET API .NET Framework [33] je soubor technologií a knihoven poskytující pokročilé vývojové nástroje napříč všemi vývojovými technologiemi vytvořenými společností Microsoft. Windows Phone .NET API je podmnožinou kompletního .NET frameworku využívající především jmenné prostory System a Microsoft.Phone. Kompletní .NET API dokumentace je k dispozici na Windows Phone Dev Center [34].
30
Obrázek 6.1 Základní rozdělení Windows Phone API [35]
Windows Phone Runtime API Windows Phone Runtime, který ačkoliv je napsán v C++, umožňuje projekci veškerých tříd také do C# nebo VB.NET [36]. To umožňuje vývojářům využití některých dříve napsaných knihoven v libovolném z výše uvedených programovacích jazyků a jejich využití v jazyce jiném. Windows Runtime a Windows Phone Runtime jsou podobná, z části se také překrývají. Tento překryv je znázorněn na obrázku 6.2. Oblast označená číslicí 1 představuje část Windows Runtime, která není v systému Windows Phone podporována. Přibližně 33% Windows Runtime je společná také s Windows Phone Runtime [36], na obrázku s číslem 2. I ve sdílené části Runtime se můžeme setkat s jistými odlišnostmi, které jsou vždy zdokumentované. Do Windows Phone Runtime byly přidány také další funkce specifické pro chytré telefony, jako služby spojené s VoIP a další, na obrázku označené číslem 3. Tato část zaujímá necelých 20% celého Windows Phone Runtime. Kompletní dokumentace k Windows Phone Runtime API je k dispozici na Windows Phone Dev Center [37].
31
Obrázek 6.2 Prolnutí Windows Runtime a Windows Phone Runtime [35]
Win32, COM a další Poslední součástí celého Windows Phone API jsou systémová API jako Win32, COM, Direct3D a další poskytující nízkoúrovňový (low-level) přístup k systémovým knihovnám a prostředkům jako je grafický procesor, řadič zvuku, kamera, řadič sítě a další. Seznam všech dalších podporovaných Win32 a COM API je k dispozici na Windows Phone Dev Center [38].
6.2.2 Windows 8 API pro Windows 8 je postaveno jinak, než je tomu v případě Windows Phone 8. Aplikace běží v prostředí Windows Runtime (WinRT), který poskytuje sandbox [39] pro běh aplikací využívajících Modern UI. Vývojářům poskytuje širokou škálu
32
možností ve využití programovacího jazyka. Lze zvolit jeden z programovacích jazyků .NET (C#, VB.NET, F#), C++, případně JavaScript. Architektura WinRT, patrná z obrázku 6.3, byla představena členem vývojového týmu Windows Runtime na konferenci Windows BUILD [40]. Za zmínku stojí speciální vrstva označená červeně „Language projection“, která slouží k již zmíněné projekci knihoven a nástrojů napříč různými programovacími jazyky. Kompletní dokumentace k celému Windows Runtime a přidruženým API je k dispozici na Windows Dev Center [41].
Obrázek 6.3 Architektura WinRT [40]
33
7 Implementace aplikací pro Windows Phone 8 a Windows 8 7.1 Architektura Obecným doporučením při vývoji jakékoliv aplikace je oddělení jednotlivých vrstev aplikace a jejich vzájemná komunikace. Jedním z často používaných návrhových vzorů je MVC (Model-View-Controller). Pro vývoj aplikací pro mobilní zařízení byl samotným Microsoftem vyvinut návrhový vzor MVVM (Model-View-ViewModel), který je na architektuře MVC založen. Samozřejmě není nutné architekturu MVVM použít, jedná se pouze o doporučení pro udržení vysoké kvality a přehlednosti zdrojového kódu.
7.1.1 Model-View-ViewModel MVVM je návrhový vzor založený na principu oddělení aplikační logiky a uživatelského rozhraní. Jeho cílem je redukce množství kódu a zjednodušení úprav. Předlohou této architektuře je MVC. Je založena na konceptu čistoty kódu, který závisí na množství code-behind kódu. Čistý návrh neobsahuje žádný code-behind a mezi View a ViewModelem neexistují žádné přímé reference – veškerou komunikaci zajišťuje technologie Data Binding. [42] Jednotlivé vrstvy jsou názorně popsány v knize [42] na straně 81. Ve volném překladu se jedná o:
Model Model je, stejně jako v MVC, reprezentace dat získaných z persistentního úložiště (např. databáze). V MVVM je model zodpovědný za notifikace ViewModelu o změnách v datech.
34
View View reprezentuje, stejně jako u MVC, všechny prvky, které jsou součástí uživatelského rozhraní aplikace. Zpracovává uživatelský vstup a předává jej přímo ViewModelu.
ViewModel VIewModel je vrstvou mezi View a Modelem a zajišťuje transformaci a přenos dat z Modelu k View a přenos uživatelských vstupů a gest z View k modelu. Výhodou MVVM při použití v multiplatformní aplikaci je možnost sdílet ViewModel mezi více platformně závislými View jeho umístěním do Portable Class Library (viz kapitola 7.1.2). [43] Tento přístup je naznačen na obrázku 7.1.
Obrázek 7.1 Schéma MVVM architektury [43]
V aplikacích, kterými se zabývá tato diplomová práce, nachází návrhový vzor MVVM uplatnění především díky použití několika technik:
Data binding,
Command handling,
Event routing.
Podrobněji se těmto technikám věnuje kapitola 7.6.
35
7.1.2 Portable class libraries Portable class library slouží ke znovupoužití stejného kódu pro multiplatformní aplikace. V případě této diplomové práce se jedná o Windows Phone 8 a Windows 8. Využití však mají také u dalších technologií v rámci Microsoft WPF (SilverLight, Xbox) o kterých tato práce nepojednává. Vzhledem k odlišnostem jednotlivých diskutovaných platforem v přístupu k síťovým prostředkům nebo fyzickému úložišti, nelze vždy aplikační logiku umístit do Portable class library, protože ta je kompilována nezávisle na cílové platformě a je dále používána jako již zkompilovaná knihovna. Řešením je abstrakce kódu, kdy je v rámci Portable class library vytvořeno rozhraní, jehož konkrétní implementace je pro každou platformu zvlášť tak, jak je naznačeno na obrázku 7.2. [29]
Obrázek 7.2 Schéma multiplatformní aplikace s využitím Portable class libraries [29]
7.2 Vývojové nástroje Pro vývoj aplikací pro Windows Phone 8 a Windows 8 je zpravidla využito vývojového prostředí Microsoft Visual Studio. Pro studenty je poskytováno zcela 36
zdarma v rámci programu DreamSpark [44]. Pro studenty participujících fakult je navíc k dispozici předplatné MSDN Academic Alliance, kde jsou mimo Visual Studio zdarma ke stažení také operační systémy a další produkty společnosti Microsoft. V základní instalaci nejsou k dispozici nástroje pro vývoj aplikací na diskutované platformy, proto je potřeba doinstalovat doplňky Windows Phone SDK [15] a Windows SDK [16]. Pro vytváření uživatelského rozhraní lze použít buď samotné Visual Studio, které poskytuje základní nástroje a podporu jazyka XAML (více viz kapitola 7.6), v němž je GUI pro tyto platformy vyvíjeno, nebo lze využít samostatného nástroje Expression Blend, který byl vyvinut speciálně pro návrh a vytváření grafické podoby aplikace bez nutnosti znalostí jazyka XAML. V dalších kapitolách bude využito právě Microsoft Visual Studio jako primární vývojový nástroj. Samozřejmě lze využít i jiných nástrojů či textových editorů, ale jejich použití je výrazně méně pohodlné a lze předpokládat, že většina vývojářů Visual Studio použije.
7.3 Typy projektů Po nainstalování Windows Phone SDK a Windows SDK se v průvodci přidáním nového projektu ve Visual Studiu objeví dvě nové skupiny projektů. Skupina Windows Phone nabízí několik výchozích šablon viditelných na obrázku 7.3. V kontextu této diplomové práce je vhodné zmínit následující projekty:
Windows Phone App představuje prázdný projekt pro Windows Phone aplikaci bez jakékoliv připravené struktury.
Windows Phone Panorama App a Windows Phone Pivot App jsou připravené šablony aplikací s využitím prvků Panorama respektive Pivot a základní MVVM strukturou, včetně testovacích dat.
Windows Phone HTML5 App představuje projekt pro in-browser aplikaci.
Portable class library je nespustitelnou přenosnou knihovnou pro sdílení kódu mezi různými projekty. 37
Obrázek 7.3 Šablony aplikací ve Visual Studiu ve skupině Windows Phone
V případě skupiny projektů Windows Store (označení pro Windows 8 aplikace) je nabídka omezenější, jak lze vidět na obrázku 7.4. Tato skupina obsahuje pouze základní šablony projektů. Další šablony lze doinstalovat pomocí SDK třetích stran. Vybrané typy projektů:
Blank App (XAML) představuje prázdný projekt pro Windows 8 aplikaci.
Hub App (XAML), Grid App (XAML), Split App (XAML) jsou aplikace využívající prvek Canvas s předpřipraveným rozložením vnořených grafických prvků.
Portable Class Library představuje stejnou přenositelnou knihovnu jako v případě Portable Class Library ve skupině Windows Phone.
38
Obrázek 7.4 Šablony aplikací ve Visual Studiu ve skupině Windows Store
7.4 Typická struktura projektu V kontextu této diplomové práce je diskutována aplikace využívající MVVM architekturu a Portable Class Library pro sdílení kódu mezi platformami Windows Phone 8 a Windows 8. Taková aplikace tedy typicky sestává minimálně ze tří samostatných projektů: Portable Class Library, Windows Phone app a Windows 8 app, jak je ukázáno na obrázku 7.5. Roli Portable Class Library zde zastává projekt MyApp.Portable obsahující sdílené View a ViewModely. Projekty MyApp.W8 a MyApp.WP8 jsou spustitelné projekty s View a platformně specifickým kódem pro Windows 8 respektive Windows Phone 8. Oba projekty, MyApp.W8 a MyApp.WP8, jsou napojeny (referencují) na projekt MyApp.Portable, což oběma umožňuje využití sdíleného zdrojového kódu.
39
Obrázek 7.5 Typická struktura aplikace pro Windows Phone 8 a Windows 8 v prostředí Visual Studio
7.4.1 Soubor aplikačního manifestu Každý spustitelný projekt obsahuje manifest soubor, který obsahuje obecná nastavení aplikace, její lokalizaci a přístupy k systémovým prostředkům. Jedná se o XML soubor, který lze ve Visual Studiu pomocí jednoduchého uživatelského rozhraní editovat.
40
Windows Phone 8 V případě aplikace pro Windows Phone 8 se jedná o soubor WMAppManifest.xml umístěný v adresáři Properties. Obsahuje čtyři základní části: Aplikační rozhraní, možnosti integrace, hardwarové požadavky a nastavení distribučního balíku. [45] Aplikační rozhraní Sekce aplikační rozhraní umožňuje zadat název a popis aplikace, stanovit výchozí View (.xaml soubor), zvolit ikonu aplikace a vybrat cílová rozlišení displeje, která budou aplikací podporována. Dále zde lze zvolit typ živé dlaždice. Na výběr je ze tří typů: [46]
Flip – umožňuje zadat dva obrázky, které se v daném časovém intervalu střídají s efektem „převrácení“,
Cycle – lze definovat až 9 obrázků, které budou postupně na dlaždici rotovat,
Iconic – umožňuje zobrazení jednoduché grafiky bez dalšího vizuálního efektu.
Možnosti integrace V možnostech integrace má vývojář na výběr prvky systému, ke kterým požaduje přístup. Vždy by měly být vybrány pouze ty prvky, které jsou skutečně k běhu aplikace potřeba. Požadování nepotřebných komponent může vést k neschválení aplikace při publikaci (viz kapitola 7.7.1). Mezi tyto komponenty patří například přístup k fotoaparátu, přístup ke geografické poloze, přístup ke kontaktům nebo přístup k síťovému připojení. Hardwarové požadavky Některé low-end modely telefonů se systémem Windows Phone 8 nemusí být vybaveny některými senzory a snímači. Pokud vývojář v sekci hardwarové požadavky zaškrtne některý z uvedených senzorů, nebude možné aplikaci nainstalovat na zařízení, jež není daným senzorem vybaveno. Nastavení distribučního balíku Poslední sekce aplikačního manifestu obsahuje informace potřebné především pro zobrazení v aplikačním obchodě Windows Phone Store. Jedná se o autora a vydavatele
41
aplikace, její verzi a jednoznačnou identifikaci a podporované jazyky aplikačního obchodu, kde bude aplikace publikována.
Windows 8 Aplikace pro Windows 8 mají bohatší nastavení pomocí souboru manifestu. Ten se nachází v kořenové složce projektu s názvem Package.appxmanifest. Je rozdělen na 6 základních částí: Aplikační rozhraní, vizuální doplňky, možnosti integrace, deklarace, URL s obsahem a nastavení distribučního balíku. [47] Aplikační rozhraní Aplikační rozhraní umožňuje kromě nastavení názvu a popisu aplikace také výchozí jazykovou mutaci a výchozí View (.xaml soubor), který se má použít při spuštění aplikace. Dále zde můžeme stanovit, pro které polohy displeje je aplikace uzpůsobena, jaká je minimální šířka aplikace (pro potřeby běhu více aplikací současně) a možnosti využití aplikačních notifikací. Vizuální doplňky Sekce vizuální doplňky spravuje veškeré obrázky mimo aplikaci jako jsou obrázky na živých dlaždicích pro hlavní nabídku pro všechny dostupné velikosti dlaždic, logo aplikace pro zobrazení ve Windows Store, logo aplikace zobrazené v přehledu aplikací systému Windows 8 a obrázek zobrazený při načítání aplikace – Splash screen. Možnosti integrace V možnostech integrace volí vývojář, podobně jako v případě Windows Phone aplikace, požadované systémové prostředky. Jelikož zařízení s Windows 8 nejsou vybavena jiným senzorem, než GPS snímačem, nejsou tyto senzory vůbec nabídnuty. Deklarace Sekce deklarace poskytuje možnost určení jiných, než výchozích aplikací pro obsluhu některých systémových událostí jako dialogová okna pro načtení či uložení souboru, nastavení kamery, vyhledávač, apod.
42
URL s obsahem Každá aplikace může využít vestavěného webového prohlížeče pro zobrazení vzdáleného obsahu. Pokud je adresa tohoto odkazu uvedena v této sekci, získá přístup k systémové schránce a geografické poloze. Nastavení distribučního balíku V nastavení distribučního balíku lze aplikaci pojmenovat a zadat její verzi. Navíc lze aplikaci digitálně podepsat certifikátem.
7.5 Životní cyklus aplikace Životním cyklem aplikace se rozumí stavy aplikace, kterých může během svého běhu nabýt. Při změně stavu je vždy volána v aplikaci příslušná událost, která umožňuje vývojáři přizpůsobit chování aplikace při přechodu mezi těmito stavy. Životní cykly aplikací pro Windows Phone 8 a Windows 8 se liší především z důvodu různých požadavků ze stran uživatelů a také různých možností daných platforem.
7.5.1 Windows Phone 8 Aplikace v operačním systému Windows Phone 8 může nabýt čtyř základních stavů a vyvolat čtyři události. Schéma životního cyklu aplikace pro Windows Phone 8 je znázorněno na obrázku 7.6. Základním stavem aplikace je stav Not running (na obrázku 7.6 není vyobrazen) neboli neběžící. Aplikace v tomto stavu není vůbec načtena v paměti. Při spuštění aplikace je volána událost Application_Launching, ve které je vhodné načítat aplikační data z persistentního úložiště. Tím aplikace přejde do stavu Running, neboli běžící. Při ukončení aplikace je ještě před vypnutím volána událost Application_Closing, která poskytuje vývojáři prostor k uložení dat do persistentního úložiště. Poté dojde k úplnému odstranění aplikace z paměti a její přechod do stavu Not running. [48] [49] Jelikož platforma Windows Phone umožňuje běh pouze jediné aplikace v popředí, z důvodu úspory baterie a správě paměti, je potřeba, aby vývojář ošetřil také další stavy, ve kterých se může aplikace ocitnout. Pokud aplikace běží v popředí a dojde ke spuštění jiné aplikace, je zavolána událost Application_Deactivated a aplikace 43
přejde do stavu Dormant, neboli spící. Do tohoto stavu může aplikaci uvést také vnější vliv, jako je příchozí telefonní hovor, případně automatické zamknutí obrazovky. Ve stavu Dormant jsou zastavena všechna výpočetní vlákna vyhrazena pro aplikaci, ale celá aplikace i její stav jsou nadále drženy v operační paměti. Při obnovení je obnoven stav aplikace ve chvíli, kdy přešla do spícího stavu.
Obrázek 7.6 Životní cyklus Windows Phone aplikace [49]
Pokud je v systému spuštěna aplikace vyžadující větší množství operační paměti, než je aktuálně dostupné, převede automaticky operační systém nejstarší aplikaci do stavu Tombstoned, neboli pohřbena. V tomto stavu na rozdíl od stavu Dormant je aplikace uvolněna z operační paměti a je uložena pouze stránka, na které se aplikace nacházela. Při obnovení je aplikace načtena znovu do operační paměti a spuštěna na uložené stránce,
ale
její
stav
je
potřeba
znovu
načíst.
K
tomu
slouží
událost
Application_Activated, která je volána při obnovení z obou stavů. Když je aplikace ve stavu Tombstoned nebo Dormant, není žádná záruka, že bude někdy obnovena do stavu Running. Může být kdykoliv operačním systémem ukončena – převedena do stavu Not Running bez zavolání jakékoliv události. Je tedy 44
vhodné využít událostí Application_Deactivated a Application_Activated pro uložení, respektive obnovení stavu, pokud je to vzhledem k charakteru aplikace žádoucí. [48] [49]
7.5.2 Windows 8 Životní cyklus Windows 8 aplikace, znázorněný na obrázku 7.7, neobsahuje na rozdíl od Windows Phone aplikace stavy Dormant a Tombstoned, které jsou nahrazeny stavem Suspended. Přechody mezi stavy jsou podobně jako v případě aplikace pro Windows Phone 8 provázeny voláním specifických událostí. Přechod aplikace ze stavu NotRunning do stavu Running je doprovázen voláním události Activated. Během načítání aplikace je implicitně zobrazena Splash screen.
Obrázek 7.7 Životní cyklus Windows 8 aplikace [50]
Přechod aplikace do pozadí vyvolá událost Suspending. Obslužná procedura této události by měla uložit stav aplikace a uvolnit veškeré alokované prostředky. Pokud není tato procedura během 5 minut dokončena, operační systém automaticky aplikaci ukončí a smaže z paměti, čímž prostředky uvolní. Stejně jako v případě Windows Phone 8 jsou aplikace drženy v paměti, dokud má systém dostatek prostředků. V případě nedostatku operační paměti jsou aplikace automaticky ukončovány. V případě, že dojde k obnovení aplikace ze stavu Suspended, je volána událost Resuming a aplikace přejde zpět do stavu Running. [50]
45
7.6 XAML XAML (Extensible Application Markup Language) je značkovací jazyk vyvinutý společností Microsoft, primárně určený k popisu grafického uživatelského rozhraní. Přestože se možnosti jeho použití během posledních let značným způsobem rozšířily (může být použit například k serializaci objektů, ukládání dokumentů apod.), jeho hlavní oblast využití byla ve WPF aplikacích a nově také ve Windows Phone a Windows 8 aplikacích. Myšlenkou stojící za vývojem tohoto jazyka byla snaha oddělit vývoj uživatelského rozhraní (který může být prováděn například specializovanými grafiky) od vývoje aplikační logiky. V průběhu času vzniklo několik specializovaných vývojových nástrojů pro editaci XAML souborů (například již zmíněný Expression Blend), určených především pro grafické designéry. XAML je založen na XML struktuře elementů, které jsou do sebe vzájemně zanořovány. Jednotlivé elementy poté přímo odpovídají .NET objektům v rámci aplikace a programátor tak s nimi může v kódu pracovat (XML elementy jsou mapovány na instance CLR objektů a XML atributy jsou mapovány na jejich vlastnosti). [32] Aby bylo možné pomocí jazyka XAML navrhovat uživatelská rozhraní dle návrhového vzoru MVVM, je potřeba využít dvou velmi důležitých technologií: Data Binding a Routed Commands.
7.6.1 Data Binding Technika Data Binding slouží k propojení prvků uživatelského rozhraní a dat, která mají prezentovat. Je to proces vytvářející spojení mezi uživatelským rozhraním aplikace a aplikační logikou. Je-li Binding správně nastaven a zdroj dat poskytuje správné notifikace, pak dojde-li ke změně dat, elementy, které jsou na tato data napojeny, tuto změnu automaticky reflektují. Data Binding může také znamenat, že jestliže se vnější reprezentace dat v elementu změní, podkladová data mohou být na základě této změny automaticky aktualizována. [51] 46
Základní struktura každého napojení vychází z existence čtyř objektů:
Binding Target Object – cílový objekt, který má být pomocí Data Binding napojen na datový zdroj (platí, že jeden objekt může využívat více datových zdrojů pomocí opakovaného použití techniky Data Binding).
Target Property – vlastnost objektu, která má být napojena na data.
Binding Source – objekt obsahující zdrojová data – libovolný CLR objekt, XML struktura, databázový objekt, apod.
Cesta k hodnotě v binding source – určující, kde ve zdrojovém objektu má být nalezena hodnota, která má být dále zpropagována do cílového objektu.
Napojení může být realizováno třemi způsoby podle toho, jakým směrem mají data téct. [51]
One Way – jednosměrný Data Binding – principem jednosměrného napojení je automatická aktualizace dat v cílovém objektu, dojde-li ke změně dat v datovém zdroji. Typickou ukázkou je naplnění ovládacích prvků, které nejsou editovatelné, ale jejich obsah je potřeba udržovat aktuální.
Two Way – obousměrný Data Binding – při realizaci obousměrného napojení dochází k aktualizaci jak cílového objektu, tak v případě potřeby i zdrojových dat. Dojde-li tedy ke změně ve zdrojových datech, je cílový prvek automaticky aktualizován. Jsou-li data přepsána v cílovém prvku (např. v případě, že uživatel změní hodnotu v textovém poli), dojde k aktualizaci dat ve zdrojovém objektu.
One Way To Source – obrácený Data Binding – obdoba jednosměrného i, ale v obráceném pořadí – zdrojová data reflektují změny v cílovém elementu (v uživatelském rozhraní), ale nikoliv opačně.
V jazyce XAML lze Data Binding nastavit pomocí vnořeného elementu
, případně zkrácenou formou:
47
Chování napojení pomocí techniky Data Binding lze dále podrobněji nastavovat například pomocí konvertorů, čímž lze docílit zobrazení dat požadovaným způsobem.
7.6.2 Příkazy (Commands) Pro zpracování uživatelských vstupů je využíván princip příkazů (Commands, lze se setkat také s termínem Commanding). Cílem je zpracování uživatelských vstupů na sémantičtějším principu než v případě zpracování uživatelských akcí pomocí metod umístěných v code-behind. Základem je myšlenka oddělení sémantiky příkazu od objektu, který ho vyvolává. Jako příklad bývá uváděn princip známých příkazů Kopírovat, Vyjmout a Vložit (Copy, Cut, Paste). Ty jsou implementovány v mnoha aplikacích a jejich význam je vždy stejný, bez ohledu na to, v jakém objektu jsou tyto příkazy vyvolány. Je používán princip tzv. Routed Commands. Ten vychází z existence čtyř základních konceptů: [52]
Command (příkaz) - akce, která má být provedena.
Command Source (zdroj příkazu) - objekt, který vyvolá příkaz.
Command Target (cíl příkazu) - objekt, na kterém je příkaz vykonán.
Command Binding (napojení příkazu) – objekt, mapující příkaz na jeho logiku.
Příkazy je možno v XAMLu nastavovat následujícím způsobem: [52] <StackPanel> <Menu> <MenuItem Command="ApplicationCommands.Paste" />
Ukázka kódu obsahuje nabídku (Menu), položku nabídky (MenuItem) a textové políčko (TextBox). Je použit příkaz Paste, což je jeden ze systémových příkazů definovaných ve třídě ApplicationCommands. Použije-li uživatel klepnutím na MenuItem příkaz ke vložení obsahu schránky do textového políčka, je •
příkaz - příkaz Paste,
•
zdroj příkazu - použitý MenuItem, 48
•
cíl příkazu - textové políčko TextBox,
•
napojení příkazu - objekt mapující obsluhu události „Vložit“ na textovém políčku (mapující objekt bývá zpravidla definován v rámci cílového objektu – v tomto konkrétním případě však stačí, aby textové políčko TextBox bylo aktivní).
Je možno využít některého z dostupných předdefinovaných příkazů (k dispozici jsou například ve třídách ApplicationCommands a NavigationCommands), nebo má programátor možnost vytvořit si příkazy vlastní.
7.7 Publikace na aplikační obchody Aby mohl vývojář publikovat své aplikace na aplikační obchody Windows Phone Store, respektive Windows Store, musí být registrovaným vývojářem s platným vývojářským účtem. Roční aktivační poplatek vývojářského účtu činí $99 USD. Pro studenty je aktivace vývojářského účtu v rámci programu DreamSpark [44] zdarma.
7.7.1 Schvalovací proces Před uvolněním ke stažení uživateli musí každá aplikace projít schvalovacím procesem. Aby byla aplikace schválena, musí být splněna pravidla a podmínky. Jejich kompletní znění se nachazí na webu Windows Phone Dev Center [53], respektive Windows Dev Center [54]. Podmínky jednotlivých platforem obsahují mírné odlišnosti, ale v mnoha bodech jsou shodné. Mezi ty nejzásadnější patří:
Aplikace musí být plně funkční v momentě publikace.
Aplikace musí běžet plynule a poskytovat stejný uživatelský komfort na všech cílených zařízeních.
Aplikace musí splňovat UI Guidelines.
Pokud aplikace potřebuje ke svému běhu přenos velkého množství dat, musí na tuto skutečnost být uživatel upozorněn a poskytnout souhlas.
Pokud aplikace přistupuje k uživatelově geografické poloze, musí být na tuto skutečnost upozorněn.
49
Aplikace musí být plně ovladatelná pomocí dotykové obrazovky. U Windows 8 musí také podporovat klávesnici a myš.
Proces schvalování z praktických zkušeností trvá přibližně 4 dny od publikace aplikace. Během této doby je aplikace testována týmem testerů přímo v regionu, ze kterého pochází.
7.7.2 Zveřejnění aplikace Při publikaci aplikace je u obou platforem možné vybrat si, kdy bude aplikace zveřejněna. Oba obchody nabízí možnost zveřejnění ihned po úspěšném schválení aplikace. Windows Phone Store nabízí možnost manuální publikace kdykoliv po jejím schválení. Naproti tomu Windows Store umožňuje zvolit konkrétní datum, kdy má být aplikace zveřejněna za předpokladu, že již byla schválena. Windows Phone Store umožňuje zveřejnit aplikaci jako Beta verzi, což znamená, že není veřejně přístupná všem uživatelům. Vývojář má možnost zadat až 10000 Live ID účtů uživatelů, kteří mají možnost aplikaci stáhnout pro účely testování.
50
8 Ukázková aplikace V ukázkové aplikaci budou představeny hlavní grafické koncepty platforem Windows Phone 8 a Windows 8. Ve výsledku budou patrné rozdíly v interpretaci grafických prvků a v možnostech jednotlivých platforem. Podrobná specifikace je uvedena v následující kapitole. Aplikace bude od počátku vyvíjena s důrazem na přehlednost kódu, oddělení jednotlivých aplikačních vrstev pomocí MVVM architektury (viz kapitola 7.1.1) a přenositelnost z platformy Windows Phone 8 na platformu Windows 8.
8.1 Specifikace Aplikace bude vyvíjena jako nativní aplikace bez využití dalšího middleware. Pro vytvoření uživatelského rozhraní bude využit značkovací jazyk XAML [32], programový kód bude psán v objektovém jazyce C#. Aplikace pro Windows Phone bude vyvíjena pomocí Windows Phone .NET API, aplikace pro Windows 8 bude vyvíjena pomocí .NET for Windows Store API. Použita bude aktuálně nejnovější verze knihovny .NET Framework – verze 4.5. Aplikace CVManager bude sloužit pro demonstraci základních principů vývoje aplikací pro platformu Windows Phone 8 a snadnou portaci na Windows 8 aplikaci. Cílem této diplomové práce není vyrobit funkční užitečnou aplikaci, proto je její reálný užitek v kontextu této práce nepodstatný. Uživatelské rozhraní umožní zobrazení základních informací obsažených ve fiktivním životopisu (osobní údaje, pracovní zkušenosti a vzdělání) a jejich simulované odeslání na servery s nabídkami práce.
51
8.2 Implementace 8.2.1 Struktura projektu a architektura aplikace Aplikace je vyvíjena pomocí vývojového prostředí Visual Studio 2013. Všechny její komponenty (včetně aplikací pro Windows Phone a Windows 8) jsou uspořádány do jednoho Solution, jehož základní strukturu tvoří celkem 5 projektů:
CVManager.WP8 (projekt typu Windows Phone 8 Application) – uživatelské rozhraní pro Widnows Phone, CVManager.W8 (projekt typu Windows Store 8.1 Application) – uživatelské rozhraní pro Windows 8, CVManager.WP8.Base (projekt typu Windows Phone Class Library) – třídy s platformně specifickým kódem pro Windows Phone, CVManager.W8.Base (projekt typu Class Library For Windows Store App) – třídy s platformně specifickým kódem pro Windows 8, CVManager.Portable (projekt typu Portable Class Library) – třídy, které jsou společně využívány jak Windows Phone, tak Windows 8 aplikací.
Obrázek 8.1 Struktura projektů ukázkové aplikace a jejich vzájemné reference
Základním cílem bylo zvolit strukturu aplikace tak, aby byly demonstrovány možnosti kombinace specifického kódu daných platforem (který je psán zvlášť pro Windows Phone a pro Windows 8 aplikaci), společného kódu (který je psán v celém projektu jen na jednom místě a je tedy sdílený pro obě aplikace) a platformně specifického uživatelského rozhraní. 52
Vzájemné závislosti jednotlivých projektů jsou znázorněny na obrázku 8.1. Lze z něj vyčíst, že zdrojový kód obsažený v projektu CVManager.Portable je využíván jak v obou uživatelských rozhraních, tak v obou projektech s platformně specifickými třídami. Při vývoji je využit preferovaný návrhový vzor MVVM, který byl popsán v kapitole 7.1.1. Jak již bylo zmíněno, principem tohoto návrhového vzoru je rozdělení aplikace na tři komponenty. V ukázkové aplikaci jsou implementovány následovně:
View – implementováno pomocí jazyka XAML s využitím techniky DataBinding, ViewModel – implementovány jako C# třídy, společné pro Windows Phone i Windows 8 aplikaci, Model – v této aplikaci nahrazen jednoduchými statickými ukázkovými záznamy, které jsou napevno vepsány v kódu aplikace.
Následující tabulka uvádí, jak jsou jednotlivé komponenty rozděleny do projektů: Platfrom specific Applications Portable class library Platform specific Bases
Views (XAML) Models, ViewModels Common Services Service Interfaces Platform specific Services Implementation
Tabulka 8.1 Rozdělení komponent ukázkové aplikace do projektů
Uživatelské rozhraní je specifické pro každou z diskutovaných platforem. Jednotlivé stránky jsou tedy naimplementovány dvakrát – jednou pro Windows Phone a jednou pro Windows 8 aplikaci. Třídy ViewModel, v nichž je ukryta logika napojení uživatelského rozhraní na data a zpracování uživatelských vstupů, jsou obsaženy ve sdíleném projektu CVManager.Portable. Pro ilustraci možností využití platformně specifického kódu jsou implementace některých tříd rovněž pro každou z platforem zvlášť. Možnost jejich použití ze společných tříd (zejména ViewModel) je zajištěno pomocí dědičnosti společného rozhraní (Interface).
8.2.2 Uživatelské rozhraní Jak již bylo zmíněno, uživatelské rozhraní jakožto komponenta View, je psáno jako jednotlivé stránky v jazyce XAML. Tyto stránky se pro každou z diskutovaných platforem liší především z důvodu rozdílných specifikací zařízení diskutovaných 53
v kapitole 6. Ovládací prvky, ze kterých se uživatelské rozhraní skládá, jsou pro jednotlivé platformy rozdílné především z důvodu rozdílných Design guidelines. Díky technikám Data Binding a Commanding je napojení uživatelského rozhraní na třídy ViewModel velmi snadné. V praxi je realizováno v rámci code-behind následujícím způsobem:
Každá stránka má v code-behind statickou vlastnost ViewModel. S využitím techniky Lazy loading je inicializována až ve chvíli, kdy je potřeba. private static MainViewModel viewModel = null; public static MainViewModel ViewModel { get { if (viewModel == null) viewModel = new MainViewModel(); return viewModel; } }
Při inicializaci třídy stránky je tento ViewModel nastaven jako datový kontext celé stránce. Tím je řečeno, že při použití techniky Data Binding mají být hodnoty získány právě z této ViewModel třídy. public MainPage() { this.DataContext = ViewModel; }
Při načítání stránky je tato ViewModel třída naplněna daty. V ukázkové aplikaci je tento přístup simulován metodou LoadData, která by v reálné aplikaci vedla k načtení dat z datového modelu. if (!ViewModel.IsDataLoaded) { ViewModel.LoadData(); }
V aplikaci pro Windows Phone je načtení dat voláno v rámci obsluhy události OnNavigatedTo. V aplikaci pro Windows 8 je načtení dat realizováno v metodě NavigationHelper_LoadState. Tento rozdíl však nemá na funkci žádný výrazný vliv.
54
Mimo
výše
uvedené
funkce
není
ve
třídách
s
uživatelským
rozhraním
(tj. v jednotlivých stránkách) prakticky žádný C# kód. Vše ostatní obstarávají techniky Data Binding a Commanding popsané v kapitole 7.6. Díky tomu je portace na platformu Windows 8 (případně další platformy v rámci Microsoft WPF) velmi jednoduchá. Je nutné pouze vytvořit nové View (v jazyce XAML) pro danou platformu a napojit jej na již existující ViewModel. Veškerá funkčnost zůstane zachována.
8.2.3 Třídy ViewModel Jak již bylo zmíněno, třídy ViewModel zajišťují propojení aplikační logiky s uživatelským rozhraním, a to obousměrně – jak prezentace dat v uživatelském rozhraní, tak přenos uživatelských vstupů do aplikační logiky. Ve Windows Phone a Windows 8 aplikacích musí každá třída ViewModel implementovat rozhraní INotifyPropertyChanged. Tím je zajištěna správná funkce techniky Data Binding. Toto rozhraní deklaruje událost PropertyChanged, která má být vyvolána pokaždé, když dojde ke změně hodnoty některé z vlastností třídy ViewModel. V ukázkové aplikaci je toto realizováno pomocí bázové třídy ViewModelBase, ze které dědí všechny třídy ViewModel a která vyvolávání události PropertyChanged implementuje. Konkrétní implementaci znázorňuje následující úryvek kódu bázové třídy: public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } }
8.2.4 Zpracování uživatelských vstupů Uživatelské vstupy jsou generovány z View, odkud jsou skrze třídy ViewModel přeneseny do aplikační logiky. Pro tento přenos je využito techniky Commanding, popsané v kapitole 7.6.2.
55
V
ukázkové
aplikaci
je
pro
ilustraci
implementován
jednoduchý
příkaz
SimpleCommand zajišťující pouze volání vybrané metody zadané při jeho deklaraci. V reálné aplikaci by podobných příkazů bylo mnohem více a musely by umožňovat i pokročilejší funkce, například předávání argumentů z View, asynchronní volání, apod. V případě vývoje pro Windows Phone a Windows 8 je možné mít tyto příkazy definované ve společném projektu (Portable class library) a není tedy nutná jejich redundantní implementace. Tento přístup je v ukázkové aplikaci ilustrován na příkazu „Odeslat životopis“. Jak je znázorněno na obrázku 8.2, je kliknutím na tlačítko „Odeslat“ (definováno ve View pro každou platformu zvlášť) vyvolán příkaz SimpleCommand, který je odeslán do společné třídy ViewModel.
Obrázek 8.2 Schéma využití techniky Commanding v ukázkové aplikaci
Pro demonstraci je odeslání životopisu implementováno jako platformně specifický kód. ViewModel tedy pracuje pouze s rozhraním ICVSenderService, které je definováno v rámci společného projektu. Jeho konkrétní implementace je součástí platformně specifických projektů a je do třídy ViewModel injektována v konstruktoru.
56
8.3 Publikace Vzhledem k tomu, že aplikace jsou vyvinuty pouze jako prototypy demonstrující možnosti vývoje aplikace pro Windows Phone a její portaci na Windows 8, budou na aplikační obchody publikovány pouze jako neveřejné Beta verze aplikace.
Windows Phone Store Publikace aplikace na Windows Phone Store se provádí přes webové rozhraní Windows Phone Dev Center [55] po přihlášení pomocí vývojářského Live ID účtu. Samotná publikace sestává ze dvou kroků. V prvním kroku se volí aplikaci alias, podle kterého je dohledatelná v seznamu publikovaných aplikací daným vývojářem. Název aplikace tak, jak se zobrazí ve Windows Phone Store se vyplňuje v rámci aplikačního manifestu, viz kapitola 7.4.1. Dále je potřeba zvolit kategorii, do které aplikace spadá a stanovit její cenu. Jelikož se v případě ukázkové aplikace jedná pouze o prototyp s omezenou funkčností, bude tato publikována jako neveřejná Beta verze, která nepodléhá schvalovacímu procesu popsanému v kapitole 7.7.1. Pro tyto účely je potřeba vyplnit Live ID účty uživatelů, kterým bude umožněno aplikaci stáhnout a nainstalovat. V kroku druhém je potřeba nahrát zkompilovaný balík s aplikací (soubor .xap). Poté lze zkontrolovat údaje vyplněné v aplikačním manifestu, zda odpovídají požadavkům aplikace. Dále lze nahrát sadu obrázků, jako jsou snímky obrazovky přímo z aplikace a ikonu pro zobrazení ve Store. Pro prezentaci aplikace na Store je zde také možnost zadat popis o délce až 2000 znaků a klíčová slova pro usnadnění vyhledávání.
Windows Store Publikovat aplikaci na Windows Store se rovněž provádí skrze webové rozhraní. Po přihlášení do Windows Dev Center [56] je k dispozici průvodce publikace aplikace sestávající z několika dílčích kroků. Prvním krokem je rezervace názvu aplikace. Tuto rezervaci je možné provést dřív, než je aplikace publikována. Další kroky jsou obdobné jako v případě Windows Phone
57
Store. Navíc se zde volí věková přístupnost aplikace a další nastavení specifická pro některé regiony, pokud je na ně aplikace cílena. V posledním kroku je potřeba nahrát distribuční balíček aplikace. Ten nelze vytvořit pouhým zkompilováním zdrojových kódů, ale je potřeba použít průvodce vytvořením aplikačního balíčku dostupného v prostředí Visual Studio. Jeho součástí je také automatizovaná kontrola, zda aplikace splňuje certifikační požadavky. Po vytvoření balíku je možné jej v průvodci nahrát, zkontrolovat zadané údaje a odeslat aplikaci do schvalovacího procesu. Jelikož Windows Store nepodporuje publikaci aplikace jako Beta verzi, byla testovací aplikace nahrána jako ostrá verze. Vzhledem k tomu, že se jedná pouze o prototyp s velice omezenou funkčností, neprošla aplikace certifikací.
8.4 Problémy při vývoji Při vývoji ukázkové aplikace se vyskytlo několik problémů, které bylo nutno vyřešit.
8.4.1 Hardware a operační systém První problém nastal již při instalaci vývojových nástrojů. Windows Phone 8 SDK vyžaduje pro instalaci minimálně operační systém Windows 8. Tento požadavek je zde proto, že emulátor Windows Phone běží ve virtuálním stroji pomoci technologie Hyper-V, která je součástí systému Windows 8. Spolu s tímto požadavkem souvisí také požadavek na procesor. Ten musí podporovat virtualizační technologii SLAT [57]. Pro spuštění vyžaduje Windows Phone Emulator alespoň 2 GB volné operační paměti.
8.4.2 Vývojové nástroje Pro návrh uživatelského rozhraní nebylo využito nástroje Expression Blend, ale pouze vestavěné podpory v podobě UI designeru v prostředí Visual Studio. Ten poskytuje pouze základní možnosti vizuální tvorby. Je tedy potřeba mít hlubší znalosti jazyka XAML a jeho možností.
58
9 Závěr Trh s mobilními zařízeními se neustále rozšiřuje. Klasické mobilní telefony jsou nahrazovány chytrými telefony, stolní počítače a notebooky jsou nahrazovány tablety. Jejich obliba je dána především možnostmi, které zařízení nabízí. Operační systém, který na přístroji běží, umožňuje instalaci a užívání aplikací, které významným způsobem rozšiřují jeho možnosti. Trhu s chytrými telefony a tablety dominuje operační systém Android od Googlu, který podporuje jak chytré telefony, tak tablety. Druhým největším operačním systémem, který rovněž podporuje chytré telefony i tablety je iOS ad Applu. Třetím a zároveň nejmladším operačním systémem pro chytré telefony je Windows Phone 8 od Microsoftu. Ten nelze provozovat na tabletech, jeho alternativou je operační systém Windows 8. Neexistence jednotného operačního systému pro chytré telefony a tablety je značnou nevýhodou pro Microsoft a lze očekávat, že v horizontu několika let své dva operační systémy Windows Phone 8 a Windows 8 sjednotí po vzoru rozšířenějších konkurenčních platforem. V diplomové práci byly představeny typy mobilních zařízení a aplikací, které pro ně lze vyvíjet. Byly ukázány možnosti implementace těchto aplikací vzhledem k jejich charakteru. Práce se podrobněji zabývala možnostmi vývoje nativní aplikace pro platformu Windows Phone 8 a její portací na platformu Windows 8. Byla navržena a implementována ukázková aplikace demonstrující základní principy takového vývoje aplikací, jmenovitě využití architektury MVVM, použití technik Data Binding a Commanding, využití sdíleného kódu pomocí Portable Class Library a možnosti implementace platformně specifického kódu a jeho použití ve sdílené knihovně pomocí rozhraní a dědičnosti. Obě verze aplikace byly následně publikovány na aplikační obchody Windows Phone Store, respektive Windows Store.
59
Vývoj nativní aplikace má velkou nevýhodu v nemožnosti snadné portace na konkurenční platformy. Tento problém řeší využití metody in-browser aplikace, která je psána v HTML5 + JavaScriptu a interpretována v systémovém webovém prohlížeči. Další možností je využití middleware, který přenositelnost mezi platformami zajišťuje. Pro většinu aplikací je dostačující metoda in-browser, jejíž velkou nevýhodou je v současné době výpočetní výkon a menší možnosti integrace s operačním systémem. Lze však předpokládat, že výkon zařízení neustále poroste a výkonnostní nevýhoda časem pomine.
60
Slovník pojmů SDK – Software development kit – soubor nástrojů pro vývoj software pro dané zařízení či platformu API - Application Programming Interface – souhrn metod a funkcí, umožňující interakci aplikace s hostitelským systémem GSM - Global System for Mobile communication – hlasová mobilní telefonní síť GPU - Graphic Processing Unit – grafický čip GUI - Graphical User Interface – uživatelské rozhraní VoIP – Voice over IP – souhr protokolů a služeb umožňující telefonování přes IP síť GPS – Global Positioning System – systém sloužící k určení zeměpisné polohy pomocí sítě družic IM – Instant Messaging – systém umožňující zasílání krátkých textových zpráv protistraně JSON - JavaScript Object Notation – datový formát pro přenos serializovaných dat XML - Extensible Markup Language – univerzální značkovací jazyk MSDN - Microsoft Developer Network – webový portál poskytující dokumentace a další potřebné informace a zdroje pro vývojáře XAML - Extensible Application Markup Language – značkovací jazyk pro definici uživatelského rozhraní postavený na XML WPF – Windows Presentation Foundation – soubor technologií pro vývoj software MVC – Modev-View-Controller – obecný návrhový vzor pro vývoj aplikací oddělující aplikační logiku od uživatelského rozhraní a datového zdroje MVVM – Model-View-ViewModel – alternativní návrhový vzor k MVC
61
CLR – Common Language Runtime – virtuální prostředí pro běh aplikací na platformě Microsoft .NET SLAT – Second Level Address Translation – komponenta zajišťující hardwarovou podporu virtualizačních technologií
62
Literatura 1.
CODY, H. Libraries and the Mobile Web : A Library Technology Report. Chicago (USA): American Library Association TechSource, 2011, 37 s.. ISBN 9780838958308.
2.
Android Captures Record 81 Percent Share of Global Smartphone Shipments in Q3 2013. In: Strategy Analytics [online]. 31. 10. 2013 [cit. 2013-11-14]. Dostupné z: http://blogs.strategyanalytics.com/WSS/post/2013/10/31/Android-CapturesRecord-81-Percent-Share-of-Global-Smartphone-Shipments-in-Q3-2013.aspx
3.
IDC - INTERNATIONAL DATA CORPORATION. More Smartphones Were Shipped in Q1 2013 Than Feature Phones. In: Business Wire [online]. 25. 4. 2013 [cit. 2013-11-03]. Dostupné z: http://www.businesswire.com/news/home/ 20130425006953/en/Smartphones-Shipped-Q1-2013-Feature-Phones-Industry
4.
PODZIMEK, D. Souhrn prodejních výsledků za třetí čtvrtletí: Největší výrobci, podíly systémů. In: SmartMania.cz [online]. 20. 11. 2013 [cit. 2013-11-20]. Dostupné z: http://smartmania.cz/clanky/souhrn-prodejnich-vysledku-zatreti-ctvrtleti-nejvetsi-vyrobci-podily-systemu-6208
5.
WARREN, T. Panasonic’s giant 4K tablet goes on sale in January for an eyepopping $5,999. In: WARREN, T. The Verge [online]. 8. 11. 2013 [cit. 2013-11-10]. Dostupné z: http://www.theverge.com/2013/11/8/5080136/panasonic-4ktoughpad-tablet-specifications-price-release-date
6.
Tablets to make up 50% of PC market in 2014. In: Canalys Newsroom [online]. 26. 11. 2013 [cit. 2013-12-07]. Dostupné z: http://www.canalys.com/newsroom/ tablets-make-50-pc-market-2014
7.
CURTIS, S. 'Phablets' overtake tablets and laptops in Asia. In: The Telegraph [online]. 2. 9. 2013 [cit. 2013-11-04]. Dostupné z: http://www.telegraph.co.uk/ technology/news/10281036/Phablets-overtake-tablets-and-laptops-inAsia.html
8.
OXFORD UNIVERSITY PRESS. Definition of phablet in English. In: Oxford Dictionaries [online]. [cit. 2013-10-16]. Dostupné z: http:// www.oxforddictionaries.com/definition/english/phablet
9.
ROWINSKI, D. Google Play Hits One Million Android Apps. In: ReadWrite [online]. 24. 7. 2013 [cit. 2013-10-25]. Dostupné z: http://readwrite.com/2013/ 07/24/google-play-hits-one-million-androidapps#awesm=~oqcNaN9GMBydue
10. INGRAHAM, N. Apple announces 1 million apps in the App Store, more than 1 billion songs played on iTunes radio. In: The Verge [online]. 22. 10. 2013 [cit. 2013-11-18]. Dostupné z: http://www.theverge.com/2013/10/22/4866302/ apple-announces-1-million-apps-in-the-app-store 63
11. Microsoft touts 190,000 apps, 10 million Windows Phone Store transactions per day. In: WMPoweruser [online]. 20. 11. 2013 [cit. 2013-12-06]. Dostupné z: http:// wmpoweruser.com/microsoft-touts-10-million-windows-phone-storetransactions-per-day/ 12. MetroStore Scanner [online]. 16. 12. 2013 [cit. 2013-12-16]. Dostupné z: http:// www.metrostorescanner.com/ 13. GOOGLE INC. Android SDK. Android Developers [online]. [cit. 2013-10-19]. Dostupné z: https://developer.android.com/sdk/index.html 14. APPLE INC. iOS Dev Center. Apple Developer [online]. [cit. 2013-10-19]. Dostupné z: https://developer.apple.com/devcenter/ios/index.action 15. MICROSOFT CORPORATION. Windows Phone SDK. Windows Phone Dev Center [online]. [cit. 2013-09-26]. Dostupné z: http:// developer.windowsphone.com/en-us/downloadsdk 16. MICROSOFT CORPORATION. Windows Software Development Kit (SDK) for Windows 8.1. Windows Dev Center [online]. 2013 [cit. 2013-10-12]. Dostupné z: http://msdn.microsoft.com/en-US/windows/desktop/bg162891 17. HTML5 - A vocabulary and associated APIs for HTML and XHTML. W3C [online]. 6. 8. 2013 [cit. 2013-11-02]. Dostupné z: http://www.w3.org/TR/ html5/ 18. Introducing JSON. JSON [online]. [cit. 2013-10-26]. Dostupné z: http:// www.json.org/ 19. Building Cross Platform Applications. In: Xamarin Developer Center [online]. [cit. 2013-11-05]. Dostupné z: http://docs.xamarin.com/guides/cross-platform/ application_fundamentals/building_cross_platform_applications/ 20. MARMALADE TECHNOLOGIES LTD. Marmalade C++ SDK. Marmalade [online]. [cit. 2013-10-28]. Dostupné z: https://www.madewithmarmalade.com/ products/marmalade-sdk 21. ADOBE SYSTEMS INC. Phonegap Developer Portal [online]. [cit. 2013-10-19]. Dostupné z: http://phonegap.com/developer/ 22. MENDELEVICH, A. AdDuplex Windows Phone Statistics Report for November 2013. In: AddDuplex blog [online]. 27. 11. 2013 [cit. 2013-11-30]. Dostupné z: http://blog.adduplex.com/2013/11/adduplex-windows-phone-statistics.html 23. ARM LTD. ARM - The Architecture for the Digital World [online]. [cit. 2013-11-08]. Dostupné z: http://www.arm.com/ 24. MCALLISTER, N. Microsoft: It was never 'Metro,' it was always 'Modern UI'. In: The Register [online]. 10. 8. 2012 [cit. 2013-10-11]. Dostupné z: http:// www.theregister.co.uk/2012/08/10/metro_is_modern_ui_now/
64
25. LUDLOW, D. Designing Windows Phone 8. In: Expert Reviews [online]. 30. 10. 2013 [cit. 2013-11-14]. Dostupné z: http://www.expertreviews.co.uk/mobilephones/1295629/designing-windows-phone-8 26. MICROSOFT CORPORATION. Windows 8.1 [online]. [cit. 2013-10-15]. Dostupné z: http://windows.microsoft.com/cs-cz/windows-8/meet 27. BRIX, T. Unifying Developer Registration: Windows and Windows Phone. In: Windows Phone Developer Blog [online]. 6. 11. 2013 [cit. 2013-11-06]. Dostupné z: http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/11/06/ unifying-developer-registration-windows-and-windows-phone.aspx 28. SABRI, S. Microsoft teases new Start Screen Innovation plans for Windows Phone in 2014. In: Windows Phone Central [online]. 10. 7. 2013 [cit. 2013-10-12]. Dostupné z: http://www.wpcentral.com/microsoft-teases-new-start-screeninnovation-plans-windows-phone-2014 29. NOKIA CORPORATION. Co-development for Windows Phone 7/8 and Windows 8 guide. In: Nokia Developer [online]. [cit. 2013-11-28]. Dostupné z: http://developer.nokia.com/Community/Wiki/Codevelopment_for_Windows_Phone_7/8_and_Windows_8_guide 30. MICROSOFT CORPORATION. Design library for Windows Phone. In: Windows Phone Dev Center [online]. 30. 9. 2013 [cit. 2013-10-12]. Dostupné z: http:// msdn.microsoft.com/en-us/library/windowsphone/design/ hh202915(v=vs.105).aspx 31. MICROSOFT CORPORATION. Guidelines for window sizes and scaling to screens. In: Windows Dev Center [online]. 16. 11. 2013 [cit. 2013-11-25]. Dostupné z: http://msdn.microsoft.com/en-us/library/windows/apps/hh465349.aspx 32. MICROSOFT CORPORATION. XAML Overview (WPF). In: Microsoft Developer Network [online]. [cit. 2013-11-28]. Dostupné z: http://msdn.microsoft.com/enus/library/ms752059(v=vs.110).aspx 33. MICROSOFT CORPORATION. Microsoft.NET [online]. [cit. 2013-10-28]. Dostupné z: http://www.microsoft.com/net/ 34. MICROSOFT CORPORATION..NET API for Windows Phone. In: Windows Phone Dev Center [online]. 30. 9. 2013 [cit. 2013-10-05]. Dostupné z: http:// msdn.microsoft.com/en-us/library/windowsphone/develop/ jj207211(v=vs.105).aspx 35. MICROSOFT CORPORATION. Windows Phone API reference. In: Windows Phone Dev Center [online]. 2. 10. 2013 [cit. 2013-10-05]. Dostupné z: http:// msdn.microsoft.com/en-us/library/windowsphone/develop/ ff626516(v=vs.105).aspx 36. GEŠVINDR, D. Vývoj aplikací pro Windows Phone 8. Brno: Windows User Group, 2013. 65
37. MICROSOFT CORPORATION. Windows Phone Runtime API. In: Windows Phone Dev Center [online]. 30. 9. 2013 [cit. 2013-10-14]. Dostupné z: http:// msdn.microsoft.com/en-us/library/windowsphone/develop/ jj207212(v=vs.105).aspx 38. MICROSOFT CORPORATION. Win32 and COM API for Windows Phone 8. In: WIndows Phone Dev Center [online]. 30. 9. 2013. Dostupné také z: http:// msdn.microsoft.com/en-us/library/windowsphone/develop/ jj207198(v=vs.105).aspx 39. WIKIMEDIA FOUNDATION. Sandbox. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikipedia Foundation, 4. 6. 2013 [cit. 2013-11-29]. Dostupné z: http://cs.wikipedia.org/wiki/Sandbox 40. LOVELL, M. Lap around the Windows Runtime. Anaheim, California: Windows BUILD, 1492011. 41. MICROSOFT CORPORATION. API reference for Windows Store apps. In: WIND. Windows Dev Center [online]. 17. 10. 2013 [cit. 2013-10-25]. Dostupné z: http://msdn.microsoft.com/en-us/library/windows/apps/br211369.aspx 42. SIDDIQI, R. a M. SHUJAAT. MVVM Survival Guide for Enterprise Architectures in Silverlight and WPF. Olton Birmingham (Velká Británie): Packt Publishing Ltd, 2012, 490 s.. ISBN 9781849683425. 43. MICROSOFT CORPORATION. Separate UI and app logic using the ModelView-ViewModel pattern. In: Windows Phone Dev Center [online]. 4. 11. 2013 [cit. 2013-11-10]. Dostupné z: http://msdn.microsoft.com/en-us/library/ windowsphone/develop/jj721615(v=vs.105).aspx 44. MICROSOFT CORPORATION. Microsoft DreamSpark [online]. [cit. 2013-12-04]. Dostupné z: https://www.dreamspark.com/Default.aspx 45. MICROSOFT CORPORATION. App manifest file for Windows Phone. In: Windows Phone Dev Center [online]. 4. 11. 2013 [cit. 2013-11-19]. Dostupné z: http://msdn.microsoft.com/en-us/library/windowsphone/develop/ ff769509(v=vs.105).aspx 46. MICROSOFT CORPORATION. Choosing the best Tile template for your app for Windows Phone. In: Windows Phone Dev Center [online]. 30. 9. 2013 [cit. 2013-1008]. Dostupné z: http://msdn.microsoft.com/en-us/library/windowsphone/ design/jj662926(v=vs.105).aspx 47. MICROSOFT CORPORATION. App packages and deployment (Windows Store apps). In: Windows Dev Center [online]. 26. 11. 2013 [cit. 2013-11-30]. Dostupné z: http://msdn.microsoft.com/en-us/library/windows/apps/hh464929.aspx 48. NOKIA CORPORATION. Application Life Cycle - Windows Phone. In: Nokia Developer [online]. 18. 9. 2011 [cit. 2013-11-16]. Dostupné z: http://
66
developer.nokia.com/Community/Wiki/Application_Life_Cycle__Windows_Phone 49. MICROSOFT CORPORATION. App activation and deactivation for Windows Phone. In: Windows Phone Dev Center [online]. 4. 11. 2013 [cit. 2013-11-05]. Dostupné z: http://msdn.microsoft.com/en-us/library/windowsphone/ develop/ff817008(v=vs.105).aspx 50. MICROSOFT CORPORATION. Application lifecycle (Windows Store apps). In: Windows Dev Center [online]. 26. 11. 2013 [cit. 2013-12-01]. Dostupné z: http:// msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx 51. MICROSOFT CORPORATION. Data Binding Overview. In: Microsoft Developer Network [online]. [cit. 2013-11-28]. Dostupné z: http://msdn.microsoft.com/enus/library/ms752347(v=vs.110).aspx#what_is_data_binding 52. MICROSOFT CORPORATION. Commanding Overview. In: Microsoft Developer Network [online]. [cit. 2013-11-18]. Dostupné z: http://msdn.microsoft.com/enus/library/ms752308(v=vs.110).aspx 53. MICROSOFT CORPORATION. App policies for Windows Phone. In: Windows Phone Dev Center [online]. 4. 11. 2013 [cit. 2013-11-19]. Dostupné z: http:// msdn.microsoft.com/en-us/library/windowsphone/develop/ hh184841(v=vs.105).aspx 54. MICROSOFT CORPORATION. App certification requirements for the Windows Store. In: Windows Dev Center [online]. 17. 10. 2013 [cit. 2013-11-24]. Dostupné z: http://msdn.microsoft.com/en-US/library/windows/apps/hh694083.aspx 55. MICROSOFT CORPORATION. Submit app. Windows Phone Dev Center [online]. [cit. 2013-12-12]. Dostupné z: https://dev.windowsphone.com/en-us/ AppSubmission/Hub 56. MICROSOFT CORPORATION. Submit an app. Windows Dev Center [online]. [cit. 2013-12-14]. Dostupné z: https://appdev.microsoft.com/StorePortals/enUS/Developer/Catalog/ReleaseAnchor 57. SIEMENS, C. Hyper-V: List of SLAT-Capable CPUs for Hosts. In: Microsoft TechNet [online]. 15. 11. 2013 [cit. 2013-12-12]. Dostupné z: http:// social.technet.microsoft.com/wiki/contents/articles/1401.hyper-v-list-of-slatcapable-cpus-for-hosts.aspx 58. XAML Overview (WPF) [online]. Dostupné také z: http://msdn.microsoft.com/ en-us/library/ms752059(v=vs.110).aspx
67
Přílohy 1. Zdrojový kód ukázkové aplikace – kompletní Solution obsahující obě verze aplikace vytvořený v prostředí Visual Studio 2013
68