Overview
The Brightcove Native SDKs now support using the Open Measurement SDK (OM SDK). The OM SDK, integrated with the Google IMA, allows you to use third-party tools for ad measurement and verification.
The Open Measurement SDK considers all views overlaying the ad media element to be obstructions and reduces ad viewability. Video controls may be considered "friendly" obstructions, but must be registered with the OM SDK to be excluded from ad viewability measurement.
iOS
The Brightcove Native SDK for iOS supports using the OM SDK. For more information about implementing third-party ad measurement, see the Open Measurement in the IMA SDK for iOS document.
UI overlays
If you are using UI control elements which overlay the IMA ad view, then you'll want to register these with the OM SDK. For details, see the Registering Ad Overlays section of the Native SDK for iOS reference.
IMA settings
By default, the Brightcove Native SDK for iOS sets the playerType
and playerVersion
properties with the following values:
imaSettings.playerType = @"bcov/ios-sdk-player";
imaSettings.playerVersion = [BCOVIMAComponent versionIdentifier];
You may want to override these values. One example would be to get advertising metrics reported directly from Google IMA. To use your own values, set the following on the imaSettings
object:
imaSettings.playerType = @"your-player-type";
imaSettings.playerVersion = @"your-player-version"
For code details about using IMA ads with the Native SDK for iOS, see the BasicIMAPlayer sample.
Android
The Brightcove Native SDK for Android supports using the OM SDK. For more information about implementing third-party ad measurement, see the Open Measurement in the IMA SDK for Android document.
UI overlays
If you are using UI control elements which overlay the IMA ad view, then you'll want to register these with the OM SDK. To do this, your code would look something like this:
public class MainActivity extends BrightcovePlayer {
// ...
private AdDisplayContainer adDisplayContainer;
private View adOverlayView;
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
adOverlayView = findViewById(R.id.ad_overlay);
setupGoogleIMA();
// ...
}
private void setupGoogleIMA() {
// Show adOverlayView
eventEmitter.on(EventType.AD_BREAK_STARTED, (event) -> {
adOverlayView.setVisibility(View.VISIBLE);
});
// Hide adOverlayView
eventEmitter.on(EventType.AD_BREAK_COMPLETED, (event) -> {
adOverlayView.setVisibility(View.GONE);
});
// Create ImaSdkFactory
final ImaSdkFactory sdkFactory = ImaSdkFactory.getInstance();
eventEmitter.on(GoogleIMAEventType.ADS_REQUEST_FOR_VIDEO, new EventListener() {
@Override
public void processEvent(Event event) {
// Create a container object to register the friendly obstructions.
adDisplayContainer = sdkFactory.createAdDisplayContainer();
adDisplayContainer.registerVideoControlsOverlay(adOverlayView);
// ...
}
});
eventEmitter.on(EventType.COMPLETED, (event) -> {
if (adDisplayContainer != null) {
// Unregister the friendly obstructions
adDisplayContainer.unregisterAllVideoControlsOverlays();
}
});
}
}
IMA settings
By default, the Brightcove Native SDK for iOS sets the playerType
and playerVersion
properties with the following values:
imaSdkSettings.setPlayerType("bcov/and-sdk-player");
imaSdkSettings.setPlayerVersion("<replaced with current sdk version>");
You may want to override these values. One example would be to get advertising metrics reported directly from Google IMA. To use your own values, set the following on the imaSdkSettings
object:
ImaSdkSettings imaSdkSettings = imaSdkFactory.createImaSdkSettings();
imaSdkSettings.setPlayerType("your-player-type");
imaSdkSettings.setPlayerVersion("your-player-version");
GoogleIMAComponent googleIMAComponent = new GoogleIMAComponent(brightcoveVideoView, eventEmitter, imaSdkSettings);
For code details about using IMA ads with the Native SDK for Android, see the AdRulesIMASampleApp sample.