Android TV reklam kitaplığı, kullanıcıların Google TV'deki reklam deneyimlerini kontrol edebilecekleri bir kullanıcı arayüzü sağlar. Bu kılavuzda, Android TV reklam kitaplığının mevcut PAL Android TV uygulamanıza nasıl entegre edileceği açıklanmaktadır.
Ön koşullar
- Başlangıç kılavuzunu tamamlayın
- Android PAL SDK'sı 20.0.1 veya daha yeni bir sürüm
Reklam şeffaflığı ve kontrolleri
Android TV reklam kitaplığı, reklam araları sırasında reklam şeffaflığını ve kontrol özelliklerini (AT&C) oluşturma işlevi sağlar. Kullanıcılar yayın içi reklamlar sırasında Google TV Reklamları simgesine dokunduğunda TV başlatıcı uygulaması, AT&C menüsünü sistem yer paylaşımı olarak oluşturur. Bu menüde kısa bir URL, reklam hakkında daha fazla bilgi edinmek için hızlı yanıt (QR kodu) ve aynı reklamın gösterilmesini durdurma düğmesi gösterilir.
Google TV Reklamları simgesi, AdChoices simgesiyle aynı VAST simge oluşturma koşulları kullanılarak oluşturulmalıdır.
Google TV Reklamları simgesini tıklayan kullanıcıya Bu reklam hakkında (ATA) web sayfasının kısa URL'si ve QR kodu gösterilir.
Android TV reklam kitaplığını entegre etme
ATV reklam kitaplığını içe aktarma
Android TV reklam kitaplığı için aşağıdaki bağımlılığı uygulama düzeyindeki Gradle dosyanıza (genellikle app/build.gradle
) ekleyin:
dependencies {
...
implementation 'com.google.android.tv:tv-ads:1.0.1'
}
AD_ID
iznini beyan etme
Android TV reklam kitaplığının reklam kimliğine erişebilmesi için AndroidManifest.xml
dosyanıza aşağıdaki satırı ekleyin:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
PAL SDK'sı ile entegrasyon
Android TV reklam kitaplığı, reklam isteğinde bulunmak için cihazda gereken tanımlayıcıları toplamak üzere SignalCollector
sınıfını kullanır. PAL SDK'sı, bu sinyalleri okumak ve tek seferlik bir değer oluşturmak için NonceRequest.Builder
sınıfını kullanır.
Android TV reklam kitaplığını PAL SDK'sıyla çalışacak şekilde ayarlamak için kalın satırları PAL uygulamanıza ekleyin:
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 yanıtını ayrıştırma
Android TV reklam kitaplığının sinyalleriyle bir reklam isteği gönderildiğinde Google reklam sunucuları, farklı ekran çözünürlükleri için bir veya daha fazla <IconClickFallbackImage>
alt öğesi içeren <Icon>
etiketini içeren bir VAST yanıtı gönderir.
VAST'ı ayrıştırmak için VAST XML yanıtlarını ayrıştırma talimatları
Aşağıda, <Icon>
etiketi ve alt öğelerinin örnek bir VAST 4.2 yapısı verilmiştir. İlgili veriler kalın olarak gösterilmiştir.
<?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>
Benzer şekilde, <IconClickFallbackImages>
, VAST 3.0 yanıtlarını ayrıştırmaya yönelik PAL kılavuzundaki örnek VAST 3.0 yapısı kullanılarak ayrıştırılabilir.
VAST'i ayrıştırırken her <IconClickFallbackImage>
etiketi için bir IconClickFallbackImage
nesnesi oluşturun ve IconClickFallbackImage.Builder
kullanarak bu nesneyi ayrıştırılan verilerle doldurun.
Benzer şekilde, IconClickFallbackImage
nesnelerinin listesini <IconClickFallbackImages>
etiketini temsil eden bir IconClickFallbackImages
nesnesine iletmek için IconClickFallbackImages.Builder
kullanın.
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;
}
Render Hükümler ve Koşulları
Android TV reklam kitaplığı, AT&C menüsünü veya standart bir VAST IconClickFallbackImage'yi oluşturmak için bir AdsControlsManager.handleIconClick()
yöntemi sağlar.
Aşağıdaki snippet, Android TV reklam kitaplığını AT&C menüsü ve VAST simgesi tıklama yedek resimlerini oluşturacak şekilde ayarlar.
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()
çağrısı bir Android Activity
başlatır. Bu nedenle, etkinlik yaşam döngüsü değişikliklerini dinlemek için onPause()
ve onResume()
gibi standart yaşam döngüsü geri çağırma yöntemleri kullanılabilir.
[İsteğe bağlı] Özel yedek resim oluşturma aracı sağlayın
Uygulamanızın donanım kısıtlamaları veya kullanıcı deneyimi kısıtlamaları gibi özel koşulları varsa AdsControlsManager.setCustomFallbackImageRenderer()
kullanarak geri çağırma işlevi ayarlayabilirsiniz.
Android TV reklam kitaplığı, sağlanan özel oluşturma aracını kullanıp kullanamayacağını belirlemek için yedek resimleri doğrular. Özel oluşturma yalnızca VAST IconClickFallbackImage için kullanılır, AT&C menüsü için kullanılmaz.
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'a Android TV reklam kitaplığıyla ilgili geri bildirim gönderme
Android TV uygulamalarının entegrasyonu ve taşınmasıyla ilgili deneyiminiz hakkında geri bildirim almak istiyoruz. Mühendislerimizden biriyle toplantı planlamak için Google hesap yöneticinizle iletişime geçin.
Sürüm geçmişi
Sürüm | Yayın Tarihi | Notlar |
---|---|---|
1.0.1 | 2025-01-09 |
|
1.0.0 | 2023-05-16 |
|
1.0.0-alpha02 | 2022-11-17 |
|
1.0.0-alpha01 | 2022-09-07 |
|