GuidesAPI ReferenceRelease Notes
HomeLog InHome
Release Notes

Android 1.21.2

Added

  • KDocs are now included in published SDK artifacts. Inline documentation is available in your IDE on hover for improved developer experience.
  • Added onTriggerInteractionLink to BlazePlayerSourceDelegate, so apps can handle links opened from Engagement Layers.

Live catchup

  • While a live stream has a recap, the full-screen Videos player shows a recap button, and can suggest the recap with a "Still time to catch up" popup or a "Live recap" banner. Closing the recap returns to the stream at the live edge. Live catchup is enabled per account by WSC Sports and needs no code changes. Hide the button with BlazeVideosPlayerStyle.buttons.liveCatchup. See Live catchup.

Content entitlements

Stream tokenization

  • Videos and live streams can be delivered through tokenized CDN URLs, using the same viewer token as content entitlements. Stream tokenization is enabled per account by WSC Sports. See Stream tokenization.

Followed entities data source

  • BlazeDataSourceType.FollowedEntities(entityTypes, orderType, advancedOrderType, maxItems) shows Moments, Stories, or Videos about the players, teams, and properties the user follows. Restrict it to some categories with entityTypes. If the user follows nothing, no content is returned. See BlazeDataSourceType.

Follow entity category

  • BlazeFollowEntity.entityType (BlazeFollowedEntityCategory: PLAYER, TEAM, PROPERTY) carries the type of a followed entity. It's optional, is reported in onFollowEntityClicked and getFollowedEntities(), and can be passed to setFollowedEntities, insertFollowedEntities, and removeFollowedEntities. See BlazeFollowEntity.

Follow button star icon

  • The Follow button can show a star. Set iconSource to BlazeMomentsPlayerFollowEntityIconSource.STAR on followEntity.followState.chip and followEntity.unfollowState.chip for an outlined star while unfollowed and a filled star while followed. DEFAULT keeps the + and the checkmark. See iconSource.

Subtitle and description on Moments widgets

  • subtitle and description on BlazeWidgetItemStyle show a moment's subtitle and description under its title. Both are hidden by default, have their own unread and read text styles like title, and move with the title's position as one block. topSpacing sets the space above each line. See BlazeWidgetItemSubtitleStyle and BlazeWidgetItemDescriptionStyle.

Animated thumbnails

  • Row presets play an animated (GIF) preview in each item's thumbnail: StoriesWidget.Row.animatedThumbnailsCircles, StoriesWidget.Row.verticalAnimatedThumbnailsRectangles, MomentsWidget.Row.verticalAnimatedThumbnailsRectangles, VideosWidget.Row.verticalAnimatedThumbnailsRectangles, and VideosWidget.Row.horizontalAnimatedThumbnailsRectangles. The Stories presets and the horizontal Videos preset are new; the vertical Videos preset now plays the preview where it previously showed a still image. See Presets and BlazeWidgetItemImageAnimatedThumbnailStyle.

Widget play icon

  • playIcon on BlazeWidgetItemStyle shows a play icon centered on the item's thumbnail, with a single built-in design. It's hidden by default, and isVisible is its only setting. For a custom icon, place statusIndicator or badge over the image with your own background image. See BlazeWidgetItemPlayIconElementStyle.

Story page title

  • The Stories player shows the page title set in the CMS as a second header row, under the story title. Pages without a title show no row. Style it with subtitle on BlazeStoryPlayerStyle. See BlazeStoryPlayerSubtitleTextStyle.

Audio track selector for live streams

  • The Videos full-screen player shows an audio button for live streams with more than one audio track, so viewers can switch commentary feeds. Their choice is remembered. The button is hidden while casting to Chromecast. Controlled by BlazeVideosPlayerStyle.buttons.audio, visible by default. See Audio track selection.

Live UI styles

  • statusIndicator and backToLiveButton on BlazeVideosPlayerStyle are now public, so you can customize the live status indicator and the Back to live button. See Live UI in the player.

