Android TV 廣告資料庫提供使用者介面,方便使用者控制 Google TV 的廣告體驗本指南說明如何整合 Android TV 加入現有的 PAL Android TV 應用程式
必要條件
- 完成開始使用指南
- Android PAL SDK 20.0.1 以上版本
廣告資訊公開與控制選項
Android TV 廣告程式庫提供顯示廣告透明度的功能, 在廣告插播期間控管功能 (AT&C)。使用者與電視廣告互動時 ,在串流內廣告播放期間, 圖示將以系統的形式呈現 AT&C 選單 疊加在電視啟動器應用程式上,顯示簡短網址和快速回應 (QR code) ,進一步瞭解廣告以及停止顯示相同廣告的按鈕。
「Google 提供的電視廣告」圖示應以相同的 VAST 圖示顯示 轉譯需求 AdChoices 圖示。
使用者按一下「Google 提供的電視廣告」圖示,會看到以下應用程式的短網址和 QR code 「關於這則廣告」網頁。
整合 Android TV 廣告程式庫
匯入 ATV 廣告資料庫
將以下 Android TV 廣告程式庫的依附元件加入應用程式層級
Gradle 檔案,通常為 app/build.gradle
:
dependencies {
...
implementation 'com.google.android.tv:tv-ads:1.0.0'
}
聲明 AD_ID
權限
為了讓 Android TV 廣告資料庫存取廣告服務
ID,請將
新增到您的 AndroidManifest.xml
:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
與 PAL SDK 整合
Android TV 廣告庫會使用
SignalCollector
敬上
類別,以便在請求廣告時所需的裝置上收集 ID。私刑
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 廣告
伺服器會傳送包含 <Icon>
標記的 VAST 回應,
針對不同螢幕解析度建立多個 <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>
同樣地,您也可以使用範例 VAST 3.0 剖析 <IconClickFallbackImages>
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()
會啟動 Android Activity
,因此
標準生命週期回呼,例如
onPause()
敬上
和
onResume()
可用來監聽活動生命週期變更
[選用] 提供自訂的備用圖片轉譯器
如果您的應用程式有特殊需求,例如硬體限製或使用者體驗
您可以使用
AdsControlsManager.setCustomFallbackImageRenderer()
。
Android TV 廣告資料庫會驗證備用圖片,以判斷廣告是否
即可使用所提供的自訂轉譯器系統只會使用「自訂顯示」選項
,而不是 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 | 2023-05-16 |
|
1.0.0-alpha02 | 2022-11-17 |
|
1.0.0-alpha01 | 2022-09-07 |
|