Pulse SDK
Getting started
This SDK allows you to integrate ad serving from Pulse into your HTML5 video player application using a simple event flow.
If you want your player to handle ad playback, use the OO.Pulse.Session interface.
If you want to use our ad player, use the OO.Pulse.AdPlayerController object.
With the ad player
The Pulse ad player is an hybrid HTML5/Flash player that will take care of displaying the ads for you. First, set your host using setPulseHost, then create an OO.Pulse.Session using createSession. You can now create your ad player by calling createAdPlayer.
When the content is about to start, call startSession on the ad player object, passing along your implementation of the OO.Pulse.AdPlayer.Listener.
Check out our tutorial to learn more about the use of the SDK.
For a sample integration, have a look at the video.js bridge.
Without the ad player
With OO.Pulse, first set your host using setPulseHost, then create an OO.Pulse.Session using createSession, and finally call startSession on the returned OO.Pulse.Session with your OO.Pulse.SessionListener implementation.
This listener handles all the communication between the video player and the OO.Pulse.Session.
When it is time to play a video ad, your OO.Pulse.SessionListener is sent an OO.Pulse.VideoAd through the startAdPlayback method.
Additionally, if you notify the SDK when content playback has been paused by calling contentPaused, you may receive a pause ad to display through showPauseAd. When content playback resumes, notify the session by calling contentStarted.
Note: At the moment, the Pulse SDK only supports linear ads, pause ads and image overlay ads.
Changelog
Version 2.1.24.8.0 - August 28, 2024
FIXED
- The 'src' parameter of the AdPlayer video element was not properly cleared when a user clicked "close"/"skip" to close ad.
Version 2.1.24.7.0 - July 10, 2024
CHANGED
- Changed request parameter name for maximum linear break duration, from 'tbbl' to 'maxd'.
Version 2.1.24.2.0 - February 21, 2024
FIXED
- The
[TIMESTAMP]
macro is now properly replaced in third party VAST requests.
Version 2.1.24.1.0 - January 24, 2024
ADDED
- Added support for
OO.Pulse.RequestSettings.rtbDcid
, which allows you to override the RTB device type detected in Pulse and request ads for a specific RTB device type when using Pulse Programmatic (SSP).
Version 2.1.23.11.0 - November 29, 2023
ADDED
- Added support for
OO.Pulse.RequestSettings.rtbPid
that anonymizes the standard PID and, if set, will be sent in bid requests to Demand Side Platforms instead of the standard PID, to ensure the privacy of your end users' information when using Pulse Programmatic (SSP).
Version 2.1.23.1.1 - January 18, 2023
ADDED
- Added support for
[TIMESTAMP]
macro, where the macro is replaced with the date and time using the formatting conventions of ISO 8601.
Version 2.1.23.1.0 - January 9, 2023
CHANGED
- Changed how the Pulse SDK handles VAST responses containing more than one Ad. In these cases the first Ad in the response will now be used, instead of having the SDK simply reject that response.
Version 2.1.22.11.0 - November 23, 2022
- Maintenance release.
Version 2.1.22.8.0 - August 24, 2022
CHANGED
- Maintenance release (added hls.js as a dependency)
Version 2.1.22.7.0 - Jul 25, 2022
ADDED
OO.Pulse.RequestSettings.minLinearBreakDuration
allows you to specify the minimum duration in seconds for linear ad breaks, when the time-based breaks feature is enabled for your account.
Version 2.1.22.6.0 - June 9, 2022
FIXED
- Fixed issue where MP4 assets were moved to the bottom of list when selecting what media file to be played.
Version 2.1.22.5.0 - May 12, 2022
ADDED
- Minor addition to debug logging, the time it takes for an ad to start playing (from the time it was triggered) is now printed out.
Version 2.1.22.1.0 - January 27, 2022
FIXED
- When using passback ads, first party viewable impression tracking was sometimes triggered for ads that were never shown.
Version 2.1.21.10.0 - October 19, 2021
ADDED
- Added support for tracking the ViewUndetermined event. This event will be tracked in cases where the SDK is unable to measure viewability on an ad.
Version 2.1.21.8.0 - August 17, 2021
FIXED
- StartAdTimeout parameter in ticket inline extensions node can now be parsed by the SDK
Version 2.1.21.7.0 - July 1, 2021
FIXED
- 3GPP file format does not work in chrome browser, therefore we are not including 3GPP files for playback in chrome.
Version 2.1.21.6.1 - June 22, 2021
ADDED
- Support for tracking Viewable Impression events. Contact your Account Manager to enable this feature.
- Added parameter
enableViewability
in theRequestSettings
that enables client side viewability measurement (required for viewable impression tracking to work). - Added parameter
viewabilityBenchmark
in theRequestSettings
that enables a custom viewability benchmark to be used.
- Added parameter
Version 2.1.21.5.0 - May 6, 2021
FIXED
- If a CORS request with credentials fails, one more request is made with out including credentials
Version 2.1.21.4.0 - April 30, 2021
ADDED
- Support for HLS ad playback in Pulse Adplayer. In order to prefer hls media file to play over other available media files,
preferredMediaFormat
in theRequestSettings
should be set to HLS. Also, first you will need to have HLS encoding template and profile set for your account. Contact your account manager for enabling that.
Version 2.1.21.1.0 - January 28, 2021
ADDED
- Below attributes can now be parsed by the SDK:
- Advertiser Id
Codec
Version 2.1.20.10.0 - October 21, 2020
ADDED
-
Preload next ad is now supported, enabling you to preload the second ad and any subsequent ads in an ad break. The first ad in an ad break cannot be preloaded.
-
Preloading is handled automatically by the AdPlayer, once the feature has been enabled for the account. NOTE: This feature is currently not supported in Safari & Safari mobile when using the AdPlayer.
-
To clients not using the Adplayer: To preload next ad, implement the
OO.Pulse.SessionListener.preloadNextAd
method. WhenOO.Pulse.VideoAd.adPositionChanged
is called, SDK will triggerpreloadNextAd
if all of the conditions below are fulfilled:- Preload next ad feature is enabled for your Pulse account. Contact your Account Manager if you want to use this feature.
- There are more ads to be played in the current ad break.
- Time to preload next ad has been reached. This means that the remaining duration of current ad is less than or equal to what has been configured for preloading next ad.
- preloadNextAd has not already been triggered for the ad.
-
Version 2.1.19.12.1 - December 19, 2019
ADDED
- Added stricter validation of
accountCustomParameters
values.
Version 2.1.19.12.0 - December 12, 2019
ADDED
- A new parameter,
accountCustomParameters
, added toContentMetadata
.
Version 2.1.19.11.0 - November 19, 2019
FIXED
- In some cases VPAID ads were not initialised with the correct height value.
Version 2.1.19.9.0 - September 27, 2019
ADDED
- A new parameter,
midrollBreakNumber
, is available in theRequestSettings
, allowing you to override the number of the midroll ad break targeted by the ad request.
Version 2.1.19.8.0 - August 28, 2019
FIXED
- The VPAID container 'id' did not follow the same naming convention as the other components making it difficult to access that element in the DOM.
- Custom
identifier
feature did not work as intended.
ADDED
- A new parameter,
breakNumber
, is available in theRequestSettings
, allowing you to override the number of the ad break targeted by the ad request.
Version 2.1.19.6.1 - June 26, 2019
FIXED
- Minor change to VPAID handling: we will no longer call 'stopAd' on VPAIDs that have dispatched an AdError event.
Version 2.1.19.6.0 - June 11, 2019
FIXED
- A more comprehensive fix to the issue detailed in the May 29 release note, see below.
Version 2.1.19.5.1 - May 29, 2019
FIXED
- Fixed issue where the AdPlayer could freeze when using lazy loaded ads and enabling Firefox's 'Content Blocking' feature.
Version 2.1.19.5.0 - May 20, 2019
FIXED
- Added additional check to avoid rare issue where video ads could sometimes play in the background.
Version 2.1.19.4.0 - April 2, 2019
ADDED
- IPTV spots can now be parsed and handled by the SDK.
Version 2.1.19.1.0 - January 16, 2019
ADDED
- New timeout parameters, are available in the
RequestSettings
, which allows you to override:- [
startAdTimeout
]: The maximum amount of time the player or integration should wait for the ad to start playback before reporting inventory. - [
thirdPartyTimeout
]: The maximum amount of time the player or integration should wait to unwrap and load a third party ad before reporting inventory. - [
totalPassbackTimeout
]: The maximum amount of time the passback player should wait to find a working ad in the passback chain before moving to the last ad in the chain or reporting inventory.
- [
Version 2.1.18.23.0 - November 12, 2018
FIXED
- It is no longer possible to click through an ad before it has started playing (and tracked an impression).
Version 2.1.18.12.0 - June 13, 2018
ADDED
- New parameters (
enableGdpr
,gdprConsentString
andgdprPersonalDataIncluded
), are available in theRequestSettings
, to enable IAB's GDPR consent framework, and pass in the necessary parameters with the ad requests.
Version 2.1.18.11.0 - May 24, 2018
ADDED
- A new parameter,
Live
, is available in theRequestSettings
, enabling you to turn off certain tracking, secondary lookup requests, real-time bidding requests, and/or cookie syncing for a live event. This ensures the high volumes of ad delivery and subsequent tracking to go smoothly while increasing your revenue and viewer retention.
Version 2.1.18.4.0 - February 12, 2018
FIXED
- Fixed a bug where, on mobile, if the first ad in the passback chain fails, then the next ad would not be displayed.
Version 2.1.18.3.0 - January 30, 2018
ADDED
- A new parameter,
preferredMediaFormat
, is available in theRequestSettings
, enabling you to specify the media format the Ad Player should preferably select when showing ads. Note that maximum bit rate has precedence in the ad selection, and that the preferred media format is a secondary filter.
FIXED
- The 'mute' flag of the Ad Player's video element is now set according to the 'setAutoplayAttributes' setting.
Version 2.1.18.1.1 - January 11, 2018
FIXED
- With any
seekMode
exceptIGNORE
set, the SDK would crash when seeking past undisplayed overlay ads.
Version 2.1.18.1.0 - January 9, 2018
ADDED
- A new parameter,
seekMode
, is available in theRequestSettings
, giving you the option to enforce showing certain unplayed mid-roll ad breaks, even when the viewer seeks or scrubs past them.
FIXED
PAUSE_AD_PLAYER_HIDDEN
no longer fires multiple times when no pause ad was shown.
Version 2.1.17.25.0 - December 15, 2017
ADDED
- Added parameter
disableFlash
tosetPulseHost
. This fixes an issue where the Flash Requester module would get loaded, even when using the HTML5_ONLY rendering mode, for integrations callingcreateSession
beforecreateAdPlayer
.
FIXED
- Calling
mute
andunmute
on a newly created Ad Player, before any ad starts playing, now properly sets the volume.
Version 2.1.17.24.1 - December 6, 2017
FIXED
- Flash modules (Flash Requester and Flash AdPlayer) are no longer loaded when using the HTML5_ONLY rendering mode.
Version 2.1.17.24.0 - November 29, 2017
ADDED
- A new function,
getAutoplayMode
, helps you determine how to support automatic playback of ads in your integration.
FIXED
preload
now callsready
if the session is empty.
Version 2.1.17.22.0 - November 1, 2017
FIXED
- Clickthrough no longer triggers on mobile browsers when scrolling is performed.
- Clickthrough is tracked properly when a midroll ad displays after an overlay ad.
Version 2.1.17.21.2 - October 25, 2017
ADDED
-
When creating a new ad player through
createAdPlayer
, thesetAutoplayAttributes
setting makes the ad player create its<video>
element with theautoplay
andmuted
attributes set. This can help you get around autoplay restrictions in recent versions of some web browers. -
Similarly, the
playInline
setting makes the ad player set theplaysinline
attribute. This lets ads play on mobile browsers without going into fullscreen mode.OO.Pulse.createAdPlayer({ adContainerElement: document.getElementById('my-id'), setAutoplayAttributes: true, playInline: true });
FIXED
- Ads which don't start due to autoplay restrictions are no longer subject to playback timeouts.
Version 2.1.17.20.0 - October 12, 2017
ADDED
-
The HTML5 Ad Player provides three new events, which enable you to add functionality before or after an ad break, or before an ad starts playing:
By listening to these events and calling the
defer
function available in each of them, the Ad Player waits to continue until the new functionality has finished. For example, to show a trailer, after the first ad:var startPlayingAd = null; myAdPlayer.addEventListener(OO.Pulse.AdPlayer.Events.LINEAR_AD_STARTING, function(data) { startPlayingAd = data.defer(); // Play a trailer after first ad: if (data.adPosition === 2) { // Logic to play your trailer videoPlayer.playTrailer(videoTrailer); } }); // .. some time later, when the trailer has completed, resume normal ad playback: startPlayingAd(); startPlayingAd = null;
Additionally,
LINEAR_AD_STARTING
andAD_BREAK_FINISHED
can inform you when the Ad Player is between a sponsor ad and a regular ad:myAdPlayer.addEventListener(OO.Pulse.AdPlayer.Events.LINEAR_AD_STARTING, function(data) { if(data.isBumperPosition) { console.log('Between a sponsor and ad'); } });
-
preload
allows you to request all third party ads before starting the session, rather than loading these types of ads during their designated ad break.- Note: use with caution, because impressions may be tracked by the third party as soon as they are loaded.
var session = OO.Pulse.createSession({ }, { }); // Ready any third party ads received before starting the session session.preload(function() { myAdPlayer.startSession(session); });
-
The event
AD_BREAK_EMPTY
fires when an ad break is discarded because it contains no playable ads.
FIXED
- Improved reliability of
mute
andunmute
, especially when using a shared element. - Impression is no longer tracked when ad autoplay is blocked by the browser.
Version 2.1.17.19.1 - September 26, 2017
CHANGED
- If the currently selected ad is an HTML5 video ad,
play
returns the result of callingplay
on the<video>
element in use. Generally, this is aPromise
, which can aid in detecting whether autoplay has failed.
FIXED
Version 2.1.17.19.0 - September 20, 2017
ADDED
- A new function,
canAutoplay
, programatically determines whether or not the shared element feature of the ad player should be used.
Version 2.1.17.18.0 - September 13, 2017
ADDED
LINEAR_AD_STARTED
now receives an additional parameter, calledselectedMediaFile
, referencing the media file selected for playback for the started ad.
CHANGED
- Modified VPAID2 implementation to increase compatibility with VPAID2 ads.
Version 2.1.17.17.0 - August 31, 2017
ADDED
-
getContainer
allows you retrieve the container element which was passed to thecreateAdPlayer
call that created the ad player. -
getBreakPosition
allows you determine the position of an ad break.myAdPlayer.addEventListener(OO.Pulse.AdPlayer.Events.AD_BREAK_FINISHED, function(data) { var adBreak = data.adBreak; if(adBreak.getBreakPosition() === OO.Pulse.AdBreakPosition.PREROLL) { console.log('Prerolls finished'); } });
-
FLASH_AD_BLOCKED
is fired when Flash is blocked or unavailable, and only Flash based assets are available for an ad.
CHANGED
AD_BREAK_FINISHED
now receives the sameOO.Pulse.AdBreak
parameter asAD_BREAK_STARTED
.- Third party VAST tickets with
NonLinearAds
elements are no longer rejected, as long as they contain no actualNonLinear
elements. This allows wrappers with nonlinear tracking to be read by the SDK. Note that third party nonlinear ads are still not supported, and will not be displayed.
Version 2.1.17.16.0 - August 8, 2017
FIXED
- Using a responsive video player could have resulted in some VPAID 2.0 ads being rendered with a width and/or height of 0.
- Fixed a bug where, if a VPAID 2.0 ad tried to pause its video after trying to play it, but before the video started, the video would not pause.
Version 2.1.17.15.0 - August 1, 2017
CHANGED
- Third party asset selection has been improved to ensure that VPAID ads are always selected if present, and otherwise the highest bitrate media file is always selected, taking bandwidth considerations into account.
Version 2.1.17.14.1 - July 18, 2017
ADDED
- A new
RequestSettings
parameter,useVASTSkipOffset
, allows you to select whether the insertion policy configured in Pulse, or the skip information present in VAST tickets, is used to determine the skip behaviour of third party ads.
Version 2.1.17.12.5 - June 20, 2017
FIXED
- Make sure that VPAID 2.0 ads that do not clean up their assets properly are not able to play sound after they've dispatched
AdStopped
and content has started.
Version 2.1.17.12.2 - June 14, 2017
CHANGED
- In order to prevent false positives, if a VPAID 2.0 ad has already fired the
AdImpression
event, the ad player will not fireAD_AUTOPLAY_BLOCKED
.
Version 2.1.17.12.1 - June 13, 2017
CHANGED
- If the ad player's size changes due to a page's responsive design, we will notify VPAID 2.0 ads so that they can resize their content accordingly.
Version 2.1.17.12.0 - June 13, 2017
FIXED
- Fixed an issue where midroll ad breaks could repeat multiple times, depending on their length.
Version 2.1.17.11.2 - June 9, 2017
ADDED
- VPAID 2.0 ads now have their volume properly changed when calls to
setVolume
are made.
CHANGED
- Previously, a new pause ad would be automatically requested after one had been shown. However, if no pause ad was initially shown, no new request would be made. With this release, pause ads are always requested on content play, unless the insertion point filter does not allow it.
Version 2.1.17.10.1 - May 23, 2017
ADDED
- A new
RequestSettings
parameter,enforceCacheBusting
, allows you to control whether or not a cache busting parameter should be added to VAST 2.0 tracking URLs which do not include the[CACHEBUSTING]
macro yet. When set tofalse
, this parameter is not added.
Version 2.1.17.10.0 - May 15, 2017
CHANGED
- When debug logging is enabled, all explicit error messages will be marked with a red error badge.
- Debug log messages overall have been tweaked to improve readability.
FIXED
- Improved compatibility with MOAT-wrapped VPAID 2.0 ads as well as ones from other providers.
- Unsupported overlay asset types would cause the ad player to crash.
Version 2.1.17.9.3 - May 10, 2017
FIXED
- Improved compatibility with IAS-wrapped VPAID 2.0 ads.
Version 2.1.17.9.0 - May 4, 2017
ADDED
-
Added the following optional
SessionListener
callbacks:firstQuartileReached
: called when an ad has reached 25% of its total durationmidpointReached
: called when an ad has reached 50% of its total durationthirdQuartileReached
: called when an ad has reached 75% of its total duration
-
Added the following ad player events:
LINEAR_AD_FIRST_QUARTILE
: fired when an ad has reached 25% of its total durationLINEAR_AD_MIDPOINT
: fired when an ad has reached 50% of its total durationLINEAR_AD_THIRD_QUARTILE
: fired when an ad has reached 75% of its total durationLINEAR_AD_IMPRESSION
: fired when impression is tracked on a linear ad
CHANGED
- If all media files for an ad are filtered out due to their bitrate being too high, the media file with the lowest bitrate will be selected for playback.
FIXED
- Fixed an issue where VPAID 2.0 ads which tried to read the video element's duration before a video had been loaded would crash.
Version 2.1.17.8.0 - April 20, 2017
FIXED
- Improved VPAID 2.0 compatibility.
Version 2.1.17.6.0 - March 30, 2017
ADDED
- Basic support for parsing VAST 4.0 tickets.
- Added a second signature for
createAdPlayer
which takes a single object, with the parameters provided as key/value pairs. This is done to reduce the length of the signature as new parameters are added. If the first argument is an instance ofHTMLElement
, the previous signature will still be accepted.
ADDED
-
Ad player instances can now be given an identifier upon creation, so each one can be identified in
adPlayerReady
callbacks.// Get notified of ad player creations OO.Pulse.adPlayerReady(function(adPlayer)) { if(adPlayer.getIdentifier() === 'my-player') { // this is the player created below } else { // this is some other player } }; // Create a named ad player which can be identified above OO.Pulse.createAdPlayer({ adContainerElement: document.getElementById('my-id'), identifier: 'my-player' });
Version 2.1.17.5.1 - March 20, 2017
CHANGED
- Some VPAID 2.0 ads could change the styling of the ad player's
video
element, causing unexpected inconsistencies such as the video area being smaller than that of the content player. - Improved VPAID 2.0 ad compatibility.
Version 2.1.17.5.0 - March 10, 2017
FIXED
- Under some circumstances, very large ad responses could fail to play back in Safari.
Version 2.1.17.4.2 - February 28, 2017
CHANGED
- The initial bandwidth detection is now performed over HTTPS to ensure it is not blocked by the browser due to mixed content restrictions.
Version 2.1.17.4.1 - February 22, 2017
CHANGED
- Automatic bandwidth detection is now performed as soon as the SDK is loaded, which can improve the quality of assets returned and prevent higher quality third party assests from being exluded from selection.
Version 2.1.17.4.0 - February 21, 2017
FIXED
- Click interactions on certain VPAID 2.0 ads that did not create their own elements would not work properly.
Version 2.1.17.3.0 - February 7, 2017
ADDED
- A callback to customize the ad player behaviour has been introduced, allowing you to implement the method by which HTML5 video ads are assigned to the relevant
<video>
element. This can be helpful when merely setting thesrc
attribute of the element is not enough.
For more information, please refer to the documentation for createAdPlayer
.
CHANGED
- The Flash module now outputs log messages to the console when the
pulse_debug=true
request parameter is used, orOO.Pulse.debug
is set totrue
in the console.
FIXED
- Additional VPAID 1.0-related issues resolved.
Version 2.1.17.2.4 - February 1, 2017
FIXED
- Some internal state could be reset when reloading the SDK script file on a page where it was previously loaded.
- On mobile devices, when the first ad in a break timed out while loading its media file, it could cause playback failure for the remaining ads in the break.
Version 2.1.17.2.3 - January 31, 2017
FIXED
- VPAID ads with multiple sections of video would stop playing after the first video completed.
Version 2.1.17.2.1 - January 26, 2017
FIXED
- Under some very specific conditions, ads with passback sources would show a black screen instead of displaying the ad asset.
- Skipping multiple ads would sometimes result in a black screen and no content playback.
Version 2.1.17.2.0 - January 25, 2017
ADDED
- Added the
ignoreSecure
parameter tosetPulseHost
; when set totrue
, HTTP tracking URLs will be allowed even when the Pulse host uses HTTPS.
Version 2.1.17.1.1 - January 19, 2017
CHANGED
- Revamped the way VPAID 2.0 ads are played in order to increase the number of compatible ads.
- If a VPAID 2.0 ad creates its own
<video>
element, and the ad player detects that autoplay on such an element was blocked (common on mobile devices), we will fireAD_AUTOPLAY_BLOCKED
.
Version 2.1.17.1.0 - January 17, 2017
CHANGED
- Reject VAST tickets containing multiple creatives as unsupported.
- Allow mixed source assets (such as HTTPS assets on an HTTP page) in the Flash ad player module.
FIXED
- Some VPAID ads' own skip buttons would not function properly.
- VPAID ads which were loaded, but did not start playing on time, would freeze content playback.
Version 2.1.16.26.1 - December 28, 2016
FIXED
- Fixed an issue where skipping VPAIDs would result in playback being blocked.
Version 2.1.16.25.3 - December 22, 2016
CHANGED
- When using the ad player, the duration of an ad will be read from the selected media file rather than the VAST ticket.
Version 2.1.16.24.2 - December 8, 2016
FIXED
- TypeError was sometimes thrown when calling stopSession.
Version 2.1.16.24.1 - December 7, 2016
FIXED
- Add missing impression tracking to overlay ads.
Version 2.1.16.24.0 - December 1, 2016
FIXED
- Fixed issue with a potential loss of Pulse creative-level tracking events after loading a third party ad.
Version 2.1.16.23.1 - November 23, 2016
FIXED
- The ad interaction event was not tracked properly on pause ads.
Version 2.1.16.23.0 - November 15, 2016
FIXED
- The Flash VPAID player could throw errors when the setVolume API was used before the ads were ready.
Version 2.1.16.22.1 - November 10, 2016
ADDED
- Automatic bandwidth detection now allows the SDK to select the best media files to display (if no
maxBitRate
is provided in the request settings), depending on a user's connection bandwidth.
Version 2.1.16.22.0 - November 7, 2016
ADDED
- The Pulse SDK now automatically displays companion banners linked to your linear ads, if HTML div(s) with the appropriate id tag(s) are found on the page. No additional configurations in your integration are necessary to activate this functionality. Note that you have to have companion banner ads available in your Pulse account.
mute
andunmute
APIs: mute/unmute the ad playergetVolume
returns the current ad player's volume
Version 2.1.16.21.0 - October 25, 2016
FIXED
openClickthrough
is only called if the clickthrough URL to open is not null.- Catch internal passback exceptions that could hang the SDK.
Version 2.1.16.20.5 - October 12, 2016
FIXED
- Parser discarded ticket if ad had a clickTracking URL but no clickThrough URL.
Version 2.1.16.20.2 - October 4, 2016
FIXED
- Improved API logging. Log messages are sent out for common API calls to spot integration problems.
Version 2.1.16.20.0 - October 3, 2016
FIXED
- Catch all Javascript VPAID exceptions to avoid crashes.
Version 2.1.16.19.2 - September 26, 2016
ADDED
- Support for ad preview: ad preview allows you to preview the ad you want (through its ad ID) and make the Pulse ad player display it as a preroll, without doing any tracking. There are two ways of doing it.
- Adding
pulse_preview=the-pulse-ad-id-you-want-to-preview
to the URL of your page with the ad ID you would like to preview. - Using the new request setting
pulse_preview
with the ad ID you would like to preview.
- Adding
Version 2.1.16.19.1 - September 21, 2016
FIXED
- VPAID ad sometimes fails because we try to play it as a video file.
Version 2.1.16.19.0 - September 20, 2016
FIXED
- Correctly track pause ads impressions.
- Catch local storage exceptions thrown when browsing in private mode.
Version 2.1.16.18.1 - September 15, 2016
ADDED
- Image overlay support: the ad player is now able to display overlay banners on top of the content. The overlay div can be styled by creating CSS rules on the
pulse-overlay
class and can be programmatically accessed through thegetOverlayDiv
API. - The following events were added:
CHANGED
- Errors which occur during ad requests, including errors requesting and parsing third party VAST tickets, are now logged in debug mode.
Version 2.1.16.18.0 - September 7, 2016
ADDED
- Added the
SESSION_STARTED
event, which fires when the first preroll starts playing, if prerolls are available, or when the content first starts playing, if prerolls are not available.
Version 2.1.16.17.0 - August 22, 2016
ADDED
- To enable debug logs from the Pulse SDK, you can now add
pulse_debug
to your page's query string parameters. For example,mysite.com/mypage?pulse_debug
will activate debug onmysite.com/mypage
.
FIXED
- Fixed an issue in MS Edge/IE 11 where two ad breaks containing Flash ads could not played in a row (the second one would fail).
- Ignore comments in VAST tickets. This could cause issues when parsing VAST wrapper tickets.
Version 2.1.16.16.0 - August 10, 2016
FIXED
- Enforce a timeout on VPAID 2 ads that won't fire the
adStopped
event in time. - Hide the iframe used to display VPAID 2 ads. It could cause display problems with some ads.
Version 2.1.16.15.0 - August 1, 2016
ADDED
-
Session extension : new method
extendSession
on the Pulse session object. Session extension can be used to dynamically add new ads in a session, with the same API ascreateSession
.//This call can be done anytime while the content is playing //Let's add a midroll at 50 seconds playback myRequestSettings.linearPlaybackPositions = [50]; myExistingSession.extendSession(myContentMetadata, myRequestSettings, function(){ console.log("Session extended!"); });
FIXED
- Added a black background to the video element used to play ads so that ads with a different aspect ratio than the content display properly.
- Catch exceptions coming from VPAID ads when they are being stopped.
- Do not hide the HTML5 video used by the ad player when it is being shared with the content player.
Version 2.1.16.14.6 - July 19, 2016
CHANGED
- Add additional safeguards to prevent errors due to misbehaving VPAID2 ads.
Version 2.1.16.14.4 - July 15, 2016
CHANGED
- Do not reject VAST3 companion ads with no
required
attribute.
FIXED
- Progress tracking events would not merge properly under some circumstances. Now fixed.
- Fixed an issue where Flash VPAIDs could be stopped before performing their
AdVideoComplete
logic.
Version 2.1.16.14.1 - July 14, 2016
CHANGED
- Ad clickthrough is now triggered by listening for the
touchend
event on mobile devices.
Version 2.1.16.14.0 - July 12, 2016
ADDED
- Support for pause ads through the
PauseAd
interface.
FIXED
- Errors will no longer be thrown if you notify the session of content events after a session request fails.
- Ad objects provided in
LINEAR_AD_STARTED
events will no longer have their properties cleared when the ads have finished.
Version 2.1.16.13.0 - June 27, 2016
FIXED
- Properly fire the
LINEAR_AD_PAUSED
event when exiting fullscreen on iOS.
ADDED
- New
AD_SESSION_FINISHED
event, fired when both the content and the postrolls are done playing.
Version 2.1.16.12.0 - June 13, 2016
FIXED
- Accept third-party VPAID VAST tickets with no impression tracking URLs.
- Fixed a bug where empty adParameters in VAST tickets were not correctly parsed.
Version 2.1.16.11.0 - June 2, 2016
ADDED
-
Support for protocol-relative URLs in
OO.Pulse.setPulseHost
. -
A DOM event
pulseready
is now fired when the Pulse SDK is ready to be used. This event can be useful when the SDK is loaded dynamically.document.addEventListener('pulseready', function(){ console.log("The Pulse SDK is ready \\o/"); //OO.Pulse can now safely be used OO.Pulse.createSession(...); });
Version 2.1.16.10.3 - May 23, 2016
ADDED
- Full passback support in the Pulse session API: if
adFailed
is called, a new passback ad will be played if available. OO.Pulse.RequestSettings.maxLinearBreakDuration
allows you to specify the maximum duration of linear ad breaks. You can also configure this by means of Pulse Manager insertion policies.
Version 2.1.16.10.0 - May 16, 2016
FIXED
- Fixed incorrect timeSpent tracking URL.
Version 2.1.16.9.1 - May 12, 2016
FIXED
- Fixed a bug where
startContentPlayback
was never called under certain circumstances.
Version 2.1.16.9.0 - May 10, 2016
FIXED
- The
Pulse.SessionListener
will no longer receive astartAdBreak
call if there are no playable ads in the ad break.
Version 2.1.16.8.1 - April 20, 2016
ADDED
- Added a Flash module for third party VPAID ticket requests which fail without proper CORS configuration.
Version 2.1.16.8.0 - April 18, 2016
ADDED
- Added
OO.Pulse.adPlayerReady
. It allows you to be informed when an ad player is ready. This is useful, for example, when creating ad player plugins or skins. - New skin div in the ad player! Call
OO.Pulse.AdPlayerController.getSkinElement
to get the div, then place your custom ad UI inside.
CHANGED
- Bugfix: VPAID 2.0 ads could still be loaded despite being cancelled on very slow connections.
- Bugfix: SHOW_SKIP_BUTTON event was not fired.
Version 2.1.16.7.0 - April 6, 2016
CHANGED
- Bugfix: VPAID 2 creatives could cause Microsoft Edge and Safari on iOS to hang under certain conditions.
- Bugfix: the ad position given by
OO.Pulse.SessionListener.startAdPlayback
was undefined.
Version 2.1.16.5.0 - March 23, 2016
The OO.Pulse.AdPlayer
object allows you to easily integrate Pulse with your video player.
CHANGED
-
The interface method
OO.Pulse.SessionListener.startAdBreak
was changed to pass an object conforming to theOO.Pulse.AdBreak
interface.startAdBreak: function(adBreak) { this.currentAdBreak = adBreak; ... }
ADDED
-
The
OO.Pulse.AdPlayer
object allows you to easily integrate Pulse with your video player. The ad player handles all the ad playback and supports video ads, VPAID 1.0 and VPAID 2.0 linear ads.//Create a Pulse session and an ad player. var session = OO.Pulse.createSession(requestSettings, contentMetadata); var adPlayer = OO.Pulse.createAdPlayer(adContainerDiv, uiOptions); //When the content starts adPlayer.startSession(session, myAdPlayerListener);
-
The
OO.Pulse.AdBreak
interface allows you to get the total and remaining number of playable ads in an ad break.startAdPlayback: function(ad, timeout) { var currentAdPosition = this.currentAdBreak.getPlayableAdsTotal() - this.currentAdBreak.getPlayableAdsRemaining() + 1; console.log('Playing ad ' + currentAdPosition + '/' + this.currentAdBreak.getPlayableAdsTotal()); ... }
-
OO.Pulse.AdBreak.stopAdBreak
forcefully stops an ad break. If called insideOO.Pulse.SessionListener.startAdBreak
, it will completely prevent the ads in that ad break from being displayed.
Version 2.1.16.3.0 - February 15, 2016
ADDED
- Added
adSkipped
method toOO.Pulse.VideoAd
, allowing you to indicate that the user activated a close or skip button for the currently playing ad.
Version 2.1.16.2.0 - February 4, 2016
ADDED
-
Added
setLogListener
method toOO.Pulse
, allowing you to set a listener to be notified when there are error or warning messages.These messages can be useful to determine why ads may not be displaying.
OO.Pulse.setLogListener(function(logItem) { console.log("Received Core Log Message: " + logItem.message); });
Version 2.1.15.24.0 - December 17, 2015
- Pulse SDK HTML5 API. New, higher level, event-based API for client-side Pulse integration.