Overview
The Brightcove Native SDK for Android 8.0.0 or later supports the Google IMA SDK version 3.27.1. If you are using IMA advertising, there are a few things to be aware of to use this version of the IMA plugin. They include the following:
Changes in the Google IMA SDK
The Brightcove Native SDK updated the Google IMA SDK from version 3.11.2 to version 3.27.1. The most relevant changes include:
-
SdkFactory.createAdDisplayContainer()
is deprecated -
AdDisplayContainer.setPlayer(VideoAdPlayer)
is deprecated -
AdDisplayContainer.setAdContainer(ViewGroup)
is deprecated -
AdsRequest.setAdDisplayContainer(AdDisplayContainer)
is removed
For the full release, see the Google IMA Android SDK release history document.
Changes in the Brightcove IMA plugin
The Brightcove IMA plugin made several changes to be fully compatible with the new Google IMA SDK version. They include:
- Using the GoogleIMAComponent Builder
- Creating the AdDisplayContainer
- Deprecated methods in GoogleIMAVideoAdPlayer
Using the GoogleIMAComponent Builder
We recommend using the Builder to create the GoogleIMAComponent
instance. This makes it easier to configure the GoogleIMAComponent
.
googleIMAComponent = new GoogleIMAComponent.Builder(brightcoveVideoView, eventEmitter)
.setUseAdRules(true)
.setImaSdkSettings(customIMASDKSettings)
.setAdsRenderingSettings(customAdsRenderingSettings)
.setAdDisplayContainerFactory(customAdDisplayContainerFactory)
.build();
}
Creating the AdDisplayContainer
Because the Google IMA SDK removed AdsRequest.setAdDisplayContainer(...)
, the Brightcove IMA plugin now creates this automatically, using the GoogleIMAVideoAdPlayer
and the BaseVideoView
.
The plugin requires an AdDisplayContainerFactory
to create the 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();
}
Under the hood, the plugin uses the DefaultAdDisplayContainerFactory
, an AdDisplayContainerFactory
, to create the AdDisplayContainer
. The getViewContainer()
returns the BaseVideoView
passed in its constructor, and the createAdDisplayContainer
method returns:
ImaSdkFactory.createAdDisplayContainer(getViewContainer(), googleIMAVideoAdPlayer);
Add your AdDisplayContainerFactory
If you need a different implementation, you must pass your own AdDisplayContainerFactory
to the GoogleIMAComponent
Builder:
googleIMAComponent = new GoogleIMAComponent.Builder(brightcoveVideoView, eventEmitter)
.setAdDisplayContainerFactory(customAdDisplayContainerFactory)
.build();
If you want to play the Ads in a different view other than the BaseVideoView
, you can provide the DefaultAdDisplayContainerFactory
with your ViewGroup
.
googleIMAComponent = new GoogleIMAComponent.Builder(brightcoveVideoView, eventEmitter)
.setAdDisplayContainerFactory(new DefaultAdDisplayContainerFactory(myViewGroup))
.build();
Deprecated methods in GoogleIMAVideoAdPlayer
The following methods are deprecated in the GoogleIMAVideoAdPlayer
class:
Deprecated method | Use instead |
---|---|
playAd() |
playAd(AdMediaInfo) |
loadAd(String) |
loadAd(AdMediaInfo, AdPodInfo) |
stopAd() |
stopAd(AdMediaInfo) |
resumeAd() |
playAd(AdMediaInfo) |
pauseAd() |
pauseAd(AdMediaInfo) |
Notice that the replacement methods now require AdMediaInfo
. You can retrieve the current AdMediaInfo
object by calling GoogleIMAVideoAdPlayer.getCurrentAdMediaInfo()
. This will return the loaded AdMediaInfo
, or Null
.
Migrating to the IMA Plugin 8.0.0
To migrate to the Brightcove IMA Plugin 8.0.0, follow steps:
Update dependency versions
Update your app to use the following dependency versions:
- All of the Brightcove SDK dependencies set to version 8.0.0
- Use Google IMA SDK version 3.27.1
Here is an example of the build.gradle file:
//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"
...
}
Remove deprecated methods
Your current Google IMA setup might look similar to this:
AdDisplayContainer container = sdkFactory.createAdDisplayContainer();
container.setPlayer(googleIMAComponent.getVideoAdPlayer());
container.setAdContainer(brightcoveVideoView);
These three methods are deprecated and will go away.
You must now call googleIMAComponent.getAdDisplayContainer()
and it will return the AdDisplayContainer
associated with the GoogleIMAVideoAdPlayer
, or null if not available.
For details about creating the AdDisplayContainer
, see the Creating the AdDisplayContainer section.
The following method has also been removed from the Google IMA SDK:
adsRequest.setAdDisplayContainer(container);
Instead, use the AdDisplayContainer
to create an instance of the Google IMA AdsLoader
.
For details about deprecated methods and their replacements, see the Deprecated methods in GoogleIMAVideoAdPlayer section.
More information
For more details about IMA changes, see the Google IMA Android SDK release history documentation.