Реализация AFS для мобильных приложений (AFSMA) для Android

Предварительные условия

В этом руководстве по внедрению предполагается, что вы знакомы со следующим:

  • Протокол реализации объявлений в пользовательском поиске AFS (CSA)
  • Разработка приложений для Android
  • Связывание Google Mobile Ads SDK для Android (теперь часть сервисов Google Play) с проектом Android Studio. Требуется версия 9.0.0 сервисов Google Play.

Классы

Для показа объявлений AFSMA (также известных как поисковые объявления с динамической высотой) в вашем приложении реализуйте следующие классы:

SearchAdView

  • Этот класс наследуется от класса Android ViewGroup и отображает рекламу AFSMA. SearchAdView выполняет запрос объявления с помощью DynamicHeightSearchAdRequest и отображает возвращенные объявления. SearchAdView следует добавить в любую из существующих групп представлений приложения.
  • SearchAdView должен быть создан с учетом контекста, в котором выполняется SearchAdView , обычно Activity .
  • После создания экземпляра SearchAdView необходимо вызвать метод setAdSize() с помощью AdSize.SEARCH , чтобы запросить объявления AFSMA. Другие значения перечисления будут запрашивать рекламу, несовместимую с AFS для мобильных приложений.
  • Вызовите метод setAdUnitId() для этого объекта с кодом вашего свойства.

DynamicHeightSearchAdRequest.Builder

  • Этот класс инкапсулирует параметры запроса объявления. Это аналогично настройке параметров в объектах запроса объявлений JavaScript (параметры страницы, параметры блоков) для настольных компьютеров и мобильных сайтов AFS.
  • Установите параметры с помощью соответствующих установщиков (другими словами, вызовите setQuery() , чтобы установить параметр запроса).

Пример реализации

В приведенном ниже примере показано использование Activity для создания SearchAdView как подпредставления ViewGroup . Чтобы правильно запросить объявления AFSMA, объект SearchAdView должен вызвать метод setAdSize() с AdSize.SEARCH .

//  MainActivity.java implementation
//  (MainActivity is a subclass of Activity)

// Create the SearchAdView
final SearchAdView searchAdView = new SearchAdView(this);

// Set parameter to request for dynamic height search ads
searchAdView.setAdSize(AdSize.SEARCH); // Important!

// Replace with your pub ID (e.g. ms-app-pub-9616389000213823)
searchAdView.setAdUnitId("ms-app-pub-################");

// Add searchAdView to parent view group
...

В рамках того же Activity создайте DynamicHeightSearchAdRequest.Builder , который определяет параметры объявления, которое будет отображаться в SearchAdView . Объявления AFSMA настраиваются так же, как и объявления AFS в пользовательском поиске; Подробности см. в Справочнике по объявлениям в пользовательском поиске AFS.

// Create the ad request
DynamicHeightSearchAdRequest.Builder builder =
        new DynamicHeightSearchAdRequest.Builder();
builder.setQuery("flowers");
builder.setNumber(2);

// Replace with the ID of a style from your custom search styles
builder.setAdvancedOptionValue("csa_styleId", "0000000001");

// Customization options (set using setters on
// DynamicHeightSearchAdRequest.Builder)
builder.setAdTest(true);

Другие параметры настройки возможны путем установки дополнительных свойств объекта DynamicHeightSearchAdRequest.Builder .

Чтобы сделать запрос объявления, вызовите метод loadAd() с объектом DynamicHeightSearchAdRequest.Builder из объекта SearchAdView :

searchAdView.loadAd(builder.build());

Расширенные параметры

Большинство параметров запроса объявления можно задать с помощью методов установки объекта DynamicHeightSearchAdRequest.Builder . Любые параметры, у которых нет метода установки в DynamicHeightSearchAdRequest.Builder могут быть установлены с использованием пар ключ-значение с помощью метода setAdvancedOptionValue() . Полный список настроек, которые можно задать с помощью метода setAdvancedOptionValue() , см. в Справочнике по объявлениям в пользовательском поиске AFS.

Ключевой параметр должен иметь префикс «csa_», чтобы свойство было установлено правильно.

// Advanced customization options (set using key-value pair)

// Set a parameter (parameter_name) and its value (parameter_value)
// builder.setAdvancedOptionValue("csa_parameter_name", "parameter_value");

