2014-04-27 17 views
27

Cách lấy id duy nhất của thiết bị trong Windows Phone 8.1? Cách cũ sử dụng DeviceExtendedProperties.GetValue("DeviceUniqueId") không hoạt động đối với ứng dụng Windows Universal.Thiết bị ID duy nhất trong Windows Phone 8.1

+0

Bất kỳ ví dụ nào? Tôi cũng đang đặt câu hỏi này ở đây: http://stackoverflow.com/questions/36004003/windows-phone-device-unique-id –

Trả lời

23

Lưu ý rằng khi bạn viết ứng dụng toàn cầu, nó có thể được cài đặt không chỉ trên điện thoại. Mặc dù cấu hình phần cứng kỹ thuật trên điện thoại là như nhau, trên các thiết bị khác, nó có thể thay đổi và do đó ID của nó. Đó là tôi nghĩ rằng không có phương pháp phổ biến như vậy để có được ID. (thông tin thêm bạn có thể tìm thấy also here).

Bạn có thể có một cái nhìn tại HardwareIdentification class và phương pháp của nó GetPackageSpecificToken:

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

Ngoài ra còn có một Guidance on using the App Specific Hardware ID (ASHWID) to implement per-device app logic.

+2

Nếu bạn muốn sử dụng nó, bạn phải nhớ rằng Id này sẽ thay đổi khi bạn thay đổi giấy chứng nhận ký ứng dụng – Johniak

+0

@Johniak Cảm ơn bạn đã poniting ra. – Romasz

+0

@Romasz 'HardwareIdentification.GetPackageSpecificToken' phụ thuộc vào id/tên gói. Có bất kỳ ID nào khác xuất hiện giống nhau cho tất cả các ứng dụng được cài đặt trên cùng thiết bị không? –

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; 
} 

Hy vọng trợ giúp này!

+0

Vì sao MD5? Tại sao không phải bất kỳ thuật toán khác ?? – Apoorva

+9

Tôi sẽ thay thế "MD5" thành [HashAlgorithmNames.Md5] (http://msdn.microsoft.com/en-us/library/windows.security.cryptography.core.hashalgorithmnames.md5.aspx). –

+0

Bạn có thể thay thế CryptographicBuffer.EncodeToHexString bằng Convert.ToBase64String, nó sẽ tạo chuỗi ngắn hơn nhưng vẫn đọc được. – Grigory

Các vấn đề liên quan