Badge images from the CMS

  • Widget items can show a badge image set per Story, Moment, or Video in the CMS. It replaces the badge background image and fills the badge inside its border, so padding doesn't apply to it. It shows the badge even when isVisible is false, and hides the badge for that item if the image fails to load. See BlazeWidgetItemBadgeStyle.

Moments tabs reselection

  • onTabReselected on BlazePlayerContainerTabsDelegate is called when the user taps the title of the tab that's already selected, for example to reload it with reloadTab(at = tabIndex). tabIndex is the zero-based index among visible tabs. See Player tabs container.

Cold start status

  • BlazeSDK.isInColdStart(playerType) returns whether the current user's For you feed for a content type is served cold start content (true) or personalized content (false). Returns null when the status is unknown, for example for an anonymous user. See Implicit personalization.

Privacy settings from the Back Office

  • WSC Sports can enforce disableAnalytics and setDoNotTrack for your app from the Back Office. An enforced setting applies even if your app sets it to false, and stays in effect across launches. Your app's own settings are unchanged when nothing is enforced. See disableAnalytics.

Follow entity provider name

  • BlazeFollowEntity.providerName names the content provider of a followed entity. It's optional, is set on entities the SDK reports, and is sent with the follow state. Follow and unfollow are now stored by the SDK and synced through User Activity, so they survive app restarts and follow the user across devices. See BlazeFollowEntity.

Changed

Videos inline player content

  • BlazeVideosInlinePlayer now always shows on-demand videos. It still accepts videosFilterParams for source compatibility, but ignores the value. See In the inline player.

Widget badge defaults

  • In the widget presets, the badge now sits at the top end of the image on circle items and at the top center, 4dp below the top edge, on rectangle items. Previously it sat at the top start, over the NEW or LIVE status chip. Badge padding is now 4dp on every side. The default badge text is 8sp in the dark primary color instead of 11sp white. This text default also applies to badge state styles created with unread(), read(), liveUnread(), or liveRead() that set text without a textStyle.

Moments widget duration

  • Moments widget presets now show the duration on each item by default, like Videos presets. To hide it, set widgetItemStyle.durationElement.isVisible = false.

Moments player icons

  • The Moments player's icon buttons are now 44dp and share one vertical alignment line, so a wide element such as the Follow avatar or a long likes count no longer shifts the other icons.

Android 16 and compileSdk 35

  • The SDK now compiles against and targets Android 16 (API 36). Building against this version requires compileSdk 35 or higher in your app.

Follow button shown by default

  • The Moments player shows the Follow button by default, so the Follow feature works without extra styling. To hide it, set followEntity.isVisible = false on BlazeMomentsPlayerStyle. See BlazeMomentsPlayerFollowEntityStyle.

Share and search in tabs containers

  • onShareClicked and onSearchButtonClicked on BlazePlayerContainerTabsDelegate are now called for players inside a tabs container. Previously the tabs container didn't forward them, so a delegate that implements them starts receiving these callbacks. See Player tabs container.

Public API cleanup

  • Classes that aren't part of the documented API are now internal, for example the player activities and internal data models. Apps that use only the documented API are unaffected. Code that referenced an undocumented class no longer compiles; use the documented API instead.

Fixed

Moments ad frequency

  • Moments ads now appear at the configured frequency regardless of how content loads. The SDK keeps a running count of Moments viewed across the player session, so the count no longer resets when new content is loaded.

External User Id

  • Fixed a crash that could occur when the external user ID changed (i.e., setExternalUserId was called right after initializing the SDK).

Videos player restore

  • The Videos player no longer crashes when it's restored after the app process was stopped in the background. It now closes instead.

In-app web view back navigation

  • Back in the in-app web view, opened from a CTA of type web, steps through the page history again instead of closing the web view.

VAST ad tags

  • Ad tags with unreplaced macros, such as [RANDOM], are now encoded before the ad request, so IMA no longer rejects them.

SDK dependencies

  • The SDK and ad modules now declare every library they use, so a change in your app's dependencies can no longer remove a library the SDK needs. The library versions your app resolves are unchanged.