在Windows Phone 8(WP8)上,是否存在任何不会因硬件更改、应用重新安装等而改变的唯一设备ID(UDID)或任何类似的ID可以读取?
在旧版本的Windows Phone中有这样的ID: WP7:Windows Phone的设备状态
WP7.1:DeviceStatus 类
但它们在SDK 8.0中不再起作用。
为什么我要询问: 我的想法是,用户在第一次启动应用程序时可以获得一些免费积分,我想避免用户只需重新安装应用程序即可获取新的免费积分。电子邮件或电话号码注册可以解决此问题,但如果可能,我不想在第一次启动时打扰用户进行注册。
---///---解决方案----------
我可以确认在WP 8.0中,DeviceExtendedProperties.GetValue("DeviceUniqueId") 仍然有效。当我阅读以下文本时感到有点困惑:
在Windows Phone OS 7.0中,使用此类查询特定于设备的属性。在Windows Phone OS 7.1中,DeviceExtendedProperties中的大多数属性已被弃用,并且应改用新的DeviceStatus类。但是,在适当的情况下,仍然可以使用以下未弃用的任何属性。
MSDN:DeviceExtendedProperties 类
我可以运行以下代码,删除应用程序并重新安装它,并获得相同的ID:
byte[] myDeviceID = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId");
string DeviceIDAsString = Convert.ToBase64String(myDeviceID);
MessageBox.Show(DeviceIDAsString);