Начните работу с библиотекой объявлений для Android TV

Библиотека рекламы Android TV предоставляет пользователям пользовательский интерфейс для управления показом рекламы на Google TV. В этом руководстве объясняется, как интегрировать библиотеку рекламы Android TV в существующее приложение PAL для Android TV.

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

Прозрачность рекламы и контроль

Библиотека рекламы Android TV предоставляет функции прозрачности рекламы и функции управления (AT&C) во время рекламных пауз. Когда пользователи взаимодействуют со значком TV Ads by Google во время потоковой рекламы, меню AT&C отображается в виде системного наложения в приложении TV Launcher, показывая короткий URL-адрес и быстрый ответ (QR-код), чтобы узнать больше о рекламе. и кнопку, чтобы прекратить показ того же объявления.

Значок «Телеобъявления от Google» должен отображаться с использованием тех же требований к отображению значка VAST, что и значок «Выбор рекламы» .

Альтернативный текст

Щелкнув значок «Телеобъявления от Google», пользователь отобразит короткий URL-адрес и QR-код веб-страницы «Об этом объявлении» (ATA).

Альтернативный текст

Интегрируйте библиотеку рекламы Android TV

Импортируйте библиотеку объявлений ATV.

Добавьте следующую зависимость для библиотеки рекламы Android TV в файл Gradle уровня приложения, обычно app/build.gradle :

dependencies {
   ...
   implementation 'com.google.android.tv:tv-ads:1.0.0'
}

Объявить разрешение AD_ID

Чтобы библиотека рекламы Android TV получила доступ к рекламному идентификатору , добавьте следующую строку в свой AndroidManifest.xml :

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

Интеграция с PAL SDK

Библиотека рекламы Android TV использует класс SignalCollector для сбора идентификаторов на устройстве, необходимых для запроса рекламы. PAL SDK использует класс NonceRequest.Builder для чтения этих сигналов и создания nonce.

Добавьте жирные линии в свое приложение PAL, чтобы настроить библиотеку рекламы Android TV для работы с PAL SDK:

public class VideoPlayerActivity extends Activity {
  ...
  private SignalCollector signalCollector;
  ...
  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...
    signalCollector = new SignalCollector();
    ...
  }
  ...
  public generateNonceForAdRequest() {
    ...
    NonceRequest nonceRequest = NonceRequest.builder()
        ...
        .platformSignalCollector(signalCollector)
        .build();
    ...
  }

Анализ ответа VAST

Когда запрос объявления делается с использованием сигналов библиотеки объявлений Android TV, рекламные серверы Google отправляют ответ VAST, содержащий тег <Icon> с одним или несколькими дочерними элементами <IconClickFallbackImage> для разных разрешений экрана. Следуйте инструкциям по анализу ответов VAST XML, чтобы проанализировать VAST.

