TOPlist

Podrobný přehled novinek ve Windows Phone 8.1 pro vývojáře (1. díl)

V dnešním podrobném článku se na Windows Phone 8.1 podíváme z pohledu vývojáře a představíme si všechny novinky, které nová verze mobilního systému nabízí.

2. dubna 2014 byl oficiálně na Build konferenci představen systém Windows Phone 8.1. Kromě velkého množství vylepšení pro uživatele, které jsou shrnuté zde, obsahuje Windows Phone 8.1 i velké spousty novinek pro vývojáře. V tomto shrnujícím článku se bez větších detailů zaměřím na hlavní novinky a změny, které tato nová verze pro vývojáře přináší. 


Odkaz pro stažení SDK & dokumentace

Základy pro vývoj WP8.1 aplikací

  • Windows 8.1 RTM x64 Pro/Enterprise a procesor podporující SLAT instrukce
  • Visual Studio 2013 RTM Pro nebo vyšší edici, popř. Express edici pro WP, která je také dostupná
  • Visual Studio Update 2 zahrnující i WP8.1 SDK, nyní dostupný jako Release Candidate 

Samotné VS2013 již nativně obsahuje mimo jiné nástroje pro vývoj WP8 a Windows 8.1 aplikací, Update 2 přidává možnost vývoje těchto nových projektů:

C#:

  • Windows Phone Silverlight 8.1 „legacy“aplikace – WP8.1 aplikace vycházející z původního WP8 modelu
  • Windows Phone 8.1 aplikace – nový model, defakto klon Windows 8.1 C# aplikačního modelu, jen pro telefony
  • Univerzální aplikace pro Windows 8.1 a Windows Phone 8.1 v C# – nový model pro současný vývoj aplikace pro Windows i telefony s možností sdílet přes 95% kódu

HTML5/JavaScript:

  • Windows Phone 8.1 HTML5/JavaScript aplikace – nový nativní model pro vývoj WP8.1 aplikací pomocí HTML a JavaScriptu, defakto klon Windows 8.1 HTML aplikačního modelu, jen pro telefony
  • Univerzální aplikace pro Windows 8.1 a Windows Phone 8.1 v HTML5/JavaScriptu – nový model pro současný vývoj aplikací pro Windows i telefony s možností sdílet přes 95% kódu

C++:

  • Windows Phone 8.1 C++ aplikace – nový model, defakto klon Windows 8.1 C++ aplikačního modelu, jen pro telefony
  • Windows Phone 8.1 C++ DirectX aplikace a Windows Phone 8.1 C++ DirectX+XAML aplikace
  • Univerzální aplikace pro Windows 8.1 a Windows Phone 8.1 v C++ – nový model pro současný vývoj aplikace pro Windows i telefony s možností sdílet přes 95% kódu 

Rozdíl mezi Silverlight 8.1 a Windows Phone 8.1

Jaké jsou hlavní rozdíly mezi Silverlight 8.1 a Windows Phone 8.1 typem projektu bude popsáno v dalším článku tohoto miniseriálu.

Ve zkratce Silverlight 8.1 = WP8 + většina Windows Runtime z Windows 8.1 + XAP jako formát aplikace. Jedná se o „legacy“ typ aplikace, který pravděpodobně již v dalších verzích Windows Phone nebude podporován.

Windows Phone 8.1 = Windows 8.1 aplikace zkompilovatelná pro telefon bez některého API, které na telefonu nedává smysl + API specifické jen pro telefony. Důležitá informace je zde to, že tento model neobsahuje žádné předchozí Silverlight a XNA API, které jsme byli zvyklí na Windows Phone používat! Tento typ aplikace také používá nový soubor manifestu a formát aplikace appx, oboje známé z Windows 8.1. 

Přehled novinek u nové platformy Windows Phone 8.1

Windows Phone 8.1 přináší velké změny do Windows Phone ekosystému. Poprvé od Windows Phone 7 uvádí Microsoft mobilní platformu, která není stavěna nad Silverlightem, ale plně nad Windows Runtime. S Windows 8.1 aplikacemi sdílí WP8.1 mnoho – cca 95% kódu lze sdílet mezi oběma platformami bez nutnosti jakýchkoliv změn. Stejný je i model životního procesu aplikace, XAML UI Framework, sada nástrojů pro vývoj a testování, způsob buildování a balíkování aplikace, stejně tak i výsledný Appx formát, který se publikuje na již společný Store.

Oblasti konvergence s Windows 8.1

Aplikační model a životní cyklus aplikace – WP8.1 aplikace využívá stejný životní cyklus, jako Windows 8.1 (spuštění, suspendování, aktivace). Lze tak využít veškerý kód pro správu stavu aplikace u obou platforem. Stejně tak správa úloh na pozadí je stejná a lze jí snadno převzít.

Manifest, buildování a deploymentsoubor s informacemi o aplikaci se jmenuje stejně a má podobnou strukturu (Package.appxmanifest). Výsledný balík pro deplyment je také stejného formátu – zip soubor s příponou appx.

