네이티브 동영상 광고

기본 요건

MediaContent

네이티브 광고를 사용하면 미디어 콘텐츠(동영상 또는 이미지일 수 있음)에 관한 정보를 가져오는 데 사용되는 MediaContent 객체에 액세스할 수 있습니다. 또한 동영상 광고 재생을 관리하고 재생 이벤트를 수신하는 데도 사용됩니다. myAd.getMediaContent()를 호출하여 MediaContent 객체를 얻을 수 있습니다.

MediaContent 객체에는 동영상의 가로 세로 비율 및 재생 시간과 같은 정보가 포함되어 있습니다. 아래 스니펫은 네이티브 광고의 가로 세로 비율과 재생 시간을 확인하는 방법을 보여줍니다.

자바

if (myNativeAd.getMediaContent().hasVideoContent()) {

   float mediaAspectRatio = myNativeAd.getMediaContent().getAspectRatio();
   float duration = myNativeAd.getMediaContent().getDuration();
   ...
}

Kotlin

if (myNativeAd.getMediaContent().hasVideoContent()) {

   val mediaAspectRatio: Float = myNativeAd.getMediaContent().getAspectRatio()
   val duration: Float = myNativeAd.getMediaContent().getDuration()
   ...
}

VideoOptions

VideoOptions 클래스를 사용하면 앱에서 네이티브 동영상 애셋이 작동하는 방식을 구성할 수 있습니다. VideoOptions 객체는 AdLoader를 만들 때 사용되는 NativeAdOptions 객체에 할당해야 합니다.

자바

VideoOptions videoOptions = new VideoOptions.Builder()
        .setStartMuted(false)
        .build();

NativeAdOptions adOptions = new NativeAdOptions.Builder()
        .setVideoOptions(videoOptions)
        .build();

AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forUnifiedNativeAd( ... )
        .withNativeAdOptions(adOptions)
        .build();

Kotlin

val videoOptions = VideoOptions.Builder()
        .setStartMuted(false)
        .build()

val adOptions = NativeAdOptions.Builder()
        .setVideoOptions(videoOptions)
        .build()
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forUnifiedNativeAd( ... )
        .withNativeAdOptions(adOptions)
        .build()

동영상 이벤트 콜백

특정 동영상 이벤트를 처리하려면 추상 VideoLifecycleCallbacks 클래스를 확장하는 클래스를 작성하고 VideoController에서 setVideoLifecycleCallbacks()를 호출합니다. 그런 다음 관심 있는 콜백만 재정의합니다.

자바

mediaContent.getVideoController()
        .setVideoLifecycleCallbacks(new VideoLifecycleCallbacks() {

  /** Called when video playback first begins. */
  @Override
  public void onVideoStart() {
    // Do something when the video starts the first time.
    Log.d("MyApp", "Video Started");
  }

  /** Called when video playback is playing. */
  @Override
  public void onVideoPlay() {
    // Do something when the video plays.
    Log.d("MyApp", "Video Played");
  }

  /** Called when video playback is paused. */
  @Override
  public void onVideoPause() {
    // Do something when the video pauses.
    Log.d("MyApp", "Video Paused");
  }

  /** Called when video playback finishes playing. */
  @Override
  public void onVideoEnd() {
    // Do something when the video ends.
    Log.d("MyApp", "Video Ended");
  }

  /** Called when the video changes mute state. */
  @Override
  public void onVideoMute(boolean isMuted) {
    // Do something when the video is muted.
    Log.d("MyApp", "Video Muted");
  }

});

Kotlin

mediaContent.getVideoController().setVideoLifecycleCallbacks {

  /** Called when video playback first begins. */
  override fun onVideoStart() {
    // Do something when the video starts the first time.
    Log.d("MyApp", "Video Started")
  }

  /** Called when video playback is playing. */
  override fun onVideoPlay() {
    // Do something when the video plays.
    Log.d("MyApp", "Video Played")
  }

  /** Called when video playback is paused. */
  override fun onVideoPause() {
    // Do something when the video pauses.
    Log.d("MyApp", "Video Paused")
  }

  /** Called when video playback finishes playing. */
  override fun onVideoEnd() {
    // Do something when the video ends.
    Log.d("MyApp", "Video Ended")
  }

  /** Called when the video changes mute state. */
  override fun onVideoMute(boolean isMuted) {
    // Do something when the video is muted.
    Log.d("MyApp", "Video Muted")
  }
}