是否有任何唯一的设备 ID (UDID) 或任何类似的 ID 可以在 Windows Phone 8 (WP8) 上读出,不会随着硬件更改、应用程序重新安装等而改变?
在较旧的 Windows Phone 版本中,有这样的 ID:WP7:Windows Phone 的设备状态
WP7.1:设备状态类
但它们不再适用于 SDK 8.0。
为什么我问: 这个想法是用户在第一次启动应用程序时获得一些免费积分,我想避免用户只是重新安装应用程序以获得新的免费积分。使用电子邮件或电话号码注册可以解决这个问题,但如果可以的话,我不想在第一次注册时打扰用户。
- -/// - -解决方案 - - - - -
我可以确认 DeviceExtendedProperties.GetValue("DeviceUniqueId") 在 WP 8.0 中仍然有效。当我阅读以下文字时有点困惑:
在 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);