توفّر مكتبة إعلانات Android TV واجهة مستخدم تتيح للمستخدمين التحكّم في تجربتهم المتعلّقة بالإعلانات على Google TV. يوضّح هذا الدليل كيفية دمج مكتبة إعلانات Android TV في تطبيق PAL الحالي على Android TV.
المتطلبات الأساسية
- إكمال دليل البدء
- الإصدار 20.0.1 من حزمة تطوير البرامج (SDK) لنظام التشغيل Android PAL أو إصدار أحدث
شفافية الإعلانات وعناصر التحكّم فيها
توفّر مكتبة الإعلانات على Android TV وظائف لعرض شفافية الإعلانات و ميزات التحكّم (AT&C) أثناء الفواصل الإعلانية. عندما يتفاعل المستخدمون مع رمز إعلانات التلفزيون من Google أثناء عرض الإعلانات أثناء التشغيل، يتم عرض قائمة معلومات الوصول والتحكم (AT&C) كأحد عناصر ميزة "تداخل النظام" من خلال تطبيق مشغّل التلفزيون، ويعرض رابطًا قصيرًا ورمز استجابة سريعة (رمز استجابة سريعة) للتعرّف على مزيد من المعلومات عن الإعلان وزر لإيقاف عرض الإعلان نفسه.
يجب عرض رمز إعلانات التلفزيون من Google باستخدام متطلبات عرض رمز VAST نفسها المستخدَمة لرمز AdChoices.
يؤدي النقر على رمز إعلانات التلفزيون من Google إلى عرض عنوان URL قصير ورمز استجابة سريعة للمستخدمين للانتقال إلى صفحة الويب لمحة عن هذا الإعلان (ATA).
دمج مكتبة إعلانات Android TV
استيراد مكتبة إعلانات ATV
أضِف التبعية التالية لمكتبة إعلانات Android TV إلى ملف Gradle على مستوى التطبيق، والذي يكون عادةً app/build.gradle
:
dependencies {
...
implementation 'com.google.android.tv:tv-ads:1.0.1'
}
الإفصاح عن إذن AD_ID
لكي تتمكّن مكتبة إعلانات Android TV من الوصول إلى Advertising
ID، أضِف السطر التالي إلى AndroidManifest.xml
:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
الدمج مع حزمة تطوير البرامج (SDK) لبرنامج PAL
تستخدِم مكتبة الإعلانات في Android TV فئة
SignalCollector
لجمع المعرّفات على الجهاز المطلوبة لطلب الإعلانات. يستخدم PAL
SDK فئة
NonceRequest.Builder
لقراءة هذه الإشارات وإنشاء مفتاح عشوائي.
أضِف السطور الغامقة إلى تطبيق PAL لإعداد مكتبة إعلانات Android TV للعمل مع حزمة تطوير البرامج (SDK) لPAL:
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>
واحد أو
متعدّد لدرجات دقة شاشة مختلفة.
اتّبِع تعليمات تحليل استجابات XML لـ "نموذج عرض إعلانات الفيديو" لتحليل نموذج عرض إعلانات الفيديو.
في ما يلي نموذج لهيكل VAST 4.2 لعلامة <Icon>
والعلامات الثانوية لها، مع
البيانات ذات الصلة بالخطّ العريض.
<?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>
واملأه بال data
المحلَّلة باستخدام
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;
}
عرض الأحكام والشروط
توفّر مكتبة إعلانات 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()
للاستماع إلى تغييرات مراحل نشاط التطبيق.
[اختياري] توفير أداة عرض مخصّصة للصور الاحتياطية
إذا كان تطبيقك يتضمّن متطلبات خاصة، مثل قيود الأجهزة أو قيود تجربة المستخدم، يمكنك ضبط دالة طلب معاودة الاتصال باستخدام
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.1 | 2025-01-09 |
|
1.0.0 | 2023-05-16 |
|
1.0.0-alpha02 | 2022-11-17 |
|
1.0.0-alpha01 | 2022-09-07 |
|