Igor Kulman

Jednoznačná identifikácia zariadenia vo Windows 8

· Igor Kulman

Pri vývoji aplikácie pre Windows 8 môžete naraziť na potrebu jednoznačne identifikovať zariadenie, na ktorom aplikácia beží. Dôvodom môžu byť napríklad in-app purchases. 

V namespace Windows.System.Profile sa nachádza HardwareToken, ktorú získate zavolaním HardwareIdentification.GetPackageSpecificToken(null)

var packageSpecificToken = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);

Táto trieda má viacero zaujímavých položiek

var hardwareId = packageSpecificToken.Id;
var signature = packageSpecificToken.Signature;
var certificate = packageSpecificToken.Certificate;

Všetky tieto položky sú typu Windows.Storage.Stream.Ibuffer, teda volania do COMu. Na získanie hodnôt, ktoré je možné použiť v .NETe je potrebné použiť DataReader, ja získavam identifikátor zariadenia z hardwareId

var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);
var array = new byte[hardwareId.Length];
dataReader.ReadBytes(array);

Výsledné pole bajtov je možné previesť na UTF8 string

string uuid = System.Text.Encoding.UTF8.GetString(array, 0, array.Length);

Ja však radšej používam zreťazenie bajtov do stringu

var sb = new StringBuilder();
for (var i = 0; i < array.Length; i++)
{    
    sb.Append(array[i].ToString());
}

string uuid = sb.ToString();

Ako jednoznačne zistiť identitu používateľa sa mi zatiaľ nepodarilo.