Android TV 광고 라이브러리 시작하기

Android TV 광고 라이브러리는 광고 경험을 제공합니다. 이 가이드에서는 Android TV를 통합하는 방법을 설명합니다. 광고 라이브러리를 연결합니다.

기본 요건

  • 시작하기 가이드를 끝까지 읽어보세요.
  • Android PAL SDK 버전 20.0.1 이상

광고 투명성 및 관리

Android TV 광고 라이브러리는 광고 투명성 및 광고 시점 동안 제어 기능 (AT&C)을 제어할 수 없습니다. 사용자가 TV 광고와 상호작용할 때 Google 광고 아이콘이 표시되면 AT&C 메뉴가 시스템으로 렌더링됩니다. 짧은 URL, 빠른 응답 (QR 코드)이 표시된 TV 런처 앱의 오버레이 를 클릭하면 광고에 대해 자세히 알아보고 광고 게재를 중단할 수 있는 버튼이 표시됩니다.

Google TV 광고 아이콘은 동일한 VAST 아이콘을 사용하여 렌더링되어야 합니다. 렌더링 요구사항을 AdChoices 아이콘을 클릭합니다.

대체 텍스트

Google TV 광고 아이콘을 클릭하면 광고의 짧은 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 광고 라이브러리가 광고 ID 앞에 AndroidManifest.xml에 다음 줄을 추가합니다.

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

PAL SDK와 통합

Android TV 광고 라이브러리는 SignalCollector 드림 클래스를 사용하여 광고 요청에 필요한 기기에서 식별자를 수집합니다. 더 팔라우 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> 화면 해상도가 다른 여러 <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을 사용하여 파싱할 수 있습니다. VAST 3.0 파싱을 위한 PAL 가이드의 구조 응답을 참조하세요.

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를 렌더링하는 메서드입니다.

다음 스니펫은 AT&C를 렌더링하도록 Android TV 광고 라이브러리를 설정합니다. 사용할 수 있습니다.

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() 활동 수명 주기 변경사항을 수신 대기하는 데 사용할 수 있습니다.

[선택사항] 맞춤 대체 이미지 렌더기 제공

앱에 하드웨어 제한 또는 UX와 같은 특별한 요구사항이 있는 경우 제약조건이 있는 경우 API를 사용하여 AdsControlsManager.setCustomFallbackImageRenderer() Android TV 광고 라이브러리는 대체 이미지를 확인하여 제공된 맞춤 렌더기를 사용할 수 있습니다. 맞춤 렌더링은 AT&C 메뉴가 아닌 VAST IconClickFallbackImage를 위한 매개변수입니다.

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
  • 로깅을 추가합니다.
  • minSdk 지원을 API 수준 21로 낮춥니다.
  • 비정상 종료를 해결하기 위해 오류 처리 및 종속 항목을 업데이트합니다.
1.0.0-alpha02 2022-11-17
  • Android 매니페스트를 업데이트하여 Leanback 이 기능은 선택사항입니다.
1.0.0-alpha01 2022-09-07
  • 첫 출시입니다.