是否有任何唯一的设备ID(UDID)或任何类似的ID,我可以在Windows Phone 8(WP8)上读取,不会随硬件更改,应用程序重新安装等而改变?
在较旧的Windows Phone版本中有这样的ID:WP7:Device Status for Windows Phone
WP7.1:DeviceStatus Class
但是它们不再适用于SDK 8.0 .
Why I ask: 想法是用户在第一次启动应用程序时获得一些免费信用,我想避免用户只是重新安装应用程序以获得新的免费信用 . 使用电子邮件或电话号码注册可以解决这个问题,但如果可以,我不希望在第一次注册时打扰用户 .
- -/// - -解 - - - - -
我可以确认DeviceExtendedProperties.GetValue(“DeviceUniqueId”)仍然可以在WP 8.0中运行 . 当我阅读以下文字时有点困惑:
在Windows Phone OS 7.0中,此类用于查询特定于设备的属性 . 在Windows Phone OS 7.1中,不推荐使用DeviceExtendedProperties中的大多数属性,而应使用新的DeviceStatus类 . 但是,在适当的情况下,您仍然可以使用以下任何未弃用的属性 .
MSDN:DeviceExtendedProperties Class
我可以运行以下代码,删除应用程序并重新安装它并获得相同的ID:
byte[] myDeviceID = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId");
string DeviceIDAsString = Convert.ToBase64String(myDeviceID);
MessageBox.Show(DeviceIDAsString);
9 回答
我还没有开始为Windows Phone 8开发,仍然在7,但你仍然应该能够使用原来的DeviceExtendedProperties类来撤回设备唯一ID .
我有这个问题,返回null值 . 然后记得它需要打开 .
在
WMAppManifest.xml
- >Capabilities
标签 - >开启ID_CAP_IDENTITY_DEVICE
这个DeviceUniqueId有一个扭曲 - 它只对一个发布者是唯一的 . 因此,它不是设备范围内的唯一标识符,而是一个发布商的唯一设备ID . 我们注意到,当我们处理一些客户项目时,我们尝试从不同的帐户识别相同的电话(客户在两个不同的帐户下发布) .
您可以通过DeviceExtendedProperties.GetValue(“DeviceUniqueId”)获取您自己的wp8设备ID以下是将deviceId作为字符串获取的简单方法
由于未在Windows Phone 8和Windows 8中提供DeviceUniqueId,微软试图避免用户跟踪,但是由于Dev社区的压力越来越大,他们又将其重新带回来 .
在Windows 8.1中,Microsoft引入了一个新的AdvertisingId API,并且还可能带来类似的ID来识别后续Windows Phone 8.1 / 9版本中的应用程序中的唯一用户 .
我用过这个:
但关键是检查WMAppManifest中的ID_CAP_IDENTITY_DEVICE,否则会引发错误 .
我发现这是一个新的HostInformation.PublisherHostId属性更多信息在http://msdn.microsoft.com/en-us/library/windowsphone/develop/windows.phone.system.analytics.hostinformation.publisherhostid.aspx ..
我用过这个用于windows phone的独特设备ID .
上面的答案适用于Windows Phone 7和8 Silverlight . 但是,它们不适用于Windows Phone RT(通用)或商店应用程序,因为SDK没有此dll库(Microsoft.Phone) .
这是您在Windows Phone 8.1 RT(通用/商店应用程序)上获取设备ID和名称(以及可能的其他信息)的方式 .
我发布了一篇博客文章here解释了这些差异,有关在Windows RT上阅读设备信息的更多细节可以找到here