Universal Apps

Vývoj aplikací pro obě platformy Windows (tedy Windows Phone a Windows Store) spočíval ve vytvoření oddělených aplikací s omezenou možností sdílet zdrojový kód. S tím jak se běhové prostředí přibližuje, tato nutnost postupně odpadá. S příchodem Windows Phone 8.1 a Windows 8.1 přibyla možnost tvořit univerzální aplikace v rámci jednoho projektu.

Windows Phone 8.1 používá stejnou běhovou vrstvu Windows Runtime jako Windows 8.1. V praxi to znamená, že aplikace mohou sdílet až 90 % zdrojového kódu a liší se pouze uživatelským rozhraním a způsobem ovládání (mobilní telefony mají menší rozlišení a typicky se ovládají na výšku, pro zařízení Windows 8.1 je základní režim na šířku).

Předpoklady

Pro vývoj univerzálních aplikací je kromě Windows 8.1 potřeba použít Visual Studio 2013 Update 2. Jeho součástí je také nástroj pro designéry Blend for Visual Studio 2013. K testování je nejvhodnější použít skutečná zařízení, nicméně Visual Studio je vybaveno emulátory obou platforem (včetně možnosti měnit orientaci, lokaci apod.).

Způsob vývoje

Universal Diagram

Universal Apps jsou postaveny na sdílených zdrojových kódech. Pokud by se měla nějaká část aplikace chovat jinak na různých platformách, tak tuto část kódu vložíte buď do projektu pro danou platformu, nebo sdílený kód rozdělíte pomocí podmíněného překladu.

Projekt Universal App je rozdělen na tři části: Shared, která je společná, Windows 8.1, která obsahuje kód specifický pro Windows, a Windows Phone 8.1, která obsahuje kód specifický pro mobilní systém.

#if WINDOWS_PHONE_APP

   Windows.Phone.UI.Input.HardwareButtons.BackPressed += this.HardwareButtons_BackPressed;

#endif

Uživatelské rozhraní

Na rozdíl od Portable Class Libraries můžete ve sdílené části aplikace sdílet i uživatelské rozhraní. Nezapomeňte však, že každá platforma se ovládá trochu jinak a tyto specifika byste měli dodržovat.

Sdílení nastavení mezi platformami

Jestliže si uživatel nainstaluje aplikaci jak na svůj počítač s Windows 8.1, tak na mobilní telefon s Windows Phone 8.1, tak se může nastavení sdílet. Obě platformy nyní podporují Roaming Settings a Roaming Folder. Aby to fungovalo, obě aplikace musejí mít stejný Package Family Name (PFN).

Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;

roamingSettings.Values["userName"] = "user";

Data se sdílí přes OneDrive a jejich objem se nezapočítává do kvóty uživatele.

Umístění aplikace do Store

platformy, generuje projekt Universal App stále dva balíčky - jeden pro Windows Store a druhý pro Windows Phone Store. Aplikace je však možné spolu asociovat, což znamená, že jakmile si ji uživatel zakoupí v jednom obchodě (například na mobilu), bude ji mít automaticky zdarma dostupnou i na druhém (třeba na tabletu).

Tato možnost není omezena pouze na Universal Apps, ale funguje i pro aplikace vytvářené zvlášť.