Ниже приведен пример структуры тега <Icon> и его дочерних элементов VAST 4.2, соответствующие данные выделены жирным шрифтом .

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.2">
 <Ad id="123456">
  <Wrapper>
   ...
   <Creatives>
    ...
    <Creative id="7891011" AdID="ABCD123456EF" sequence="1">
     ...
     <Linear>
      ...
      <Icons>
       ...
       <Icon program="TV Ads by Google" width="106" height="20" xPosition="24" yPosition="20"
        duration="00:00:10" offset="00:00:00" apiFramework="VAST" altText="Why This Ad?">
        <StaticResource creativeType="image/png">
         <![CDATA[https://imasdk.googleapis.com/formats/ata/gtv_ads_badge.png]]>
        </StaticResource>
        <IconClicks>
         ...
         <IconClickThrough><![CDATA[https://myadcenter.google.com]]></IconClickThrough>
         <IconClickFallbackImages>
          <IconClickFallbackImage width="950" height="600">
           <AltText>Sample alt text</AltText>
           <StaticResource creativeType="image/png">
            <![CDATA[https://google.com?atvatc=1&atvatcmd=Eg8KDQoLbXV0ZV9hZF91cmwKAgoA]]>
           </StaticResource>
          </IconClickFallbackImage>
          ...
         </IconClickFallbackImages>
        </IconClicks>
       </Icon>
       ...
      </Icons>
     ...
     </Linear>
     ...
    </Creative>
    ...
   </Creatives>
   ...
  </Wrapper>
  ...
 </Ad>
</VAST>

Аналогично, <IconClickFallbackImages> можно проанализировать, используя пример структуры VAST 3.0 в руководстве PAL по анализу ответов VAST 3.0 .

При анализе VAST создайте объект IconClickFallbackImage для каждого тега <IconClickFallbackImage> и заполните его проанализированными данными с помощью IconClickFallbackImage.Builder . Аналогичным образом используйте IconClickFallbackImages.Builder для передачи списка объектов IconClickFallbackImage в объект IconClickFallbackImages , представляющий тег <IconClickFallbackImages> .

import com.google.android.tv.ads.IconClickFallbackImage;
import com.google.android.tv.ads.IconClickFallbackImages;
import java.util.Arrays;
...
  IconClickFallbackImages getIconClickFallbackImages(...) {
    // Use parsed VAST IconClickFallbackImages data to build a list of
    // IconClickFallbackImage objects.

    int parsedWidth;
    int parsedHeight;
    String parsedAltText;
    String parsedCreativeType;
    String parsedStaticResourceUri;
    // Read the <IconClickFallbackImage> node and its children to set
    // parsedWidth, parsedHeight, ...

    IconClickFallbackImages iconClickFallbackImages =
        IconClickFallbackImages.builder(
                Arrays.asList(
                    IconClickFallbackImage.builder()
                        .setWidth(parsedWidth)
                        .setHeight(parsedHeight)
                        .setAltText(parsedAltText)
                        .setCreativeType(parsedCreativeType)
                        .setStaticResourceUri(parsedStaticResourceUri)
                        .build()))
            .build();

    return iconClickFallbackImages;
  }

Рендеринг AT&C

Библиотека рекламы Android TV предоставляет метод AdsControlsManager.handleIconClick() для отрисовки меню AT&C или стандартного VAST IconClickFallbackImage.

Следующий фрагмент настраивает библиотеку рекламы Android TV для отображения меню AT&C и резервных изображений при нажатии значка VAST.

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.tv.ads.AdsControlsManager;
import com.google.android.tv.ads.IconClickFallbackImage;
import com.google.android.tv.ads.IconClickFallbackImages;
import java.util.ArrayList;
import java.util.List;

public final class VideoPlayerActivity extends Activity {
  ...
  private AdsControlsManager adsControlsManager;
  ...
  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...
    adsControlsManager = new AdsControlsManager(this);
    ...
  }
  ...

  /**
   * Called when the user interacts with any VAST Icon.
   * @param view.
   */
  public void onVastIconClicked(View view) {
    IconClickFallbackImages iconClickFallbackImages;
    // Populate the IconClickFallbackImages object from the parsed VAST data.
    ...
    adsControlsManager.handleIconClick(iconClickFallbackImages);
    ...
  }
}

Вызов AdsControlsManager.handleIconClick() запускает Activity Android, поэтому стандартные обратные вызовы жизненного цикла, такие как onPause() и onResume() можно использовать для прослушивания изменений жизненного цикла активности.

[Необязательно] Предоставьте собственный резервный рендеринг изображений.

Если у вашего приложения есть особые требования, такие как аппаратные ограничения или ограничения UX, вы можете установить функцию обратного вызова с помощью AdsControlsManager.setCustomFallbackImageRenderer() . Библиотека рекламы Android TV проверит резервные изображения, чтобы определить, можно ли использовать предоставленный пользовательский модуль визуализации. Пользовательский рендеринг будет использоваться только для VAST IconClickFallbackImage, а не для меню AT&C.

import android.app.Activity;
import android.os.Bundle;
import com.google.android.tv.ads.AdsControlsManager;
import com.google.android.tv.ads.CustomFallbackImageRenderer;
import com.google.android.tv.ads.IconClickFallbackImages;
import java.util.List;

public final class VideoPlayerActivity extends Activity {
  ...
  private AdsControlsManager adsControlsManager;
  ...
  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...
    adsControlsManager = new AdsControlsManager(this);
    adsControlsManager.setCustomFallbackImageRenderer(
        new CustomFallbackImageRendererImpl());
    ...
  }

  private static class CustomFallbackImageRendererImpl implements CustomFallbackImageRenderer {
    @Override
    public void render(IconClickFallbackImages iconClickFallbackImages) {
      // Render the fallback images using a custom layout
      ...
    }
  }
  ...
}

Оставьте отзыв Google о библиотеке рекламы для Android TV.

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

История выпусков

Версия Дата выпуска Примечания
1.0.0 16 мая 2023 г.
  • Добавляет логирование.
  • Понижает поддержку minSdk до уровня API 21.
  • Обновляет обработку ошибок и зависимости для устранения сбоев.
1.0.0-альфа02 17.11.2022
  • Обновляет манифест Android, позволяя сделать функцию Leanback необязательной.
1.0.0-альфа01 07.09.2022
  • Первоначальный выпуск.