diff --git a/docs/DEVELOPER/release-notes/raf-release-notes.md b/docs/DEVELOPER/release-notes/raf-release-notes.md index afa122ef..f769b810 100644 --- a/docs/DEVELOPER/release-notes/raf-release-notes.md +++ b/docs/DEVELOPER/release-notes/raf-release-notes.md @@ -10,351 +10,342 @@ metadata: next: description: '' --- -{` -

Roku Advertising Framework release notes

-

Version 3.1 – 7/2022

- -

Version 2.18 – 2/2022

- -

Version 2.17 – 11/2021

- -

Version 2.16 – 08/2021

- -

Version 2.15 – 05/2021

- -

Version 2.14 – 12/2020

- -

Version 2.13 – 7/2020

- -

Version 2.12 – 3/2020

- -

Version 2.11 – 11/2019

- -

Version 2.10 – 08/2019

- -

Version 2.9 – 06/2019

- -

Version 2.8 – 04/2019

- -

Version 2.7 – 01/2019

- -

Version 2.6 – 10/2018

- -

Version 2.5 – 05/2018

- -

Version 2.4 – 03/2018

- -

Version 2.3 – 10/2017

- -

Version 2.2 – 07/2017

- -

Version 2.1 – 05/2017

- -

Version 2.0 – 03/2017

- -

Version 1.9 – 11/2016

- -

Version 1.8 – 10/2016

- -

Version 1.7 – 06/2016

- -

Version 1.6 – 03/2016

- -

Version 1.5 – 12/2015

- -

Version 1.4 – 10/2015

- -`}
- -
+# Roku Advertising Framework release notes + +### Version 3.1 - 7/2022 + +- For apps that collect explicit in-app consent for ad targeting (for example, to adhere to GDPR), a new [**setLimitAdTracking()**](doc:raf-api#setlimitadtrackingenabled-as-boolean) function that specifies the value of the ROKU_ADS_LIMIT_TRACKING URL parameter macro to be passed into beacons and ad requests +- Improved interactive ads capabilities +- Deployed to devices on Roku OS 11.0 and above + +### Version 2.18 - 2/2022 + +- Support for new interactive ad experiences, improvements to existing templates +- Improvements to [Roku ad watermark](doc:ad-watermark) feature +- Multiple bug fixes and feature enhancements +- Deployed to devices on Roku OS 10.5 and above + +### Version 2.17 - 11/2021 + +- Improvements to interactive ad rendering and operation +- Multiple enhancements and bug fixes +- Deployed to devices on Roku OS 10.5 and above + +### Version 2.16 - 08/2021 + +- Extended [Roku ad watermark](doc:ad-watermark) to support [Demand API](doc:demand-api) calls +- Assorted bug fixes and enhancements to existing features +- Deployed to devices on Roku OS 10.0 and above + +### Version 2.15 - 05/2021 + +- New Feature: Methods for accessing [Roku Demand API](doc:demand-api). Provides more efficient monetization by connecting to real-time ad demand, while preserving control of inventory allocation with publisher's ad server +- New Feature: Initial implementation of watermarking for ad requests and impression pixels to combat ad fraud +- Added Portuguese localization of the ad UI texts +- Multitude of bug fixes and enhancements, notably [stitchedAdsInit()](doc:raf-api#stitchedadsinitadpodarray-as-roarray) now clears the ad badge if called mid-ad break (*early cue-in* use case) +- Deployed to devices on Roku OS 9.4 and above + +### Version 2.14 - 12/2020 + +- Added support for the characters **{|}"<>\^\`** (which are neither reserved nor unreserved by [RFC-3986](https://tools.ietf.org/html/rfc3986)) by percent-encoding them in ad request and beacon URLs +- New [`enableInPodStitching(isIPS as Boolean)`](doc:raf-api#enableinpodstitchingisips-as-boolean) method brings benefits from [CSAS API](doc:csas) to apps using the classic CSAI [showAds()](doc:raf-api#showadsads-as-object-ctx-as-object-view-as-object-as-boolean) by stitching together multiple video clips within a single ad break (no buffering between ads) +- When parsing VAST, preserve the `id` attribute of `` +- Added support for [getAds()](doc:raf-api#getadsmsg-as-string-as-object) parsing a local file from tmp:/ via e.g. [setAdURL("tmp:/myVASTorVMAPorSMRX.xml")](doc:raf-api#setadurlurl-as-string) +- Multitude of bug fixes and enhancements +- Deployed to devices on Roku OS 9.4 and above + +### Version 2.13 - 7/2020 + +- Multitude of bug fixes and enhancements, including + - Reduce [JIT pre-fetching](doc:raf-api#enablejitpodsenabled-as-boolean) to improve playback start time for [client-stitched](doc:csas) use case + - Fix regression of [fireRokuMarketingPixel()](doc:tracking-signup-abandonment#integrating-the-raf-firerokumarketingpixel-method-in-the-signup-workflow) not URL-encoding its arguments + - Fix errors on bad metadata (e.g. when parsing VAST, getting a single ad with yet having fallback_index>0) +- Improvements to interactive ads +- Deployed to devices on Roku OS 9.2 and above + +### Version 2.12 - 3/2020 + +- New Voting Ad +- Multitude of bug fixes and enhancements +- Deployed to devices on Roku OS 9.2 and above + +### Version 2.11 - 11/2019 + +- New interactive ad features +- Multitude of bug fixes and enhancements +- Deployed to devices with Roku OS 9.2 or above + +### Version 2.10 - 08/2019 + +- Added handling of [voice ETC](doc:transport-controls) for ads +- Interactive ads improvements +- Bug fixes and performance improvements +- Deployed to devices with Roku OS 9.1 and above + +### Version 2.9 - 06/2019 + +- Added a [ROKU_ADS_LOCALE macro](doc:integrating-roku-advertising-framework#url-parameter-macros) which returns current locale in same format + as [roDeviceInfo.getCurrentLocale()](doc:ifdeviceinfo#getcurrentlocale-as-string) + (e.g. "en_US", "es_ES") +- Library manifests + internally [rsg_version=1.2](doc:channel-manifest#special-purpose-attributes), + which decreases memory use when RAF is included in complex apps. Note this is + independent from the application-level *manifest* file, where you may separately + declare *rsg_version=1.2* (or assume the default 1.1 [the default is now 1.2 as of Roku OS 9.3]) +- New interactive ad features +- Improved diagnostics. Of note, when detected a URL with invalid characters, + RAF would print + a warning: + + ``` + [RAF.err] roUrlTransfer.setURL("some invalid URL") rejected argument - invalid chars? (space and "<>\^\`{|} must be %-encoded) + ``` +- Bug fixes and performance improvements +- Deployed to devices with Roku OS 9.1 and above + +### Version 2.8 - 04/2019 + +- New interactive ad units +- Added support for expanding multiple RAF macros per single URL query + parameter value. Consequently, now composite query parameters like + FreeWheel's `flag` are supported in generic manner +- Bug fixes and performance improvements +- Deployed to devices with Roku OS 9.0 and above + +### Version 2.7 - 01/2019 + +- Release with a primary focus on Roku OS 9.0 compatibility +- New interactive ad features +- Bug fixes and performance improvements +- Deployed to devices with Roku OS 9.0 and above + +### Version 2.6 - 10/2018 + +- RAF now shows test ads *only* in side-loaded ("dev") and unpublished apps. +- Added "In-Pod Stitching" capability for client-side ad-inserted (CSAI) + apps, which provides an improved + user experience that can eliminate buffering between multiple ads in an ad break. + This can be enabled by developers for evaluation, and can by enabled in eligible + production apps without the need for + re-publishing. +- Improved RAF diagnostic messages +- Bug fixes and performance improvements +- Deployed to devices with Roku OS 8.1 and above + +### Version 2.5 - 05/2018 + +- Major rework of RAF's diagnostic output to [BrightScript console](doc:debugging#accessing-the-debug-console) + - Warning messages (prefixed with "[RAF.err]") are always printed for known potential problems. Note that these are just additional diagnostics - they do not change the library's behavior, as compared to previous versions. + - Substantially more information is printed when in setDebugOutput(true) mode: method call arguments and return values, [URL macros](doc:integrating-roku-advertising-framework#url-parameter-macros) expansion, ad XML/parsed, etc. +- New interactive templates by BrightLine/Innovid +- Deployed to devices with Roku OS 8.0 and above + +### Version 2.4 - 03/2018 + +- New feature: JIT ("Just In Time") ad resolution for VMAP, SmartXML to reduce overhead incurred by prefetching all ad pods before content playback starts +- New feature: RIA ("Roku Interactive Ads") to allow rendering of Roku interactive ad overlays for OTT content (previously only available for ACR on linear content) +- BrightLine bug fixes and performance improvements +- Innovid bug fixes and new templates ("User Satisfaction Survey" and "Skippable" interactive ads) + +### Version 2.3 - 10/2017 + +- Add support for BrightLine interactive ads in SSAI+RSG use case +- New interactive ad templates (Innovid) +- Implement ad buffering limit +- Add support for tracking beacons with HTTP → HTTPS redirects +- General performance improvements and bug fixes +- RAF 2.3 available in Roku OS 7.7 and above + +### Version 2.2 - 07/2017 + +- Added a native RSG renderer for Brightline interactive ads +- Enabled the firing of tracking events on empty ad breaks (SmartXML + and VMAP; relevant to FreeWheel forecasting) +- Fixed the autoscaling of interactive ads for FHD-only RSG apps on a + HD UI device +- Fixed an error when the ad response is invalid XML +- Improved the RIDA hashing when "limit ad tracking" is set +- Improved the draining of pending beacons cache, to benefit low + memory devices +- Enhanced the handling of non-standard view sizes (RSG) +- Fixed various minor issues + +### Version 2.1 - 05/2017 + +- Added support for comScore vCE campaign measurement service +- Introducing a generalized audience measurement API + (see [enableAdMeasurements()](doc:raf-api#general-audience-measurement) for + details) +- Support for a new TrueX SAB interactive ad template +- Fix for a display resolution issue when a FHD-only RSG app was + playing ad video on a HD UI device +- Miscellaneous other fixes + +### Version 2.0 - 03/2017 + +- Support for RSG apps to use RAF from Task + node +- SceneGraph ad rendering support (video ads and + Innovid interactive ads) + - New `view` parameter for [showAds()](doc:raf-api#client-ad-insertion), which is required for all SceneGraph applications +- VAST 3.0 "ad buffet" support +- Extended companion ad tag parsing from VAST to + allow multiple ad renderers for different companion creatives +- New interactive ad template support +- New `adCompleted` return value for + [`stitchedAdHandledEvent()`](doc:raf-api#server-stitched-ads) +- New `provider` member for `companionAds` metadata + in [Ad Structure](doc:integrating-roku-advertising-framework#ad-structure) +- Fix in VAST parser to address problem with DFP + waterfall containing invalid ads +- Multiple bug fixes to address ad rendering in both SDK1 and RSG apps + built with different combinations of supported `ui_resolutions` + +### Version 1.9 - 11/2016 + +- Freewheel SmartXML adReplica changes + - Improve forecasting by only resolving ad requests for wrapped + creative renditions that are placed into ad slots + - Respect replicaId if specified in the adReference tag and a matching + replica exists in the creativeRenditions, otherwise treat unwrapped + renditions as alternate streams +- When Limit Ad Tracking is set by the user, use a new time-scoped ID that + is cycled every 30 days to provide the benefits of frequency capping + while still respecting the user's desire to avoid ad tracking +- Added an optional new parameter to the setContentGenre() API to indicate + whether content is targeted for kids +- Added a new content macro, ROKU_ADS_KIDS_CONTENT, and modified + default/backfill URLs to use this new macro +- Added a new API, getNielsenContentData(), that will return an encrypted + N-RIDA parameter string for apps wishing to use Nielsen SDK for DCR + measurements +- New BrightLine template +- Eclipse plugin compatibility fixes +- Exit key handling fixes +- TrueX and BrightLine bug fixes and enhancements +- Added a fix for BrightLine ads to use cached ad position +- Fixed 3rd-party tags that used improperly-encoded URL fragments by + URL-encoding fragment contents +- Modified garbage collection after interactive ad rendering to fix + display issue with BrightLine ads + +### Version 1.8 - 10/2016 + +- Add missing tracking events for plain video ads in server-stitched + streams: Impression, Pause, Resume +- Add contextual info for complete tracking event +- Add companion tracking metadata to Innovid ads, which do not + explicitly have a CompanionAd tag to distinguish video ad tracking + from microsite tracking +- Add 303 error tracking when wrapped VAST returns no ads +- New BrightLine templates +- Merged Innovid renderer changes, including modifications to tracking + pixel logic +- New creativeAdId metadata field for ads +- Fix crash when replacing RAF macros in URL containing query + parameter values without a name +- Correct pod-specific tracking for ad pods in server-stitched + streams: PodComplete, PodStart +- Disallow re-rendering of ad pod when pod cache has been updated + while rendering the pod (e.g., for TrueX ads) +- Re-purpose "Expand" and "Collapse" ad tracking to refer to microsite + interactions for Innovid ads, which do not generally have a separate + CompanionAd tag in the VAST representation for these additional + tracking events +- Ignore replicaId values when specified in SmartXML ad slots, since + these always refer to the first replica +- Treat multiple renditions of wrapped ads in SmartXML as replicas +- Override any creative ID set from a wrapped ad with the creativeId + attribute in SmartXML, since this is likely more meaningful to the + app than the wrapped ID +- Numerous TrueX/BrightLine bug fixes and feature changes +- Track ad render position values to prevent spurious + Complete/PodComplete events when exiting microsites (playback of + stitched video can resume across ad boundary, resulting in extra + tracking pixels being fired) + +### Version 1.7 - 06/2016 + +- New API: setContentMetaData(metaData): allows app to set information + about the current content +- Added new HLS MIME type: "application/vnd.apple.mpegurl" +- Added "ai=ROKU_ADS_APP_ID" to default and backfill ad URLs' + cust_params +- Changed macro value of ROKU_ADS_LIMIT_TRACKING to "1" or "0" + instead of "true" or "false," to accommodate DFP's special LAT + values +- Changed handling of invalid messages passed to the event handler for + stitched ads to return either the cached ad data if an ad is + currently being rendered, or Invalid if no ad is being rendered to + accommodate apps that erroneously pass Invalid messages to the + handler +- Prioritize MP4 over HLS ad creatives as HLS can take longer than the + length of an ad to settle on an acceptable playback bitrate +- Add support for TrueX ad experience and parse new TrueX VAST + extensions +- Invalidate rendering of current ad pod if pod cache has been updated +- Parse "special" wrapped URLs inside \ tag in SmartXML +- Numerous BrightLine changes to support rendering of choice cards, + skip cards, managing ad pod cache when pods are skipped +- Modified backfill URLs slotname parameter to use ROKU_ADS_APP_ID + as it was in v1.6 +- Merged Innovid's latest code containing important tracking fixes +- Fix to the BrightLine code to address crashes on some devices still + running 7.0 FW +- Fix bug that caused lower ad fill rates for SmartXML responses that + included erroneous or empty ad tags in a given ad pod +- Fix construction of generic tracking events for SmartXML when + quartile events are not specified + +### Version 1.6 - 03/2016 + +- Interactive ads on Server Stitched Ads +- Support for DFP Waterfall +- Customize Buffer Screens - static image only +- Update LR tags to DFP tags +- Innovid- Extender +- New URL parameter macros: ROKU_ADS_LIMIT_TRACKING, + ROKU_ADS_APP_VERSION, ROKU_ADS_LIB_VERSION, + ROKU_ADS_DEVICE_MODEL +- Loading message was not updating correctly for + preroll/midroll/postroll ads +- Pass the raw unchanged value in the ROKU_ADS_TRACKING_ID macro +- Macros were not expanded when held in the URL encoded section of the + key/values +- Pre-roll ad in 1080p HD TV didn't display full screen +- BrightScript log is displaying "ERROR: Runtime: FOR EACH value is + "Invalid" when ad is playing fine + +### Version 1.5 - 12/2015 + +- Max URL transfer count bumped up from 40 to 300 +- If Nielsen impressions contained prior values for parameters that + should not be substituted due to whitelisting or ad server + blacklisting, remove those values from the URL +- set maximum decode resolution on all rendered video ads to avoid + memory issue due to buffering algorithm on lower end devices +- Ensure that a properly-handled exit key exits the main video render + loop +- Add support for Freewheel "eventCallback"-style impression tracking +- Issue with pressing "back" remote button on image canvas screen +- Fixed VMAP Bug where ad breaks with the same offset were ignored +- Ad Framework unable to parse response - Freewheel Promos +- Fix edge case bug in URL regularization with path parameters +- Fix "PodComplete" tracking sent when interactive ads are exited + +### Version 1.4 - 10/2015 + +- Ability for cross-promotion of apps/content +- Ability to install an app from a video ad +- Ability to follow content on an app from a video ad +- Integration of BrightLine Interactive Ads +- Integrate BrightLine Interactive ads to RAF +- Updates to Innovid library (Use "Up" key instead of "*" everywhere) +- SmartXML parser changes +- Support "slotImpression" beacon types +- Enhanced Support for quartile tracking events in all scenarios +- Additional attributes such as ad.Title, ad.CreativeId, ad.advertiser + for VAST and FreeWheel ads +- String Localization for core UI strings +- SetContentLength API for Nielsen beacons +- Midroll/postroll video playback issues on Roku TVs