XAML – WP8 používá pro tvorbu UI verzi XAMLu, která vychází ze Silverlightu a která je jiná, než ta ve Windows 8.1. WP8.1 aplikace již ale používají ten samý model a lze tak mnohdy sdílet vlastní UI 1:1 mezi Windows a telefonní verzí, a to i v Portable Class Libraries

Nové možnosti ve Windows Phone 8.1 (výběr)

Geofencing – WP8.1 obsahuje nové geolokační API pro upozornění na základě změny polohy či opuštění či navštívení určité oblasti. Toto API lze také využít třeba pro zobrazení speciálních nabídek v určitých obchodech.

Přenosy na pozadí – WP8.1 obsahuje nové API pro stahování dat na pozadí Windows.Networking.BackgroundTransfer, které nahrazuje původní Background Transfer Service z WP8.

Úprava medií – WP8.1 obsahuje ve Windows.Media.Editing nové možnosti pro úpravy videa či hudby přímo na telefonu – zachytávání videa, ořezávání, skládání i použití více zvukových stop.

Notifikace – ve WP8.1 lze pomocí nového API přistupovat k novému Action Center a spravovat zde odeslané notifikace. Třídy pro přístup k notifikacím se nacházejí v namespace Windows.UI.Notifications. Dále také WP8.1 používá pro Push notifikace stejné Windows Push Notification Services (WNS) API jako Windows 8.1 a není tak třeba psát dva různé backendy pro telefony a Windows, jako tomu bylo u WP8.

Přehrávání hudby na pozadí – ve WP8.1 se pro přehrávání hudby na pozadí používá nová třída Windows.Media.Playback.BackgroundMediaPlayer, která nahrazuje původní API z WP8.

Microsoft Media Foundation – již WP8 přišlo s podporou DirectX aplikací. WP8.1 rozšiřuje možnosti DirectX o tyto novinky:

  • Direct2D APIs
  • DirectWrite APIs
  • Windows Imaging Component APIs
  • Runtime shader compilation and reflection
  • GPU access to YUV shaders
  • GPU performance counters
  • Graphics diagnostics support

Navíc jsou ve WP8.1 i značně rozšířené možnosti DirectX a XAMP interop.

Nahrávání obrazovky – WP8.1 umožňuje pomocí Windows.Media.Capture nahrávat za běhu aplikace obsah obrazovky jako video.

Automatizace UI – díky novému API pro automatizaci UI lze nyní mnohem snadněji napsat aplikaci spolupracující s předčítacími zařízeními a také implementovat testy UI prvků v aplikaci.

Ovládací prvky – WP8.1 využívá stejný UI stack jako Windows 8.1 aplikace a lze tak nyní používat stejné UI elementy napříč aplikacemi. Základní elementy jako Button, TextBlock, CheckBox a další lze použít u obou typů aplikací. Některé nové jako GridView, ListView a FlipView lze nyní nově použít i u WP8.1 aplikací. Některé dřívější čistě telefonní elementy byly nyní přejmenovány, jako např. Panorama -> Hub. Některé jako Pivot zůstaly dostupné jen pro telefon.

Vylepšení AppBaru – u WP8 byl dlouhodobý problém s tím, že prvky AppBaru nešlo snadno databindovat či lokalizovat. U WP8.1 lze nyní použít stejné CommandBar API známé z Windows 8.1 pro definování tlačítek i prvků menu.

Monetizace – došlo ke sjednocení již tak podobného API pro nákupy a in-app purchases. Velkou novinkou je nyní přítomnost třídy CurrentAppSimulator i u WP8.1 pro snadné testování nákupů.

NFC a proximity – byly rozšířené možnosti NFC API, u kterého lze nyní naformátovat prázdné NFC tagy, uzamknout či odemnout Tag i komunikovat se širší sadou NFC tagů.

Podpora externího displeje – ve Windows Phone 8.1 je nyní možné promítat obraz z aplikace na externí displej ať již přes kabel či bezdrátově pomocí Miracastu.

Správa data a úložišť

Windows.Storage API – WP8.1 plně implementuje Windows.Storage API až na pár specifických metod pro Streamový přístup k souborům. Ve WP8.1 lze také používat nové file pickery pro otevírání a ukládání souborů.

Roaming dat – WP8.1 podporuje roaming dat mezi zařízeními, ať již základních Settings, tak i souborů v RoamingFolder. Tento roaming dat navíc funguje i mezi Windows a telefonem, pokud je aplikace vytvořena pod stejným účtem a stejným jménem.

Share kontrakt – WP8.1 implementuje Share kontrakt podobný tomu, který je ve Windows 8.1 jen s několika omezeními na typy a veliksoti souborů.

Přístup na SD kartu – na rozdíl od WP8, kde bylo možné jen číst data z SD karty, u WP8.1 je možné již číst i zapisovat typy souborů, které má aplikace zaregistrované v manifestu, na SD kartu či jiné výměnné úložiště.

