Android_ID в Android O

Мы используем код ниже, чтобы получить уникальный идентификатор:

String id = Settings.Secure.getString(mContext.getContentResolver(),
                 Settings.Secure.ANDROID_ID);

В руководстве по изменениям Android O мы видим следующие пункты:

Android O вносит следующие изменения в платформу, связанные с конфиденциальностью. https://developer.android.com/preview/behavior-changes.html

The platform now handles identifiers differently.
Values of ANDROID_ID are now scoped per-app instead of per-user. The value of ANDROID_ID is unique for each combination of application package name, signature, user, and device. Two apps running on the same device no longer see the same Android ID, and so cannot correlate.

The value of ANDROID_ID does not change on package uninstall or reinstall, as long as the package name and signing key are the same.

The value of ANDROID_ID does not change if the package signing key changes due to an update.

For apps that were installed prior to the OTA, the value of ANDROID_ID remains the same unless uninstalled and then reinstalled.

If you wish to continue using Android ID for device-bound free trial protection, you can do so. Make sure that the package name and signature match.

For a simple, standard system to monetize apps, use Advertising ID. Advertising ID is a unique, user-resettable ID for advertising, provided by Google Play services.

Мое понимание вышеизложенного состоит в том, что теперь Android_ID в будущем будет привязан к приложению, а не к устройству. Однако я запутался в следующем пункте:

Для приложений, которые были установлены до OTA, значение ANDROID_ID остается тем же самым, если не будет удалено, а затем повторно установлено. Если вы хотите продолжить использовать Android ID для бесплатной пробной защиты с привязкой к устройству, вы можете сделать это. Убедитесь, что имя пакета и подпись совпадают.

1) Что это значит? Если мое приложение не будет переустановлено, оно по-прежнему будет иметь устаревший android_id, даже если мы отправим обновление?

2) Если вы хотите продолжить использовать Android ID для бесплатной пробной защиты, связанной с устройством, вы можете сделать это. Убедитесь, что имя пакета и подпись совпадают. Что это значит?

2 ответа

Решение

1) Представьте, что ваше приложение имеет идентификатор abc при установке на устройстве N Теперь, когда устройство будет обновлено до O, идентификатор устройства, возвращенный вам, будет продолжать abc, Однако, если пользователь удаляет и переустанавливает приложение после обновления до O, ANDROID_ID изменится на другое значение.

С другой стороны, если приложение было установлено на устройстве O, а затем удалено и повторно установлено ANDROID_ID останется прежним.

2) Это означает, что до тех пор, пока имя пакета и подпись остаются неизменными, значение ANDROID_ID останется прежним. Это также останется прежним, если ваше приложение будет обновлено на устройстве O и подпись изменится.

По сути, Android теперь будет использовать имя / подпись пакета для генерации уникального идентификатора на O.

Документация Android не содержит явных значений ANDROID_ID для приложений с разными именами пакетов, но имеет общее значение идентификатора пользователя и подписано тем же ключом. Тесты на Nexus 5, Android O Beta 3 показывают, что значение Android ID для 2 приложений одинаково в этом случае.

Другие вопросы по тегам