Получите сбрасываемый пользователем рекламный идентификатор , входящий в состав Android Jetpack .
Для защиты конфиденциальности пользователей рекомендуется использовать во всех приложениях Android идентификаторы, сбрасываемые пользователем. Одним из таких идентификаторов является рекламный идентификатор , который однозначно идентифицирует конкретного пользователя для рекламных целей, например, для персонализации рекламы.
Для поддержки стандартизированного решения для отслеживания рекламы на всех устройствах, на которых работает ваше приложение, вы можете использовать библиотеку Advertising ID . Эта библиотека, доступная на устройствах под управлением Android 4.0 (уровень API 14) и выше, определяет интерфейс для взаимодействия с поставщиками рекламы на системном уровне. Этот интерфейс позволяет вашему приложению получать согласованные значения Advertising ID.
Поставщик рекламы, входящий в библиотеку идентификаторов рекламы, также определяет стандартное намерение для открытия экрана настроек, реализуемого поставщиком рекламы. Этот экран настроек позволяет пользователю сбросить свой идентификатор рекламы и отказаться от персонализации рекламы.
В этом руководстве объясняется, как использовать клиентский модуль библиотеки рекламных идентификаторов для получения единого рекламного идентификатора для каждого пользователя устройства. Далее представлен обзор архитектуры библиотеки.
Настройте свое клиентское приложение
Взаимодействуя с клиентским модулем библиотеки рекламных идентификаторов, ваше приложение может получить согласованный рекламный идентификатор, представляющий пользователя, взаимодействующего с приложением.
Рекламный идентификатор представлен с использованием версии 3 формата универсального уникального идентификатора (UUID) или эквивалентного 128-битного формата:
38400000-8cf0-11bd-b23e-10b96e40000d
Библиотека идентификаторов рекламы нормализует возвращаемое значение по мере необходимости для предоставления идентификаторов с использованием этого формата.
Чтобы получить сбрасываемый пользователем рекламный идентификатор для вашего приложения, выполните следующие действия:
Проверьте доступность поставщика рекламы, вызвав метод
AdvertisingIdClient.isAdvertisingIdProviderAvailable(). Если этот метод возвращаетfalse, ваше приложение должно использовать другие средства для выполнения всех необходимых сценариев отслеживания рекламы.Получите данные идентификатора объявления, включая рекламный идентификатор, вызвав метод
AdvertisingIdClient.getAdvertisingIdInfo(). Библиотека Advertising ID выполняет этот метод в рабочем потоке и использует 10-секундный тайм-аут соединения.
В следующем фрагменте кода показано, как получить рекламный идентификатор вместе с другой информацией от поставщика рекламы:
приложение/build.gradle
Круто
dependencies { implementation 'androidx.ads:ads-identifier:1.0.0-alpha01' // Used for the calls to addCallback() in the snippets on this page. implementation 'com.google.guava:guava:28.0-android' }
Котлин
dependencies { implementation("androidx.ads:ads-identifier:1.0.0-alpha01") // Used for the calls to addCallback() in the snippets on this page. implementation("com.google.guava:guava:28.0-android") }
MyAdIdClient
Котлин
// Used for the call to addCallback() within this snippet.
import com.google.common.util.concurrent.Futures.addCallback
private fun determineAdvertisingInfo() {
if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) {
val advertisingIdInfoListenableFuture =
AdvertisingIdClient.getAdvertisingIdInfo(applicationContext)
addCallback(advertisingIdInfoListenableFuture,
object : FutureCallback<AdvertisingIdInfo> {
override fun onSuccess(adInfo: AdvertisingIdInfo?) {
val id: String = adInfo?.id
val providerPackageName: String = adInfo?.providerPackageName
val isLimitTrackingEnabled: Boolean =
adInfo?.isLimitTrackingEnabled
}
// Any exceptions thrown by getAdvertisingIdInfo()
// cause this method to be called.
override fun onFailure(t: Throwable) {
Log.e("MY_APP_TAG",
"Failed to connect to Advertising ID provider.")
// Try to connect to the Advertising ID provider again or fall
// back to an ad solution that doesn't require using the
// Advertising ID library.
}
}, Executors.newSingleThreadExecutor())
} else {
// The Advertising ID client library is unavailable. Use a different
// library to perform any required ad use cases.
}
}
Ява
// Used for the call to addCallback() within this snippet.
import com.google.common.util.concurrent.Futures;
private void determineAdvertisingInfo() {
if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) {
ListenableFuture<AdvertisingIdInfo> advertisingIdInfoListenableFuture =
AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
Futures.addCallback(advertisingIdInfoListenableFuture,
new FutureCallback<AdvertisingIdInfo>() {
@Override
public void onSuccess(AdvertisingIdInfo adInfo) {
String id = adInfo.getId();
String providerPackageName =
adInfo.getProviderPackageName();
boolean isLimitTrackingEnabled =
adInfo.isLimitTrackingEnabled();
// Any exceptions thrown by getAdvertisingIdInfo()
// cause this method to be called.
@Override
public void onFailure(Throwable throwable) {
Log.e("MY_APP_TAG",
"Failed to connect to Advertising ID provider.");
// Try to connect to the Advertising ID provider again
// or fall back to an ad solution that doesn't require
// using the Advertising ID library.
}
});
} else {
// The Advertising ID client library is unavailable. Use a different
// library to perform any required ad use cases.
}
}
Архитектура библиотеки рекламных идентификаторов
Структура библиотеки Advertising ID представлена на рисунке 1. Библиотека состоит из следующих модулей:
- Клиентский модуль , представляющий собой тонкий слой, включенный в приложения.
- Модуль поставщика , предоставляемый производителем устройства. Реализации этого модуля должны определять пользовательский интерфейс настроек, чтобы пользователи могли сбрасывать свой рекламный идентификатор и переключать настройки отслеживания рекламы.
Клиентский модуль взаимодействует с модулем провайдера для получения рекламных идентификаторов и пользовательских настроек в отношении отслеживания рекламы.
Как библиотека работает с несколькими поставщиками
Устройство может поддерживать несколько поставщиков рекламы на системном уровне одновременно. Если библиотека Advertising ID обнаруживает такую ситуацию, она проверяет, всегда ли ваше приложение получает информацию от одного и того же поставщика, предполагая, что он доступен. Этот процесс обеспечивает согласованность рекламных идентификаторов.
Если набор доступных поставщиков рекламы со временем изменится, и ваше приложение начнет взаимодействовать с другим поставщиком идентификаторов рекламы, все остальные клиентские приложения также начнут использовать этого нового поставщика. Ваше приложение будет вести себя так же, как если бы пользователь запросил сброс своего рекламного идентификатора.
Библиотека поставщиков идентификаторов рекламы использует следующий детерминированный порядок ранжирования поставщиков:
- Поставщики, запросившие разрешение
androidx.ads.identifier.provider.HIGH_PRIORITY. - Провайдеры, которые установлены на устройстве дольше всего.
- Поставщики, указанные первыми в алфавитном порядке.