Стабильный уникальный идентификатор для Xamarin Android

#android #xamarin #serial-number #imei #unique-id

#Android #xamarin #серийный номер #imei #уникальный идентификатор

Вопрос:

Я разрабатываю приложение для Android с использованием xamarin forms (в будущем, возможно, будет разработано приложение uwp, а не приложение для ios).

Я пробовал некоторые библиотеки, такие как

https://github.com/jamesmontemagno/DeviceInfoPlugin

В библиотеке свойство с именем Id на самом деле является Build.Серийный номер, и для этого есть примечание

Идентификатор Этот идентификатор не следует использовать в качестве стабильного идентификатора, поскольку каждый поставщик на Android может устанавливать или не устанавливать для него другое значение, а на iOS оно изменяется при удалении приложений.

и я попробовал метод GenerateAppId из той же библиотеки, но он генерирует разные идентификационные номера для каждого вызова.

После этого я попытался https://www.nuget.org/packages/Acr.DeviceInfo / и DeviceID также является Build.Последовательный

Как я понимаю, этот идентификатор может измениться. Итак, мне нужен действительно стабильный уникальный идентификатор от устройства, и я смогу сгенерировать такой же уникальный идентификатор с того же устройства (я не хочу его сохранять, поэтому я получу число с помощью определенного вычисления)

Я использовал

 Android.Provider.Settings.Secure
.GetString(context.ContentResolver, Android.Provider.Settings.Secure.AndroidId);
  

и Android.OS.Build.Serial

Я получаю два разных номера, но не уверен, что один из них стабилен.

Есть ли способ получить доступ к действительно IMEI или серийному номеру, или к обоим, или к чему-то уникальному (я предпочитаю, чтобы для этого не требовалось никакого разрешения, но если мне нужно, тогда все в порядке)

Ответ №1:

Идентификатор Android, который предлагает @Ialit Maheshwari, на самом деле не является IMEI. Вы можете использовать диспетчер телефонии Android для запроса IMEI, но тогда вам также потребуется разрешение «READ_PHONE_STATE», которое пользователи могут расценить как очень навязчивое (им придется согласиться с чем-то вроде «Разрешить приложению совершать телефонные звонки и управлять ими»).

В конечном счете, я бы также предложил использовать Android ID. Для моих собственных целей идентификации пользователей это работает нормально.

Редактировать

Здесь приведена информация о том, как получить IMEI как на Android, так и на iOS. Однако в случае iOS даже невозможно отправлять приложения в App Store, если вы получаете доступ к IMEI.

Комментарии:

1. IMEI больше не доступен разработчикам.

Ответ №2:

Вы можете получить форму номера IMEI устройства ниже кода Settings.Secure.GetString(Forms.Context.ContentResolver, Settings.Secure.AndroidId)