เริ่มต้นใช้งานไลบรารีโฆษณา Android TV

ไลบรารีโฆษณา Android TV มีอินเทอร์เฟซผู้ใช้เพื่อให้ผู้ใช้สามารถควบคุม ประสบการณ์การใช้งานโฆษณาใน Google TV คู่มือนี้จะอธิบายวิธีผสานรวม Android TV ไลบรารีโฆษณาลงในแอป PAL Android TV ที่คุณมีอยู่แล้ว

ข้อกำหนดเบื้องต้น

ความโปร่งใสและการควบคุมโฆษณา

ไลบรารีโฆษณา Android TV มีฟังก์ชันการแสดงผลความโปร่งใสของโฆษณา ควบคุมฟีเจอร์ (AT&C) ระหว่างช่วงพักโฆษณา เมื่อผู้ใช้โต้ตอบกับโฆษณาทางทีวี ไอคอนโดย Google ระหว่างโฆษณาในสตรีม เมนู AT&C จะแสดงผลเป็นระบบ วางซ้อนโดยแอป Launcher ทีวี ซึ่งแสดง URL แบบสั้น, คำตอบด่วน (คิวอาร์โค้ด) เพื่อหาข้อมูลเพิ่มเติมเกี่ยวกับโฆษณาและปุ่มสำหรับหยุดแสดงโฆษณาเดียวกัน

ไอคอนโฆษณาทางทีวีโดย Google ควรจะแสดงผลโดยใช้ไอคอน VAST เดียวกัน ในการแสดงผลเป็น AdChoices ไอคอน

ข้อความ Alt

การคลิกไอคอนโฆษณาทางทีวีโดย Google จะแสดง URL แบบสั้นและคิวอาร์โค้ดแก่ผู้ใช้ หน้าเว็บเกี่ยวกับโฆษณานี้ (ATA)

ข้อความ Alt

ผสานรวมไลบรารีโฆษณา Android TV

นำเข้าไลบรารีโฆษณา ATV

เพิ่มทรัพยากร Dependency ต่อไปนี้สำหรับไลบรารีโฆษณา 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> หลายคนสำหรับหน้าจอที่มีความละเอียดแตกต่างกัน ทำตามการแยกวิเคราะห์การตอบกลับ XML ของ VAST วิธีการ เพื่อแยกวิเคราะห์ VAST

ต่อไปนี้คือตัวอย่างโครงสร้าง 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> และเติมข้อมูลด้วยแท็กที่มีการแยกวิเคราะห์ โดยใช้ 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 ดังนั้น Callback วงจรมาตรฐาน เช่น onPause() และ onResume() ซึ่งใช้ฟังการเปลี่ยนแปลงวงจรกิจกรรมได้

[ไม่บังคับ] มีตัวแสดงผลรูปภาพสำรองที่กำหนดเอง

หากแอปมีข้อกำหนดพิเศษ เช่น ข้อจำกัดด้านฮาร์ดแวร์หรือ UX คุณสามารถตั้งค่าฟังก์ชัน Callback โดยใช้ 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
      ...
    }
  }
  ...
}

แสดงความคิดเห็นเกี่ยวกับไลบรารีโฆษณา Android TV แก่ Google

เราต้องการความคิดเห็นเกี่ยวกับประสบการณ์ที่คุณได้รับจากการผสานรวมและ การย้ายข้อมูลของแอป Android TV ติดต่อผู้จัดการฝ่ายดูแลลูกค้าของ Google เพื่อตั้งเวลา การประชุมกับวิศวกรของเรา

ประวัติรุ่น

เวอร์ชัน วันที่เผยแพร่ หมายเหตุ
1.0.0 2023-05-16
  • เพิ่มการบันทึก
  • ลดการรองรับ minSdk เป็น API ระดับ 21
  • อัปเดตการจัดการข้อผิดพลาดและทรัพยากร Dependency เพื่อแก้ไขข้อขัดข้อง
1.0.0-alpha02 2022-11-17
  • อัปเดต Android Manifest ที่อนุญาต Leanback ให้เป็นฟีเจอร์ที่ไม่บังคับ
1.0.0-alpha01 2022-09-07
  • การเผยแพร่ครั้งแรก