Navigacija za Windows 8.1 in Windows Phone 8.1 v MVVM

Pred kratkim sem spisal kodo za navigacijo med stranmi kar iz view modelov, prenašanje parametrov med stranmi, popolnoma ločen od UI-ja in na prenosljiv način. Kot za primer sem objavil izvirno kodo, ki jo lahko uporabite tudi v svojih lastnih projektih ali pa jo modificirate po želji. Pozneje bom mogoče napisal razlago, kako si lahko pišete svoj MVVM navigacijski sistem.

Koda je v celoti komentirana, zato bom tukaj napisal le korake, kako uporabiti knjižnico. Potrebovali boste Visual Studio 2013 Update 2. Windows Phone 8.0 trenutno ni podprt, ampak že delam tudi na tem.

Knjižnica Zenicy.NavigationUtility vsebuje vse kar potrebujete za MVVM navigacijo za Windows in Windows Phone 8.1 in je neodvisna od kakršne koli NuGet knjižnice. Če vas zanima implementacija, si poglejte WindowsNavigationService.

Namestitev:

Read the rest of this entry »

Windows Phone Store App ali Windows Phone Silverlight 8.1 App?

Dva tedna nazaj je Microsoft najavil Windows Phone 8.1 OS in s tem je tudi izdal nova razvojna orodja. V razvojnih orodij smo dobili možnosti razvijati za Windows Phone Store App in Silverlight 8.1 app. Windows Phone Store Apps uporablja enako XAML platformo kot Windows Store Apps (WP 8.1 WinRT) in Silverlight 8.1 (WP SL 8.1) uporablja XAML platformo iz Silverlight 8.0 s novimi WinRT API-ji. Pred začetkom razvoja je potrebno izbrati, kateri tip projekta želite imeti, saj XAML-a sta različna in portanje iz enega v drugega je težje. Obe platformi imata svoje prednosti in slabosti in trenutno se bom osredotočil na Silverlight 8.1.

WP Silverlight 7.x in 8.0 lahko posodobite v SL 8.1 in s tem omogoča enostavno migracijo na nov OS brez večjih težav.

image

Read the rest of this entry »

Moji viri učenja za razvoj v Windows 8 in Windows Phone 8

Tukaj je naštetih nekaj najbolj pomembnih virov znanja, ki jih jaz uporabljam za razvoj Windows 8 in Windows Phone 8.

Microsoft Virtual Academy

Za večino Microsoft platform priporočam portal Microsoft Virtual Academy, kjer imate veliko video vsebin lepo urejene po temah in težavnostih. Ta predavanja so narejena tako, da se hitro naučite osnove tehnologije in hkrati dobite nasvete od ljudi, ki že uporabljajo te tehnologije na svojih projektih. Nekateri seti predavanj so tudi vezani za MCT izpite in so bili moj glavni vir informacij za MCSD izpite za Windows Store using C#.
Read the rest of this entry »

Pridobivanje informacij o Windows 8 napravi

Pridobivanje informacij o Windows 8 napravi je težje in bolj nepredvidljivo kot o Windows Phone 8 napravi (več v Pridobivanje informacij o Windows Phone napravi). Za večino informacij ne vemo, če so na voljo oz. kaj predstavljajo. Unikatni strojni ID se recimo lahko spremeni ob dodajanju ali odstranjevanju dodatnih naprav, nameščanje gonilnikov ali nameščanja orodij za virtualizacijo.

public static string GetHardwareUniqueID()
{
    var token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);
    IBuffer id = token.Id;
    byte[] bytes;

    using (var reader = DataReader.FromBuffer(id))
    {
        bytes = new byte[id.Length];
        reader.ReadBytes(bytes);
    }

    return BitConverter.ToString(bytes);
}

Priporočljiv način pridobivanja unikatnega ID-ja je generiranja GUID-a, vendar s to metodo na žalost ne morate zanesljivo ugotoviti ali je aplikacija že bila nameščena na to napravo. Ta ID tudi ni dostopen drugim aplikacijam.

public static string GetDeviceUniqueID()
{
    string key = "deviceID";
    var storage = ApplicationData.Current.LocalSettings.Values;
    if (storage.ContainsKey(key) && storage[key] is string)
    {
        return (string)storage[key];
    }

    string value = Guid.NewGuid().ToString();
    storage[key] = value;

    return value;
}

Z malo sprememb lahko dobite unikatni ID uporabnika. Namesto, da shranite GUID v lokalne nastavitve, jih shranite v roaming nastavitve. Ta podatek se prenaša med napravami, ampak uporabnik ima možnost odstraniti te podatke ob odstranjevanju aplikacije.

public static string GetUserUniqueID()
{
    string key = "userID";
    var storage = ApplicationData.Current.RoamingSettings.Values;
    if (storage.ContainsKey(key) && storage[key] is string)
    {
        return (string)storage[key];
    }

    string value = Guid.NewGuid().ToString();
    storage[key] = value;

    return value;
}

Zgornji dve kodi sta združljivi z Windows Phone 8 API-ji in jih lahko uporabite brez sprememb.

Za več informacij o napravi kot je npr. proizvajalec naprave, arhitektura procesorja in podobno, najdete tukaj:

http://attackpattern.com/2013/03/device-information-in-windows-8-store-apps/