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:
  1. Advertiser Id - -[OOPulseVideoAd advertiserIdentifier]
  2. Codec - -[OOMediaFile codec]



Version 2.6.21.1.0 - January 29, 2021

CHANGED



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:

  1. Preload next ad feature is enabled for your Pulse account. Contact your Account Manager if you want to use this feature.
  2. There are more ads to be played in the current ad break.
  3. 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.
  4. 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:

CHANGED

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



Version 2.5.18.11.0 - May 21, 2018

ADDED

  • A new array, OORequestSettings.liveParameters, is available in the OORequestSettings, 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



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 to YES.
  • 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 property enforceCacheBusting 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 than assign 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

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

  // 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

FIXED

  • The server/client time difference is now recalculated when extending a session.



Version 2.2.16.10.0 - May 23, 2016

ADDED

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

  - (void)startAdBreak:(id<OOPulseAdBreak>)adBreak {
    self.currentAdBreak = adBreak;
    ...
  }
  • Invalid characters in URLs will now be percent encoded.

ADDED

  - (void)startAdPlaybackWithAd:(id<OOPulseVideoAd)ad timeout:(NSTimeInterval)timeout {
    NSLog("Playing ad %@/%@", self.currentAdBreak.playableAdsRemaining, self.currentAdBreak.playableAdsTotal);
    ...
  }

FIXED



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

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.