Nástroje pro vývoj v SDK

Emulátory Windows Phoneemulátory jsou dostupné v 6 variantách: WVGA 512MB 4“, WVGA 4“, WXGA 4“, 720p 4,7“, 1080p 5,5” a 1080p 6”.

  • novinkou u emulátorů jsou fyzická tlačítka na boku On, Volume Up and Down a Camera button
  • emulátor podporuje také nástroj pro simulaci multidotyků
  • emulátor také nyní umožňuje různé režimy pohybu po mapě a režimy přesnosti GPS.
  • simulátor rychlosti připojení k Internetu je také nyní součástí přímo emulátoru a ne již Dashboardu ve Visual Studiu, jak tomu bylo dříve.
  • novou zajímavou funkcí je i simulace SD karty, která je řešena odkazem na vybranou složku
  • v emulátoru lze také přímo testovat zasílání notifikací různých typů
  • v emulátorech lze také pomocí checkboxů označit, jaké senzory má emulátor hlásit jako přítomné – vhodné pro testování funkcionality aplikace na zařízeních bez očekávaných senzorů
  • jako asi nejzajímavější funkci lze ale považovat správu Checkpointů – lze uložit stav emulátoru v určitém stavu a později tento stav obnovit, ideální pro testování a reprodukci bugů

Windows Phone Developer Power Toolsnová sjednocená sada nástrojů pro testování validity aplikace, výkonu, paměťové náročnosti a také nahrávání historie výkonu aplikace pro pozdější analýzu

Blend pro Visual Studio – nástro Blend byl aktualizovaný pro podporu nových WP8.1 projektů, HTML WP projektů i univerzálních aplikací.

Developer Registration Tool, Application Deployment Tool, Isolated Storage Explorer – jsou tu i nyní a fungují tak, jak je známe z dřívějška

Nové .NET/BCL API u Windows Phone 8.1 aplikací:

  • Systém.Collections.Concurrent – kolekce pro souběžný přístup a snadnou implementaci problému konzument/producent
  • System.IO.Compression – ZipArchive, GZipStream
  • ParallelQuery, ParallelEnumerable
  • Systém.Numerics – BigInteger, Complex
  • Systém.Threading.Tasks – Parallel.For, Parallel.ForEach

API dostupná jak u WP8.1, tak i u Silverlight 8.1 aplikací

  • Accessibility API pro předčítání textu, vysoký kontrast a zvětšený text
  • Local storage, Temp storage a Roaming app data storage
  • Přístup souborového systému k Windows.Storage.KnownFolders
  • FileIO, PathIO, Compression, AccessCache – velmi užitečné filesystémové API
  • Storage pickers and providers
  • Share Contract v podobné podobě, co známe z Windows 8.1
  • Širší možnosti přístupu k SD kartám a úložištím – instalace aplikací (s možností zákazu), čtení, zápis
  • Push notifikace pomocí Windows Notification Service – 1:1 stejné API s Windows 8.1
  • Nové API pro Živé dlaždice a notifikace – 1:1 stejné API s Windows 8.1, jen ale bez 4. velké velikosti dlaždic
  • Mnohem mocnější Background Tasky
  • Background transfers API známé z Windows 8.1
  • HttpClient, AtomPub, Syndication – snadný přístup k RSS a Atom feedům
  • Credential locker – API pro uchování přihlašovacích údajů
  • Bluetooth LE, FRComm, Wi-Fi Direct
  • API na Emaily s přílohami – konečně J
  • Geofencing API – události závislé na poloze a vzdálenosti
  • Plnohodnotné CurrentApp a CurrentAppSimulator API pro testování in-app purchasů, jaké známe z Windows 8.1
  • Plná podpora Uri schémat pro přístup k souborům: ms-appdata a ms-appx
  • a nejen to… 

Závěrečné shrnutí

WP8.1 SDK přináší jednak nový „legacy“ model Silverlight 8.1 určený pro aktualizaci existujících aplikací, tak i nový Windows Phone 8.1 model, který je z velké části podobný Windows 8.1. Drtivá většina novinek v novém modelu Windows Phone 8.1 pochází s existujícího API Windows 8.1 aplikací. Navíc lze nyní vyvíjet i nově HTML5/JavaScript aplikace a také tzv. Univerzální aplikace, které usnadňují vývoj pro Windows i Phone, byť se stále nejedná fakticky o vývoj jedné aplikace, ale dvou.

Více informací o rozdílech mezi Windows Phone 8.1 a Silverlight 8.1, a možnosti vývoje Univerzálních aplikací, bude popsáno v dalších článcích tohoto seriálu, které budou následovat.

Autorem článku je Martin Suchan, Windows Phone vývojář ve společnosti Seznam.cz a čerstvý držitel titulu Microsoft MVP

Autor článku Martin Suchan
Martin Suchan

Kapitoly článku