What is Open Measurement?
We have integrated the OM SDK with the Pulse Android SDK to make this communication possible when a third-party ad from Pulse is displayed in your native Android application. For more information, see Pulse Android SDK integration with OM SDK.
- Publishers can provide required measurement data to all measurement providers and advertisers by accessing multiple measurement providers' SDKs collapsed into a single integration, simplifying maintenance without sacrificing functionality. Allowing such transparency can bring more demand for your inventory.
coming from the OMID API and send that data to their servers. The collected data can then be
used to calculate the viewable impressions, as defined by the Media Rating Council (MRC), and
AdVerificationselement. For more information, see Verification resources in VAST.
For more information, see official IAB documentation: Open Measurement SDK.
Pulse Android SDK integration with OM SDK
We have integrated the OM SDK version 1.2.22 with the Pulse Android SDK. To benefit from the OM SDK, upgrade to version 220.127.116.11.0 or later of our Android SDK. Collection and surfacing of impressions and viewability information is supported for normal and sponsor standard third-party ads (pre-rolls, mid-rolls, and post-rolls), which are VAST 2.0, 3.0, 4.0, and 4.1 compliant.
If you want to use the OM SDK for publishing ad events to measurement providers, you must call one of the below methods to initialize the OM SDK integration in Pulse Android SDK. The corresponding method should be called for each ad just before playing ad content otherwise ad session events will not be recorded. This notifies all involved measurement providers that the OMID ad session has started and ad view tracking will begin.
- Create OMID ad session with friendly obstructions. Friendly obstructions are any native
elements which you consider to be part of the ad, such as a close button, some logo text, or
another decoration, so you should register them as friendly obstructions to exclude them from
OmidAdSession.createOmidAdSession(pulseVideoAd, context, adView, friendlyObstructions);
- Create OMID ad session without friendly
OmidAdSession.createOmidAdSession(pulseVideoAd, context, adView);
registerAdView: Ad view is the native view that OMID should consider for viewability tracking. If the ad view changes, for example due to fullscreen expansion, you need to call this method to update the ad view reference to whatever is appropriate at that time.
addFriendlyObstructions: You should use this method to subsequently add friendly obstructions, if they appear at a later point during ad playback, which then excludes them from all ad session viewability calculations.
removeFriendlyObstructions: Remove registered friendly obstructions.
removeAllFriendlyObstructions: Remove all registered friendly obstructions.
For more information, see OmidAdSession.
- When calling
adStarted, report the player volume, with a range between 0 and 1 (default value is 1). Sending in the value ensures that the OM SDK has the correct initial player volume value.
- Notify all video listeners that the native video player volume has changed, with a range
between 0 and 1. You do this by calling the following
Device volume changes will be detected by the OM SDK.
- Notify all video listeners that the native video player state has changed. You do this by
calling the following method:
COLLAPSED: The player has been reduced from its original size. The video is still potentially visible.
MINIMIZED: The player is collapsed in such a way that the video is hidden. The video may or may not still be progressing in this state, and sound may be audible. This refers specifically to the video player state on the page, and not the state of the browser window.
NORMAL: The player's default playback size.
EXPANDED: The player has expanded from its original size.
FULLSCREEN: The player has entered fullscreen mode.
Native app integration example scenario
- An advertiser/agency uses the services of a measurement provider.
- The Pulse Android SDK is integrated with the OM SDK.
- A publisher has the Pulse Android SDK version 18.104.22.168.0 or later integrated with their native Android app.
- The publisher has a third-party ad booked in Pulse.
For brevity, not all events are included.
- *When calling
adStarted, report the initial player volume, with a range between 0 and 1 (default value is 1). This ensures that the OM SDK has the correct initial player volume value.
- **As playback progresses, the native app must also send the player volume changed event and the playback progress events (start, quartiles, paused, resumed, skipped, complete).
- ***As playback progresses, the native app must also update the ad view if there are any changes, for example due to fullscreen expansion.
Measurements reported for each ad
The following events signal to all involved measurement providers when key events and key states related to viewability calculations have occurred during an OMID ad session. The Pulse SDK integration with OM SDK signals the following ad session, user interaction, and video ad lifecycle events.
Ad session information
Measurements reported for the OMID ad session identify details for session start, finish, and any errors that occur.
sessionStart: This is always the first event fired for a session. Pulse SDK fires the event as soons as the OMID ad session has been initialized. It notifies all measurement providers that the OMID ad session has started and ad view tracking will begin. It does not imply that the ad has rendered or that the ad playback has started.
loaded: Notifies all video listeners that the player has loaded the video ad content, either fully or to the extent that it is ready to play.
impression: Notifies all measurement providers that an impression event should be recorded.
sessionError: This event is fired following ad playback, ad rendering, or other ad-related error. It notifies all measurement providers that an error has occurred during the OMID ad session, and includes the error type and message. There are two types of OMID ad session errors:
VIDEO: corresponds to
REQUEST_FAILEDPulse ad error.
GENERIC: corresponds to all other Pulse ad errors,
sessionFinished: This event is fired in case of ad completed, ad skipped, or ad failed. It notifies all measurement providers that the OMID ad session has finished and all ad view tracking will stop. It indicates that measurement resources should start clean up and handle end-of-session reporting. This is always the last event sent for an OMID ad session.
Measurements reported for user interactions include metrics for direct interactions, like clicks and view dimension changes.
click: Notifies all video listeners that the user clicked to load the ad's landing page.
geometryChange: This event is fired every time the ad container state changes so that any field of the viewport or ad view would change value from the previous report. Ad calls that signal a change in geometry are triggered every 200ms or when the dimensions of the ad change.
The following is included: percentageInView, geometry, onScreenGeometry, measuringElement, containerGeometry, onScreenContainerGeometry, viewport width and height, adView, reasons, pixel, friendlyObstructions, declaredFriendlyObstructions.
Video ad lifecycle
Measurements reported for the video ad lifecycle include metrics for tracking the video player and ad events.
start: Notifies all video listeners that the video player has started playing the video ad.
firstQuartile: Notifies all video listeners that the video ad played continuously for at least 25% of the total duration.
midpoint: Notifies all video listeners that the video ad played continuously for at least 50% of the total duration.
thirdQuartile: Notifies all video listeners that the video ad played continuously for at least 75% of the total duration.
complete: Notifies all video listeners that the video ad played to the end for 100% of the total duration.
pause: Notifies all video listeners that video ad playback has paused due to user interaction.
resume: Notifies all video listeners that video ad playback has resumed (after being paused) due to user interaction.
skipped: Notifies all video listeners that video ad playback has stopped due to user skip interaction.
volumeChange: Notifies all video listeners that the native video player and/or device volume has changed, with a range between 0 and 1.
playerStateChange: Notifies all video listeners that the native video player state has changed, generally to resize. This includes moving from non-fullscreen to fullscreen state.
Pulse Android SDK event limitations
- The following events are not tracked and signaled by the Pulse Android SDK even though they
are supported by the OM SDK:
- For the
loadedevent, autoplay is always sent as true.
Verification resources in VAST
This provides details around the information that measurement providers should load in the
AdVerifications element, based on what is supported in the Pulse Android SDK
integration with OM SDK.
AdVerificationselement. For example:
Earlier versions: VAST 2.0, 3.0, 4.0
<Extension type="AdVerifications">in the
AdVerificationsschema is the same as in VAST 4.1. For example:
AdVerificationselement can contain one or more
||Contains the resources and metadata required to execute third-party measurement code
to verify creative playback for a single measurement provider. Multiple
||The measurement provider may provide URIs for tracking events relating to the
execution of their code during the ad session. One event type is currently supported:
Defines the event to be tracked by the measurement provider. Contains a CDATA-wrapped
URI to the tracking resource for the event specified using the
||Contains a CDATA-wrapped string intended for bootstrapping the verification code and providing metadata about the current impression. The format of the string is up to the individual measurement provider.||-|