Получить уникальный ANDROID_ID на флаттере возможно?

Я хотел бы получить уникальный идентификатор устройства на Android с помощью Flutter. Я пробовал этот плагин device_info, но он не возвращает ANDROID_ID, который я получаю в java Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);

как я могу получить тот же идентификатор?


person Polivicio    schedule 09.05.2018    source источник


Ответы (2)


В этом случае может быть проще использовать код для конкретной платформы и настройку канала платформы Flutter.

Затем вы можете использовать свой код Java, указанный в вашем вопросе, и при необходимости передать идентификатор Android в ваше приложение Flutter через канал платформы.

См. раздел Написание пользовательского кода для конкретной платформы с использованием каналов платформы.

person YodaScholtz    schedule 09.05.2018
comment
Спасибо, работает нормально! У меня были проблемы, потому что я не установил JDK. - person Polivicio; 10.05.2018

Вы можете делать то, что делали, но это не надежно и не гарантировано. Пожалуйста, прочитайте: https://developer.android.com/training/articles/user-data-ids

для лучшей обработки уникальных идентификаторов. Конечно, вы можете получить идентификатор телефонной сети, но что, если у этого устройства нет оператора связи. Вы можете получить идентификатор устройства, но что, если он вернет null для этого производителя. Вы можете получить идентификатор рекламодателя, и это часто рекомендуется, но он МОЖЕТ ИЗМЕНИТЬСЯ, он вряд ли изменится, но если они сделают сброс до заводских настроек или что-то в этом роде, он изменится.

Поэтому лучше всего создать свои собственные уникальные идентификаторы и сохранить их локально в приложении либо в реализации БД, либо в SharedPreferences.

Итак, чтобы ответить на ваш вопрос, если у вас есть существующая аудитория, для которой вы использовали неправильный, плохой способ использования уникальных идентификаторов, вам следует создать фабрику идентификаторов с логикой if/else, чтобы исправить это.

If (first time accessing an ID for this installed application)
   //createOne and store it
else if(ID already exists and matches ANDROID_SECURE_ID method)
   //get it the old way, 
   //create new one, and update your access to APIs or DB with new associated ID so that you never hit this code path again
else
   //use correct ID implementation that you created

Вы также можете так же легко выполнить однократную проверку в своем приложении onCreate, чтобы исправить любого с неправильным идентификатором, а затем установить флаг, который вы исправили, чтобы вы не исправили его снова в sharedpref.

person Sam    schedule 09.05.2018