The IMA SDK for Android now includes the Open Measurement SDK, an industry standard developed by the IAB and designed to enable third-party viewability and verification measurement for ads served to mobile and desktop environments. To take advantage of Open Measurement, keep the following points in mind:
To use Open Measurement you must have version 3.11.0 or greater of the IMA SDK for Android. However, the sample in this guide is designed for the newest version of the SDK and includes APIs introduced in version 3.16.5.
Ads must be configured to traffic
<AdVerifications>in their VAST as per the VAST 4.1 spec if using VAST 4.1+; otherwise,
<Extension type="AdVerifications">should be used.
Refrain from covering the
AdDisplayContainerwith any overlays (transparent or opaque), since these are flagged as obstructions by the OM SDK and reduce viewability.
If your ads are trafficked through Ad Manager, configure a viewability provider for your Ad Manager network and assign that viewability provider to your line item.
To test Open Measurement using the IMA SDK, use one of the required versions of the SDK above, along with a test ad tag.
To simulate a full request from a browser, you need to include the
(dc)sdk_apis ad tag parameters. These parameters are included
automatically for mobile requests.
You should see the
<AdVerifications> returned in your VAST response.
Register video controls overlay obstructions
Video controls such as pause buttons or progress bars provide essential playback information and actions to users. On mobile, imprecise taps and user expectations have made it common practice to render large, touch-friendly controls over the media element. These controls usually fade in and out on a user tap and are not visible for the vast majority of playback time.
Below is an example of video controls rendered by the YouTube app:
When using the IMA SDK, most publishers implement these controls by adding a view above the ad display container that is mostly transparent. Usually, the controls are child elements of this view that fully occludes the underlying video player. This transparent overlay is used to capture tap events and then render the controls to users when tapped.
When ad viewability via the Open Measurement SDK is calculated, all views overlaying the media element are considered obstructions and reduce the viewability rate. In the case where a transparent tap overlay sits above the entire ad display container, it is possible for inventory to be declared completely unviewable.
The Open Measurement SDK makes provisions for video controls to be considered "friendly" obstructions that are essential to the user’s experience. Once registered as friendly, these controls are excluded from ad viewability measurement.
With IAB and MRC support, the IMA SDK introduces an API for registering these overlays with the Open Measurement SDK. These controls must be fully transparent overlays or small buttons. Any other views not related to video controls must not be registered.
|DO register||DO NOT register|
The following sample code demonstrates how to register video controls overlays on the ad display container:
myTransparentTapOverlay = (ViewGroup) rootView.findViewById(R.id.overlay); myPauseButton = (ImageButton) rootView.findViewById(R.id.pauseButton); // Substitute "myTransparentTapOverlay" and "myPauseButton" with the // elements you want to register as video controls overlays. // Make sure to register before ad playback starts. overlayObstruction = ImaSdkFactory.createFriendlyObstruction( myTransparentTapOverlay, FriendlyObstructionPurpose.NOT_VISIBLE, "Transparent overlay does not impact viewability" ); pauseButtonObstruction = ImaSdkFactory.createFriendlyObstruction( myPauseButton, FriendlyObstructionPurpose.VIDEO_CONTROLS, "Pause button" ); AdDisplayContainer displayContainer = adsLoader.getAdDisplayContainer(); displayContainer.registerFriendlyObstruction(overlayObstruction); displayContainer.registerFriendlyObstruction(pauseButtonObstruction);
When you're done with them, these obstructions can be removed by calling the following method: