【发布时间】:2012-12-08 03:48:34
【问题描述】:
是否有任何唯一的设备 ID (UDID) 或任何我可以在 Windows Phone 8 (WP8) 上读出的不会随着硬件更改、应用重新安装等而改变的类似 ID?
在较旧的 Windows Phone 版本中,有这样的 ID: WP7:Device Status for Windows Phone
WP7.1:DeviceStatus Class
但它们不再适用于 SDK 8.0。
我为什么要问: 这个想法是用户在第一次启动应用程序时获得一些免费积分,我想避免用户只是重新安装应用程序以获得新的免费积分。使用电子邮件或电话号码注册可以解决这个问题,但如果可以的话,我不想在第一次注册时打扰用户。
---///---解决方案---------
我可以确认 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);
【问题讨论】:
-
据我了解,移动操作系统不提供 UDID 的压力很大,因为它具有跟踪用户的能力。因此,注册选项可能是一个更好的主意。否则,在未来,UDID 将不再可用。 This has already happened in iOS.
-
我知道。苹果也有同样的问题,他们通过使用vendor ID 来“缓解”这个问题。所以我认为微软做了类似的事情?没有?
-
老实说,我不确定Windows Phone 8,因为我没有针对它进行开发。但原则上,我们应该尽量不要使用静态标识符,除非它们存储在服务器上。欧盟一直在谈论有关避免在移动设备上跟踪用户的立法。
标签: c# windows-phone-7 windows-phone-8