Changelog
Version 2.6.24.7.0 - July 10, 2024
CHANGED
Changed request parameter name for maximum linear break duration, from ‘tbbl’ to ‘maxd’.
Version 2.6.24.2.0 - February 21, 2024
FIXED
The [TIMESTAMP]
macro is now properly replaced in any third party ad requests.
Version 2.6.24.1.0 - January 24, 2024
ADDED
Added support for OORequestSettings.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.6.23.11.0 - November 29, 2023
ADDED
Added support for OORequestSettings.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 user’s information when using Pulse Programmatic (SSP).
Version 2.6.23.8.0 - August 30, 2023
ADDED
Added support for OORequestSettings.linearSlotSize
that lets you override the number of linear ads per slot. Be aware that using this override affects the predictability of the Pulse forecast functionality. Should therefore be used with caution.
Version 2.6.23.1.0 - January 19, 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.6.22.12.0 - December 7, 2022
FIXED
Fixed a bug where OOContentMetadata.identifier
was appended instead of OOContentMetadata.contentPartner
in the s
parameter when creating Ad Request distributor URL.
Version 2.6.22.10.1 - October 20, 2022
FIXED
Added modulemap to the tvOS framework.
Version 2.6.22.10.0 - October 13, 2022
ADDED
The user agent header for ad requests and pixel tracker requests has been modified to follow IAB guidelines.
Before: MyApp/1 CFNetwork/808.3 Darwin/16.3.0
After: MyApp/1 iPhone5,2 iOS/10_1 CFNetwork/808.3 Darwin/16.3.0
Version 2.6.22.7.1 - July 22, 2022
ADDED
A new parameter, OORequestSettings.minLinearBreakDuration
, is available in OORequestSettings
, which 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.6.22.7.0 - July 01, 2022
Documentaion release.
Version 2.6.22.4.0 - April 12, 2022
Maintenance release.
Version 2.6.22.3.1 - March 25, 2022
CHANGED
- Upgraded to OM SDK version 1.3.30.
- Embedded OM SDK within Pulse iOS SDK so it is not distributed as separate component anymore. In order to use OM SDK, you don’t need to import OMSDK_Invidi.xcframework anymore. It is included in Pulse.xcframework itself.
Version 2.6.22.3.0 - March 16, 2022
Maintenance release.
Version 2.6.22.1.0 - January 17, 2022
Maintenance release.
Version 2.6.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.6.21.6.0 - June 2, 2021
ADDED
Added support for tracking ViewableImpression events. This feature needs to be enabled for your Pulse account and requires you to create an OmidAdSession using +[INOmidAdSession createOmidAdSessionWithView:pulseVideoAd:contentUrl:]
or +[INOmidAdSession createOmidAdSessionWithView:pulseVideoAd:contentUrl:friendlyObstructions:]
method for each ad. Contact your Account Manager if you want to use this feature.
Version 2.6.21.2.0 - February 4, 2021
ADDED
- Below attributes can now be parsed by the SDK:
- Advertiser Id -
-[OOPulseVideoAd advertiserIdentifier]
- Codec -
-[OOMediaFile codec]
Version 2.6.21.1.0 - January 29, 2021
CHANGED
- Built SDK as an xcframework.
- Upgraded to OMSDK version 1.3.15.
- Minor change to the Open Measurement API, in
+[INOmidAdSession createOmidAdSessionWithView:pulseVideoAd:contentUrl:friendlyObstructions:]
friendly obstructions are now sent in as an Array containingINOmidFriendlyObstruction
objects.
Version 2.6.20.9.0 - September 18, 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.
To preload next ad, implement -[OOPulseSessionDelegate preloadNextAdWithAd:]
method. When -[OOPulseVideoAd adPositionChanged:]
is called, Pulse SDK will trigger -[OOPulseSessionDelegate preloadNextAdWithAd:]
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.
For a more detailed sample, please refer to the sample integration.
FIXED
- Fixed a bug, where all remaining quartiles were not tracked on
-[OOPulseVideoAd adFinished]
, if given creative duration in vast response is not correct.
Version 2.5.20.7.0 - July 8, 2020
FIXED
- Re-added module map to framework. It was removed by mistake in the last release.
Version 2.5.20.6.0 - June 29, 2020
ADDED
Integrated Open Measurement SDK (OM SDK) version 1.3.1 with Pulse iOS SDK. See Open Measurement Guide to know how to use OM SDK integration. For a more detailed sample, please refer to the sample integration. Following new methods have been added:
+[INOmidAdSession createOmidAdSessionWithView:pulseVideoAd:contentUrl:]
allows you to create and start the OMID ad session for each ad. This method should be called for each ad just before playing ad content otherwise OMID 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.- Additional methods are available at
INOmidAdSession
but have no effect if called after the OMID ad session has finished. -[OOPulseVideoAd playerStateChanged:]
notify all video listeners that the native video player state has changed.-[OOPulseVideoAd playerVolumeChanged:]
notify all video listeners that the native video player volume has changed.- Optional parameter, playerVolume, has been added to
-[OOPulseVideoAd adStarted:]
. NOTE: The player volume is required for Open Measurement tracking to be accurate.
CHANGED
-[OOAdVerification vendor]
data type has been changed from NSURL to NSString to follow VAST4.1 standard.
FIXED
- Incorrect value for Pulse error ‘MediaFileDisplayError’ was changed to ‘405’.
Version 2.5.20.1.0 - January 24, 2020
ADDED
A new parameter, OOContentMetadata.accountCustomParameters
, is available in OOContentMetadata
.
Version 2.5.19.9.0 - September 27, 2019
ADDED
A new parameter, OORequestSettings.midrollBreakNumber
, is available in OORequestSettings
, which allows you to override the number of the midroll ad break targeted by the ad request.
Version 2.5.19.8.0 - August 02, 2019
ADDED
A new parameter, OORequestSettings.breakNumber
, is available in OORequestSettings
, which allows you to override the number of the ad break targeted by the ad request.
Version 2.5.19.4.0 - April 16, 2019
CHANGED
- The SDK no longer throws an error when receiving non-linear ads, it just ignores them.
Version 2.5.19.1.0 - Jan 22, 2019
ADDED
- New timeout parameters, are available in the
OORequestSettings
, which allows you to override:- [
OORequestSettings.startAdTimeout
]: The maximum amount of time the player or integration should wait for the ad to start playback before reporting inventory. - [
OORequestSettings.thirdPartyTimeout
]: The maximum amount of time the player or integration should wait to unwrap and load a third party ad before reporting inventory. - [
OORequestSettings.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.5.18.19.0 - Oct 1, 2018
ADDED
-[OOPulseAdBreak adBreakType]
allows you to determine the position type of an ad break within the video content.
Version 2.5.18.12.0 - June 14, 2018
ADDED
- New parameters,
OORequestSettings.enableGdpr
,OORequestSettings.gdprConsentString
, andOORequestSettings.gdprPersonalDataIncluded
, are available in theOORequestSettings
, to enable IAB’s GDPR consent framework, and pass in the necessary parameters with the ad requests.
Version 2.5.18.11.0 - May 21, 2018
ADDED
- A new array,
OORequestSettings.liveParameters
, is available in theOORequestSettings
, 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.5.18.1.1 - Jan 9, 2018
FIXED
- Fixed the exception caused by previous release.
Version 2.5.18.1.0 - Jan 8, 2018
ADDED
- A new parameter,
OORequestSettings.seekMode
, is available in theOORequestSettings
, giving you the option to enforce showing certain unplayed mid-roll ad breaks, even when the viewer seeks or scrubs past them.
Version 2.5.17.23.0 - Nov 24, 2017
FIXED
- Updated the framework’s build with bitcode enabled.
Version 2.5.17.20.0 - Oct 3, 2017
CHANGED
The Core SDK has been removed from version 2.5.17.20.0 and Ooyala will no longer provide any support for the Core SDK from April 3rd, 2018. This means that:
- All new integrations on iOS need to use the iOS Pulse SDK.
- Integrations using the latest iOS Core SDK are still supported for critical bug fixes until April 2018.
- If new features are needed in your existing integration, then you must transform the integration to use the iOS Pulse SDK.
As a result of deprecating the Core SDK, changes were made to the Pulse SDK. All classes and constants where the name started with “VP” have been renamed to start with “OO” in the Pulse SDK. For example, VPRequestSettings
is now called OORequestSettings
. When you upgrade the SDK in your Pulse SDK integration, you must replace the class and constant names according to this new naming convention.
To move away from the Core SDK and start using the Pulse SDK instead, use the following tutorial.
ADDED
You can now log debug messages to the console by setting +[OOPulse logDebugMessages:]
. Debugging is turned off by default.
Version 2.4.17.17.0 - Aug 31, 2017
FIXED
- Fixed an issue with the framework’s internal version having problems with the AppStore verification.
Version 2.4.17.14.0 - Jul 13, 2017
CHANGED
The Core SDK is deprecated from version 2.4.17.14.0 and will be removed completely in version 2.5.17.20.0, to be released on October 3rd, 2017. This means that:
- All new integrations on iOS need to use the iOS Pulse SDK.
- Integrations using the latest iOS Core SDK are still supported for critical bug fixes until April 2018.
- If new features are needed in your existing integration, then you must transform the integration to use the iOS Pulse SDK.
As a result of deprecating the Core SDK, changes were made to the Pulse SDK. All classes and constants where the name started with “VP” have been renamed to start with “OO” in the Pulse SDK. For example, VPRequestSettings
is now called OORequestSettings
. When you upgrade the SDK in your Pulse SDK integration, you must replace the class and constant names according to this new naming convention.
Version 2.3.17.12.0 - Jun 13, 2017
FIXED
- An ad without clickThrough URL can now be parsed by the SDK.
Version 2.3.17.10.0 - May 11, 2017
ADDED
- Full passback support in the Pulse SDK: Previously, if an ad failed to be shown and the
-[OOPulseVideoAd adFailedWithError:]
method was invoked, the Pulse SDK would proceed to the next ad in the ad break, or instruct to play the content. From this version, if you enable the passback functionality in your account through the Pulse UI, a passback ad is provided if an ad failed to show and a passback ad is available.
Version 2.3.17.9.0 - May 11, 2017
ADDED
- Added the ability to disable asset filtering during requests by setting the
assetFilteringDisabled
parameter of VPRequestSettings toYES
. - Added the ability to enforce or disable addition of a randomized cache busting parameter to VAST 2.0 tracking URLs, which do not include the
CACHEBUSTING
macro, by using the propertyenforceCacheBusting
of VPRequestSettings.
Version 2.3.17.8.0 - Apr 26, 2017
ADDED
-[OOPulseVideoAd companions]
allows you to retrieve the companion ads directly from the OOPulseVideoAd. Bear in mind that only companion banners with the resources of type StaticResource are returned.
Version 2.3.17.7.0 - Apr 06, 2017
FIXED
- Updated the parser to provide a sanitized version of the VAST ticket contents.
Version 2.3.17.4.0 - Feb 22, 2017
ADDED
- Third party VAST4 tickets can now be parsed by the SDK.
Version 2.3.17.1.0 - Jan 12, 2017
ADDED
- VPAd.candidateNum allows you to retrieve the candidate ad number in the passback chain.
Version 2.3.16.24.0 - Nov 30, 2016
CHANGED
- Changed the RTB application parameters to use
copy
rather thanassign
in RequestSettings.
Version 2.3.16.23.0 - Nov 24, 2016
ADDED
- The application parameters, required for RTB (Real-time bidding), have been added to RequestSettings. Contact your DSP to determine which parameters should be sent.
Version 2.3.16.20.0 - Oct 12, 2016
ADDED
- The tracking urls can now be reached using the trackingURLsWithEventType method of TrackingEvents in the Core SDK
FIXED
- The ad skipped event is now tracked when a user skips a paused ad
Version 2.3.16.19.0 - Sep 20, 2016
ADDED
- Sessions can now be extended with new ads during playback through the
-[OOPulseSession extendSessionWithContentMetadata:requestSettings:success:]
method.
// This call can be done anytime while the content is playing
// Let's add a midroll at 20 seconds playback
self.contentMetadata.tags = @[@"standard-midrolls"];
self.requestSetting.linearPlaybackPositions = @[@20];
self.requestSetting.insertionPointFilter = VPInsertionPointTypePlaybackPosition;
[self.session extendSessionWithContentMetadata:self.contentMetadata requestSettings:self.requestSetting success:^{
NSLog(@"Session was successfully extended. There are now midroll ads at 20th second.");
}];
For a more detailed sample, please refer to the sample integration.
Version 2.3.16.14.0 - June 20, 2016
ADDED
- Pause ads are now supported by the high level portion of the SDK. To display pause ads, implement the optional method
-[OOPulseSessionDelegate showPauseAd:]
. When your content is paused by the user, call-[OOPulseSession contentPaused]
, which will trigger the call toshowPauseAd
if there is a pause ad available, and when resumed, call-[OOPulseSession contentStarted]
. For a more detailed sample, please refer to the sample integration.
FIXED
- The server/client time difference is now recalculated when extending a session.
Version 2.2.16.10.0 - May 23, 2016
ADDED
- VPRequestSettings.maxLinearBreakDuration allows you to specify the maximum duration of linear ad breaks. You can also configure this by means of Pulse Manager insertion policies.
CHANGED
- Some deviations from the VAST specification are no longer treated as errors, and may log warnings instead.
Version 2.2.16.9.0 - May 16, 2016
FIXED
- HTTP requests are now always made on the main run loop.
- Request objects were not getting released under some circumstances.
- VPLinearCreative.lastCompletion now accounts for server/client time differences.
- VAST tickets without an error tracking URL are now accepted.
Version 2.2.16.7.0 - April 6, 2016
CHANGED
- VAST ticket parsing has been made more lenient:
- URLs may be present without being wrapped in CDATA blocks.
- Other data may be wrapped in CDATA blocks.
- URLs with protocols other than http or https are accepted.
- Multiple hash (#) characters present in URLs will be percent encoded beyond the first one.
Version 2.2.16.5.0 - March 10, 2016
CHANGED
- The delegate method
-[OOPulseSessionDelegate startAdBreak:]
was changed to pass an object conforming to the OOPulseAdBreak interface.
- (void)startAdBreak:(id<OOPulseAdBreak>)adBreak {
self.currentAdBreak = adBreak;
...
}
- Invalid characters in URLs will now be percent encoded.
ADDED
-[OOPulseVideoAd adSkipped]
allows you to indicate that the user activated a close or skip button for the currently playing ad. Use-[OOPulseVideoAd isSkippable]
and-[OOPulseVideoAd skipOffset]
to determine whether and when to display a skip button.- The OOPulseAdBreak interface allows you to get the total and remaining number of playable ads in an ad break.
- (void)startAdPlaybackWithAd:(id<OOPulseVideoAd)ad timeout:(NSTimeInterval)timeout {
NSLog("Playing ad %@/%@", self.currentAdBreak.playableAdsRemaining, self.currentAdBreak.playableAdsTotal);
...
}
-[OOPulseAdBreak stopAdBreak]
forcefully stops an ad break. If called in-[OOPulseSessionDelegate startAdBreak:]
it will completely prevent the ads in that ad break from being displayed.- Added VPAd.title.
FIXED
- VPLinearCreative.skipButtonMode and VPLinearCreative.skipOffset are now properly parsed.
Version 2.1.16.4.0 - February 25, 2016
FIXED
- Fixed event flow when content metadata or request settings does not validate.
Version 2.1.16.3.0 - February 18, 2016
FIXED
- Parsing of some extended ad parameters was broken under some circumstances.
- Updated library build settings to work around a bug in XCode.
Version 2.1.16.2.0 - February 1, 2016
ADDED
+[OOPulse setLogListener:]
allows 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.
[OOPulse setLogListener:^(VPLogItem *incoming) {
NSLog(@"Received Core Log Message: %@", [incoming description]);
}];
Version 2.1.16.1.1 - January 18, 2016
CHANGED
- Frameworks are now built with bitcode enabled.
Version 2.1.16.1.0 - January 13, 2016
FIXED
- Sponsor ad variant is now properly parsed.
Version 2.1.15.24.1 - December 8, 2015
ADDED
- Ad Variant field (VPAdVariant) is exposed and can be accessed through a VPAd object.
Version 2.1.15.24.0 - December 7, 2015
ADDED
- A new high-level API has been added to greatly simplify integrating with Pulse.
- The library now supports tvOS.
CHANGED
The framework has been renamed to Pulse. Update your code by replacing all occurrences of:
#import <VideoplazaCore/VideoplazaCore.h>
with:
#import <Pulse/Pulse.h>
Version 2.0.15.23.0 - December 1, 2015
ADDED
- The optional VAST element survey is available in VPAd.
CHANGED
- VPTracker now emits a warning with error code VPCoreErrorAdNotReady if you try to track any event on an ad that is not ready.
FIXED
- In some cases frequency capping time values were not parsed correctly.
- Newline characters before and after third party tracking URLs are now removed when parsing.
Version 2.0.15.22.0 - November 9, 2015
ADDED
- Added a method to track total time spent watching an ad.
CHANGED
- Unsupported ads are now converted to inventory ads.
- VPAd.hasPassback now returns NO if an ad is not ready.
- VPTracker no longer emits a warning when you try to track a event that is not defined.
Now, instead of doing this:
if ([creative.trackingEvents hasEventWithType:VPTrackingEventCreativeMute]) {
[tracker trackEvent:VPTrackingEventCreativeMute withTrackable:creative];
}
you only need to do this:
[tracker trackEvent:VPTrackingEventCreativeMute withTrackable:creative];
FIXED
- Under some situations first party ads were marked as lazy even though they were not.
- Prevent a crash on invalid impression URLs.
- A problem with clickthrough tracking for first party Pulse ads.
Version 2.0.15.12.0 - August 12, 2015
This is the first release of the second generation iOS SDK.
It adds supports for passbacks, non-linear ad formats, session level clash protection and ad sequencing.