如何获取 Windows Phone 8.1 的设备唯一 ID?

Posted

技术标签:

【中文标题】如何获取 Windows Phone 8.1 的设备唯一 ID?【英文标题】:How can I get Device Unique Id for windows phone 8.1? 【发布时间】:2015-11-15 07:44:06 【问题描述】:

我想要后端服务 (ws) 的唯一设备 ID,因为我找到了以下参考

  private string GetDeviceId()
    
        var token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);
        var hardwareId = token.Id;
        var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);

        byte[] bytes = new byte[hardwareId.Length];
        dataReader.ReadBytes(bytes);

        return BitConverter.ToString(bytes).Replace("-", "");
    //Note: This function may throw an exception. 

但是,我无法理解代码,每次我获得相同的设备 ID(64 个字符串)时,我想知道它是否适用? 我也找不到 MSDN 的任何参考资料

谢谢

【问题讨论】:

【参考方案1】:

这可能会有所帮助:

private string GetDeviceID()

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

    HashAlgorithmProvider hasher = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5);
    IBuffer hashed = hasher.HashData(hardwareId);

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

有关文档,请查看 HardwareIdentification 类中的 GetPackageSpecificToken 方法。

【讨论】:

你可以使用HashAlgorithmNames.Md5代替硬编码的"MD5" @KristianVukusic 谢谢。我已经更新了我的答案。 一旦您更改硬件配置文件(拔下 BT 或其他东西),此 PackageSpecificToken 就会更改。我不会依赖它。也许只是为了广告目的。 无论如何,如果你使用它,你应该处理它的“漂移”:msdn.microsoft.com/en-US/library/windows/apps/…

以上是关于如何获取 Windows Phone 8.1 的设备唯一 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 Windows Phone 8.1 的设备唯一 ID?

如何在 Windows Phone 8.1 中获取当前位置的当前货币代码

如何在 Windows Phone 8.1 上从数据库中获取图像并将其显示为字节数组

在 Windows Phone 8.1 上获取给定 CivicAddress 的坐标/地理点

Windows phone 8.1 获取地图角落地理点

在 Windows Phone 8.1 XAML 中获取设备屏幕分辨率