2014-04-27 12 views
27

Wie erhalten Sie die eindeutige ID des Geräts in Windows Phone 8.1? Die alte Art der Verwendung von DeviceExtendedProperties.GetValue("DeviceUniqueId") funktioniert nicht für Windows Universal App.Gerät eindeutige ID in Windows Phone 8.1

+0

Alle Beispiele? Ich stelle diese Frage auch hier: http://stackoverflow.com/questions/36004003/windows-phone-device-unique-id –

Antwort

23

Beachten Sie, dass wenn Sie Universal App schreiben, kann es nicht nur auf dem Telefon installiert werden. Während am Telefon technisch die Hardwarekonfiguration gleich ist, kann sich auf anderen Geräten auch deren ID ändern. Ich denke, es gibt keine solche universelle Methode, um ID zu bekommen. (mehr Informationen finden Sie also here).

Sie können einen Blick auf HardwareIdentification class haben und seine Methode GetPackageSpecificToken:

HardwareToken myToken = HardwareIdentification.GetPackageSpecificToken(null); 
IBuffer hardwareId = myToken.Id; 

Es gibt auch eine Guidance on using the App Specific Hardware ID (ASHWID) to implement per-device app logic.

+2

Wenn Sie es verwenden möchten, müssen Sie daran denken, dass diese ID ändern wird, wenn Sie ändere das App-Signierzertifikat – Johniak

+0

@Johniak Danke, dass du das herausgefunden hast. – Romasz

+0

@Romasz 'HardwareIdentification.GetPackageSpecificToken' ist abhängig von Paket ID/Name. Gibt es eine andere ID, die für alle auf demselben Gerät installierten Apps gleich aussieht? –

31
private string GetDeviceID() 
{ 
    HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null); 
    IBuffer hardwareId = token.Id; 

    HashAlgorithmProvider hasher = HashAlgorithmProvider.OpenAlgorithm("MD5"); 
    IBuffer hashed = hasher.HashData(hardwareId); 

    string hashedString = CryptographicBuffer.EncodeToHexString(hashed); 
    return hashedString; 
} 

Hoffe diese Hilfe!

+0

Warum MD5 obwohl? Warum nicht irgendeinen anderen Algorithmus? – Apoorva

+9

Ich würde "MD5" zu [HashAlgorithmNames.Md5] (http://msdn.microsoft.com/en-us/library/windows.security.cryptography.core.hashalgorithmames.md5.aspx) ersetzen. –

+0

Sie können CryptographicBuffer.EncodeToHexString durch Convert.ToBase64String ersetzen, es wird eine kürzere, aber dennoch lesbare Zeichenfolge erzeugen. – Grigory