原生影片廣告

選取平台: Android iOS

MediaContent

透過原生廣告和自訂原生廣告格式,您可存取 MediaContent 物件,用於取得媒體內容 (影片或圖片) 的相關資訊,也可用來控制影片廣告播放,以及監聽播放事件。您可以呼叫 NativeAd.getMediaContent() 來取得 MediaContent 物件。

MediaContent 物件包含影片的顯示比例和長度等資訊。下列程式碼片段顯示如何取得原生廣告的顯示比例和時間長度。

Java

if (nativeAd.getMediaContent() != null) {
  MediaContent mediaContent = nativeAd.getMediaContent();
  float mediaAspectRatio = mediaContent.getAspectRatio();
  if (mediaContent.hasVideoContent()) {
    float duration = mediaContent.getDuration();
  }
}

Kotlin

nativeAd.mediaContent?.let { mediaContent ->
  val mediaAspectRatio: Float = mediaContent.aspectRatio
  if (mediaContent.hasVideoContent()) {
    val duration: Float = mediaContent.duration
  }
}

影片事件回呼

如要處理特定影片事件,請編寫用於擴充抽象 VideoLifecycleCallbacks 類別的類別,並在 VideoController 上呼叫 setVideoLifecycleCallbacks()。然後,僅覆寫所需的回呼。

Java

if (nativeAd.getMediaContent() != null) {
  VideoController videoController = nativeAd.getMediaContent().getVideoController();
  if (videoController != null) {
    videoController.setVideoLifecycleCallbacks(
        new VideoController.VideoLifecycleCallbacks() {
          @Override
          public void onVideoStart() {
            Log.d(TAG, "Video started.");
          }

          @Override
          public void onVideoPlay() {
            Log.d(TAG, "Video played.");
          }

          @Override
          public void onVideoPause() {
            Log.d(TAG, "Video paused.");
          }

          @Override
          public void onVideoEnd() {
            Log.d(TAG, "Video ended.");
          }

          @Override
          public void onVideoMute(boolean isMuted) {
            Log.d(TAG, "Video isMuted: " + isMuted + ".");
          }
        });
  }
}

Kotlin

val videoLifecycleCallbacks =
  object : VideoController.VideoLifecycleCallbacks() {
    override fun onVideoStart() {
      Log.d(TAG, "Video started.")
    }

    override fun onVideoPlay() {
      Log.d(TAG, "Video played.")
    }

    override fun onVideoPause() {
      Log.d(TAG, "Video paused.")
    }

    override fun onVideoEnd() {
      Log.d(TAG, "Video ended.")
    }

    override fun onVideoMute(isMuted: Boolean) {
      Log.d(TAG, "Video isMuted: $isMuted.")
    }
  }
nativeAd.mediaContent?.videoController?.videoLifecycleCallbacks = videoLifecycleCallbacks