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

Предпосылки

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

  • Протокол реализации объявлений пользовательского поиска AdSense для поиска (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 . Чтобы правильно запрашивать объявления SearchAdView , объект 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; Подробности см. в Справочнике по объявлениям в пользовательском поиске AdSense для поиска.

// 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() , см. в Справочнике по объявлениям пользовательского поиска AdSense для поиска.

Параметр ключа должен иметь префикс «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 анонсировала новый раздел «Безопасность данных» , который представляет собой предоставленное разработчиком раскрытие информации о методах сбора, обмена и обеспечения безопасности приложения.

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

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

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

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

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

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

Пакеты:

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

com.google.ads.afsn

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

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

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

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

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