遷移到 Brightcove 的 IMA 插件 8.0.0

在本主題中,您將了解如何遷移您的應用程序以使用適用於 Android 8.0.0 的 Native SDK 的 Brightcove 的 IMA 插件。

概覽

適用於 Android 8.0.0 或更高版本的 Brightcove Native SDK 支持 Google IMA SDK 版本 3.27.1。如果您使用的是IMA廣告,使用此版本的IMA插件需要注意一些事項。其中包括:

Google IMA SDK中的更改

Brightcove Native SDK 將 Google IMA SDK 從版本 3.11.2 更新到版本 3.27.1。最相關的更改包括:

  • SdkFactory.createAdDisplayContainer()已被棄用
  • AdDisplayContainer.setPlayer(VideoAdPlayer)已被棄用
  • AdDisplayContainer.setAdContainer(ViewGroup)已被棄用
  • AdsRequest.setAdDisplayContainer(AdDisplayContainer)已移除

有關完整版本,請參閱Google IMA Android SDK發行記錄文件。

Brightcove IMA插件中的更改

Brightcove IMA插件進行了一些更改,以與新的Google IMA SDK版本完全兼容。它們包括:

使用GoogleIMAComponent Builder

我們建議您使用構建器來創建GoogleIMAComponent實例。這樣可以更輕鬆地配置GoogleIMAComponent

googleIMAComponent = new GoogleIMAComponent.Builder(brightcoveVideoView, eventEmitter)
  .setUseAdRules(true)
  .setImaSdkSettings(customIMASDKSettings)
  .setAdsRenderingSettings(customAdsRenderingSettings)
  .setAdDisplayContainerFactory(customAdDisplayContainerFactory)
  .build();
}

創建AdDisplayContainer

由於Google IMA SDK已刪除AdsRequest.setAdDisplayContainer(...),Brightcove IMA插件現在可以使用GoogleIMAVideoAdPlayerBaseVideoView

該插件需要一個AdDisplayContainerFactory創建AdDisplayContainer

public interface AdDisplayContainerFactory {
  /**
  * Creates the AdDisplayContainer with the provided GoogleIMAVideoAdPlayer
  * and the ViewGroup retrieved with getViewContainer()
  *
  * @param googleIMAVideoAdPlayer the Brightcove Ad Player for Google IMA
  */
  AdDisplayContainer createAdDisplayContainer(GoogleIMAVideoAdPlayer googleIMAVideoAdPlayer);

  /**
  * Returns the ViewGroup container used for both,
  * the creation of the GoogleIMAVideoAdPlayer and the AdDisplayContainer
  */
  ViewGroup getViewContainer();
}

在幕後,該插件使用DefaultAdDisplayContainerFactoryAdDisplayContainerFactory,以創建AdDisplayContainer。的getViewContainer()返回BaseVideoView傳入其構造函數,並且createAdDisplayContainer方法返回:

ImaSdkFactory.createAdDisplayContainer(getViewContainer(), googleIMAVideoAdPlayer);

添加您的AdDisplayContainerFactory

如果需要其他實現,則必須傳遞自己的實現AdDisplayContainerFactoryGoogleIMAComponent建造者:

googleIMAComponent = new GoogleIMAComponent.Builder(brightcoveVideoView, eventEmitter)
  .setAdDisplayContainerFactory(customAdDisplayContainerFactory)
  .build();

如果您想以其他視圖播放廣告,BaseVideoView,您可以提供DefaultAdDisplayContainerFactory和你的ViewGroup

googleIMAComponent = new GoogleIMAComponent.Builder(brightcoveVideoView, eventEmitter)
  .setAdDisplayContainerFactory(new DefaultAdDisplayContainerFactory(myViewGroup))
  .build();

GoogleIMAVideoAdPlayer中不推薦使用的方法

以下方法已棄用GoogleIMAVideoAdPlayer類:

不推薦使用的方法 改用
playAd() playAd(AdMediaInfo)
loadAd(String) loadAd(AdMediaInfo, AdPodInfo)
stopAd() stopAd(AdMediaInfo)
resumeAd() playAd(AdMediaInfo)
pauseAd() pauseAd(AdMediaInfo)

請注意,現在更換方法需要AdMediaInfo。您可以檢索當前AdMediaInfo通過調用對象GoogleIMAVideoAdPlayer.getCurrentAdMediaInfo()。這將返回已加載的AdMediaInfo, 要么Null

遷移到 IMA 插件 8.0.0

要遷移到 Brightcove IMA 插件 8.0.0,請執行以下步驟:

更新依賴版本

更新您的應用程序以使用以下依賴項版本:

  • 所有 Brightcove SDK 依賴項都設置為版本 8.0.0
  • 使用 Google IMA SDK 版本 3.27.1

這是一個例子build.gradle文件:

//build.gradle
dependencies {
 //Brightcove SDK dependencies
 implementation "com.brightcove.player:android-sdk8.0.0:"
 implementation "com.brightcove.player:exoplayer2:8.0.0"
 implementation "com.brightcove.player:android-ima-plugin:8.0.0"

 //Google IMA SDK
 implementation "com.google.ads.interactivemedia.v3:interactivemedia:3.27.1"
 ...
}

刪除不推薦使用的方法

您當前的Google IMA設置可能與此類似:

AdDisplayContainer container = sdkFactory.createAdDisplayContainer();
container.setPlayer(googleIMAComponent.getVideoAdPlayer());
container.setAdContainer(brightcoveVideoView);

這三種方法已被棄用,並且將消失。

您現在必須打電話googleIMAComponent.getAdDisplayContainer()它將返回AdDisplayContainerGoogleIMAVideoAdPlayer,如果不可用,則返回null。

有關創建AdDisplayContainer,請參閱創建AdDisplayContainer部分。

以下方法也已從Google IMA SDK中刪除:

adsRequest.setAdDisplayContainer(container);

而是使用AdDisplayContainer創建Google IMA的實例AdsLoader

有關不推薦使用的方法及其替代方法的詳細信息,請參見GoogleIMAVideoAdPlayer中不推薦使用的方法部分。

更多資訊

有關IMA更改的更多詳細信息,請參見Google IMA Android SDK發行記錄文檔。