Библиотека рекламы Android TV предоставляет пользователям пользовательский интерфейс для управления показом рекламы на Google TV. В этом руководстве объясняется, как интегрировать библиотеку рекламы Android TV в существующее приложение PAL для Android TV.
Предварительные условия
- Завершить руководство по началу работы
- Android PAL SDK версии 20.0.1 или выше
Прозрачность рекламы и контроль
Библиотека рекламы 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 г. |
|
1.0.0-альфа02 | 17.11.2022 |
|
1.0.0-альфа01 | 07.09.2022 |
|