Есть ли уникальный идентификатор устройства (UDID) или любой аналогичный идентификатор, который я могу прочитать на Windows Phone 8 (WP8), который не изменяется с аппаратными изменениями, переустановкой приложений и т.д.?
В старых версиях Windows Phone были такие ID: WP7: Состояние устройства для Windows Phone
WP7.1: DeviceStatus Class
Но с SDK 8.0 они больше не работают.
Почему я спрашиваю: Идея заключается в том, что пользователь получает бесплатные кредиты с первого запуска приложения, и я хочу избежать того, что пользователь просто переустанавливает приложение для получения новых бесплатных кредитов. Регистрация с помощью электронной почты или номера телефона может решить эту проблему, но если смогу, я не хочу, чтобы пользователи беспокоились при первом запуске с регистрацией.
---///--- Решение ----------
Я могу подтвердить, что DeviceExtendedProperties.GetValue( "DeviceUniqueId" ) все еще работает в WP 8.0. Немного смутился, когда я прочитал следующий текст:
В Windows Phone OS 7.0 этот класс использовался для запроса конкретных устройств свойства. В ОС Windows Phone 7.1 большинство свойств в DeviceExtendedProperties устарели, а новый DeviceStatus класс должен использоваться вместо этого. Однако, при необходимости, вы можете все еще используйте любые из ниже перечисленных свойств, которые не устарели.
MSDN: класс DeviceExtendedProperties
Я могу запустить следующий код, удалить приложение и переустановить его и получить тот же ID:
byte[] myDeviceID = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId");
string DeviceIDAsString = Convert.ToBase64String(myDeviceID);
MessageBox.Show(DeviceIDAsString);