Реализация 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-адрес используется для мониторинга мошенничества и злоупотреблений, а также для определения приблизительного местоположения пользователя.

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

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