// Example: Show visible URL below description
// (domainLinkAboveDescription: false)
builder.setAdvancedOptionValue("csa_domainLinkAboveDescription", "false");

Если вы используете метод установки параметра и устанавливаете его с помощью setAdvancedOptionValue , второй вызов переопределит значение из первого вызова.

Расследование ошибок

SearchAdView ( searchAdView здесь) содержит метод setAdListener() , который поможет вам исследовать ошибки. В рамках той же Activity :

searchAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Called when an ad is loaded
        super.onAdLoaded();
        Toast.makeText(MainActivity.this, "Ad Loaded",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
    }

    @Override
    public void onAdOpened() {
        // Called when an ad opens an overlay that covers the screen
        super.onAdOpened();
        Toast.makeText(MainActivity.this, "Ad Opened",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Opened");
    }

    @Override
    public void onAdLeftApplication() {
        // Called when an ad leaves the application
        // (to go to the browser for example)
        super.onAdLeftApplication();
        Toast.makeText(MainActivity.this, "Ad Left Application",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Called when an ad request failed
        super.onAdFailedToLoad(errorCode);
        Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
                Toast.LENGTH_SHORT).show();
        Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
                errorCode);
    }
});

Константы, используемые в методе обратного вызова onAdFailedToLoad() описаны в справочнике по API .

Подготовьтесь к требованиям Google Play по раскрытию данных.

В мае 2021 года Google Play анонсировал новый раздел «Безопасность данных» , в котором разработчик раскрывает информацию о методах сбора, обмена и безопасности данных приложения.

Эта страница может помочь вам выполнить требования по раскрытию данных в отношении использования вами AFS Native SDK (также применимо к использованию AdSense для покупок). На этой странице вы можете найти информацию о том, обрабатывают ли наши SDK данные конечных пользователей и каким образом.

Мы стремимся быть максимально прозрачными в поддержке вас; однако, как разработчик приложения, вы несете единоличную ответственность за принятие решения о том, как реагировать на форму раздела безопасности данных Google Play, касающуюся сбора, обмена и обеспечения безопасности данных вашего приложения.

Как использовать информацию на этой странице

На этой странице перечислены данные конечных пользователей, собранные только с помощью последней версии SDK.

Чтобы завершить раскрытие данных, вы можете использовать руководство Android по типам данных, которое поможет вам определить, какой тип данных лучше всего описывает собранные данные. При раскрытии данных обязательно также учитывайте, как ваше конкретное приложение делится и использует собранные данные.

Тип данных SDK получает доступ и собирает

Пакеты:

com.google.android.gms:play-services-afs-native

com.google.ads.afsn

Данные собираются автоматически

AFS SDK автоматически собирает следующие данные. Все данные передаются с устройства в Google для показа рекламы, и все данные при передаче шифруются. Личная информация пользователя никогда не собирается, если только она не отправлена ​​по пользовательскому запросу вашим приложением.

Данные Эти данные собираются для следующих целей...
IP-адрес Краткое содержание:
  • Предотвращение мошенничества, безопасность и соблюдение требований
  • Реклама или маркетинг
  • Определить приблизительное местоположение
Деталь:
IP-адрес используется для мониторинга мошенничества и злоупотреблений, а также для определения приблизительного местоположения пользователя.

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

Активность приложения
  • Просмотры страниц и нажатия в приложении
  • История поиска в приложении
Краткое содержание:
  • Аналитика
  • Предотвращение мошенничества, безопасность и соблюдение требований
  • Реклама или маркетинг
  • Персонализация
Деталь:
Ваше приложение предоставляет нам запрос пользователя, чтобы мы могли возвращать поисковые объявления, соответствующие ключевому слову. Мы измеряем просмотры и взаимодействие (нажатия) с возвращаемой рекламой.
Диагностика Краткое содержание:
  • Аналитика
Деталь:
SDK измеряет задержку рендеринга рекламы, чтобы обеспечить возможность внедрения и измерения улучшений продукта. Мы также отправляем отчеты о сбоях/ошибках и иногда добавляем другие инструменты, необходимые для понимания того, как издатели используют функциональность.
Устройство или другие идентификаторы Краткое содержание:
  • Предотвращение мошенничества, безопасность и соблюдение требований
  • Реклама или маркетинг
Деталь:
Идентификатор устройства используется для мониторинга мошенничества и злоупотреблений, а также для измерения эффективности рекламы.