Release Notes (iOS)

iOS SDK Release Notes

Release notes for the v2 version of the iOS SDK can be found here.


3.126.0

Released: 2026-10-02

Added

  • Subtitle cue enter and exit events are now emitted during BAM ad playback
  • Type-safe Swift ad triggering APIs, for example AdItem(adSources: sources, trigger: .percentage(25)):
  • Experimental pause ads using static PNG or JPEG VAST non-linear creatives with AdSourceType.bitmovin ad sources:
    • Schedule pause ads with AdItem(adSources: sources, trigger: .pause) through AdvertisingApi.schedule(adItem:) or AdvertisingConfig.schedule; in Objective-C use BMPAdItem's pauseAdWithAdSources: factory
    • Swift access requires @_spi(ExperimentalApi) import BitmovinPlayerCore
    • Eligible 1 second after confirmed content playback enters a paused state and displayed in the PlayerView ad container or a custom container registered through AdvertisingApi.register(adContainer:)
    • Dismissible through the UI or AdvertisingApi.skip(); seeking or time shifting dismisses a visible pause ad
    • Tapping a creative opens its VAST clickthrough URL on iOS; creative clickthrough is not supported on tvOS
    • Automatically suppressed during Cast, AirPlay, and Picture-in-Picture managed by PlayerView; app-managed Picture-in-Picture requires the app to prevent pause-ad presentation
    • Not shown during the System Player UI's AVKit fullscreen on iOS
    • VAST tracking for impressions, creative views, clicks, dismissal, view duration, unused creatives, wrappers, and errors
    • Pause ads are not supported on visionOS
  • Non-linear ad APIs:
    • NonLinearAd as the shared base type for non-linear ads
    • NonLinearAdStartedEvent, NonLinearAdFinishedEvent, and NonLinearAdSkippedEvent to observe presentation lifecycle, sharing the NonLinearAdEvent base class
    • Swift access to the lifecycle events and listener callbacks requires @_spi(ExperimentalApi) import BitmovinPlayerCore

Fixed

Changed

Deprecated


3.125.0

Released: 2026-09-25

Added


3.124.0

Released: 2026-09-18

Added

Fixed

  • HLS Interstitial resumption offsets were ignored when updated from zero, and updates to finished ad breaks could override newer breaks' resume targets.

Removed


3.123.0

Released: 2026-09-12

Added

Fixed

  • Incorrect ad counters in the Bitmovin Web UI, previously documented as a known issue in 3.122.0.
  • Fullscreen toggle button in the Bitmovin Web UI overriding CSS display styles.

Changed

  • Updated Bitmovin Player Web UI to 4.21.0.

Removed

  • Support for iOS 14 and tvOS 14. The minimum supported versions are now iOS 15.0 and tvOS 15.0

3.122.0

Released: 2026-09-07

Added

Fixed

Known Issues

  • Ad counters in the Bitmovin Web UI can be incorrect for consecutive ad breaks scheduled at the same playback position when one break contains multiple ads or gains additional ads during playback.

Changed

  • Updated Bitmovin Player Web UI to 4.20.1.

Deprecated


3.121.0

Released: 2026-08-28

Added

  • Support to enter Picture-in-Picture during ad playback using Bitmovin Advertising Module (BAM).

Fixed

  • HLS variant playlist reload requests in a live stream could be misclassified as type master when playlist URL parameters change between requests.
  • A crash when rendering styled subtitles containing multi-code-unit Unicode characters, such as Arabic diacritics or emoji.

Changed

  • Xcode 26.6 and Swift 5.10 or newer is required to integrate the SDK

3.120.0

Released: 2026-08-13

Added

  • Support for selecting ad subtitle tracks through the regular Player subtitle APIs in case Bitmovin Advertising Module (BAM) is used.

3.119.0

Released: 2026-08-04

Added

  • Experimental Player.ssai API, enabling integrations to register ad breaks stitched into SSAI streams and use the Player’s advertising API and events.

3.118.1

Released: 2026-07-31

Fixed

  • The Bitmovin Player Web UI could fail to render when BitmovinUserInterfaceConfig values encoded in uiConfig contained URL-safe Base64 characters.
  • Configured playbackSpeed not being applied when resuming playback in Picture-in-Picture.

3.118.0

Released: 2026-07-24

Added

Changed


3.117.0

Released: 2026-07-13

Added

Changed

  • HLS Interstitial ASSET-LIST responses with HTTP 204 or an empty ASSETS array are now treated as valid and no longer trigger an AdErrorEvent.
  • XML CDATA content is now trimmed before being exposed by the XML parser.

Fixed

  • VAST ad media file selection could skip HLS playlist MIME types and choose unsupported video MIME types when using the Bitmovin Advertising Module (BAM).

3.116.1

Released: 2026-07-03

Fixed

  • Potential crash when reparenting PlayerView while IMA ad playback is scheduled.
  • Post-roll not playing with IMA when main content finishes before the ad manifest has loaded.

3.116.0

Released: 2026-06-29

Added


3.115.0

Released: 2026-06-19

Added

  • Support for accessing the currently active ad via AdvertisingApi.activeAd.
  • VideoPlayerView.scalingMode view modifier to dynamically update the scaling mode in SwiftUI.
  • Support for VAST fullscreen/exitFullscreen and playerExpand/playerCollapse tracking via Ad.expanded and Ad.collapsed when using the Bitmovin Advertising Module (BAM).
  • Player.nowPlaying namespace of type NowPlayingApi to access media controls related APIs.
  • NowPlayingApi.isEnabled to dynamically enable or disable Bitmovin Player's Now Playing integration at runtime.
  • Support to play Ads in Picture-in-Picture on iOS/tvOS 15 and above, when using Bitmovin Advertising Module (BAM).
  • Support for preloading of ad manifests (VAST/VMAP) with IMA while another ad is already playing.

Removed

Fixed

  • Fixed typo in Now Playing metadata during ad playback: Advertisment is now correctly spelled Advertisement.
  • Seeking or time-shifting over HLS Interstitial with X-RESUME-OFFSET could resume main content before the user’s target position.
  • Multiple IMA ad scheduled at the same time, could interfere with each other and prevent later ad breaks from playing.

Known Issues

  • Ads will play in the background instead of the Picture-in-Picture window when using Bitmovin Advertising Module (BAM) in combination with the System UI.

3.114.1

Released: 2026-05-28

Fixed

  • Main content could resume at the wrong position after HLS Interstitial ad breaks with X-PLAYOUT-LIMIT.

3.114.0

Released: 2026-05-19

Added

  • Warning logs when public Player or Source APIs are called from a background thread.
  • Publish API documentation as Markdown to make it easier for AI agents and other tools to access and process the SDK API reference.

Fixed

  • Missing expected SubtitleEnable, SubtitleDisable and SubtitleDisabled events in the Bitmovin Player Web UI when changing subtitle tracks.
  • Incorrect ViewModeChangedEvent.from and ViewModeChangedEvent.to values when entering or exiting fullscreen in the Bitmovin Player Web UI.

3.113.1

Released: 2026-05-11

Fixed

  • AdFinishedEvent.ad contains data from the next ad instead of the ad that finished if there are back-to-back ads.
  • HLS Interstitials not being scheduled when AirPlay was started before loading the stream.
  • Rare app crashes that could occur shortly after starting live stream playback.
    Note: The Bitmovin Player and Source APIs should be called from the main thread to avoid unexpected behavior.

3.113.0

Released: 2026-05-06

Changed

  • Updated Bitmovin Player Web UI to 4.12.0

Fixed

  • Potential crash when playing post-roll ads with IMA
  • Fixed an issue where HLS Interstitial mid-rolls could play instead of pre-rolls when playback started with a start offset after a mid-roll position.
  • HLS Interstitial playback can get stuck after an ad with X-PLAYOUT-LIMIT when another Interstitial is already scheduled.

3.112.0

Released: 2026-04-30

Added

Deprecated

Fixed

  • Potential crash when emitting AdBreakStartedEvents when using IMA
  • Pre-roll and mid-roll interstitials were played back when a start-offset was configured
  • Player.ads.schedule being empty in SourceLoaded event for pre-roll and mid-roll ad schedules.
    Note: post-roll and HLS interstitial ad breaks may still be empty at SourceLoaded time. Subscribe to AdScheduleChangedEvent for reliable schedule-change notifications in all cases.

3.111.1

Released: 2026-04-17

Fixed

  • Main-content and Interstitials with CUE=PRE playing at the same time
  • Unexpected PlayingEvent emitted between AdBreakStartedEvent and AdStartedEvent for pre-roll ads
  • Main content frame flashing before Interstitial with CUE=PRE despite setting hideFirstFrame to true

3.111.0

Released: 2026-04-03

Added

  • DaterangeMetadata.plannedDuration to expose the PLANNED-DURATION attribute of EXT-X-DATERANGE tags

  • InterstitialAdBreak to expose HLS interstitial specific information about ad breaks

    Access the interstitial related information by casting the AdBreak of the AdBreakStartedEvent as follows:

    player.events
        .on(AdBreakStartedEvent.self)
        .sink { event in
            guard let interstitialAdBreak = event.adBreak as? InterstitialAdBreak else {
                // Not an interstitial ad break
                return
            }
    
            let plannedDuration = interstitialAdBreak.plannedDuration
        }
        .store(in: ...)

Changed

  • AdBreak.identifier now populates the value of the ID attribute of the EXT-X-DATERANGE tag for HLS Interstitials

3.110.0

Released: 2026-03-27

Added

  • programChange(newSourceMetadata:) to the Analytics API to start a new analytics playback session. This can be usefull to indicate a new program started within the same live stream.
  • The minimum BitmovinPlayerCollector version to 3.23.0.
  • Support for scheduling ad tags from data: and local file: URLs via the Advertising API.
  • Improved transition from main content to interstitial content (including Ads) by preloading them when using Bitmovin Advertising Module (BAM).
    • This also covers transitions between Ads/HLS Interstitials which are scheduled at the same position

Changed

  • Updated Bitmovin Player Web UI to 4.10.2

Fixed


3.109.0

Released: 2026-03-19

Added

  • Viewability tracking support for HLS Interstitials
    • viewable is emitted once an Interstitial has accumulated at least 2 seconds of playback while at least 50% of its view is visible
    • Viewability tracking can also report notViewable and undetermined outcomes
    • Configure via the new InterstitialTrackingEventTrigger cases:
      • .viewable
      • .notViewable
      • .viewUndetermined

Changed

  • When using BAM, VAST viewability tracking now emits viewable once an ad has accumulated at least 2 seconds of playback while at least 50% of its view is visible
    • In addition to viewable, VAST viewability tracking can now also report notViewable and undetermined outcomes

Fixed

  • Calling tracking URLs twice when using Bitmovin Advertising Module (BAM) or for HLS Interstitials through X-AD-CREATIVE-SIGNALING.
  • AudioChangedEvent not being triggered on audio track switches when the HLS playlist specifies CLOSED-CAPTIONS=NONE without a SUBTITLES attribute
  • Report correct error code (100) via AdErrorEvent for empty VAST XML tags

Deprecated

  • CocoaPods publishing: new releases will be marked as deprecated in favor of our SPM-published releases. Checkout our blog post for full details

3.108.1

Released: 2026-02-26

Fixed

  • Main content audio keeps playing when using BAM and playback of an AdItem is triggered by seeking over it

3.108.0

Released: 2026-02-23

Changed

  • Updated Bitmovin Player Web UI to 4.8.1.
  • More accurate detection of video quality switches:
    • on iOS 18, tvOS 18, visionOS 2 and above
    • on streams having audio-only variants

Fixed

  • Player.duration during HLS Interstitial playback now correctly clamps to the remaining X-PLAYOUT-LIMIT time for the active ASSET within an ASSET-LIST.

3.107.0

Released: 2026-02-09

Changed

  • Migrate the Bitmovin Player Web UI integration to v4 (checkout What's new in UI v4 for details)
    • If you have no UI customizations, there is no further action required. The new UI is used automatically.
    • If you ship a custom UI v3 (even when it still uses the default factory name bitmovin.playerui.UIFactory.buildDefaultSmallScreenUI)
  • Improve video start time for streams without a configured start offset (SourceOptions.startOffset) or target latency (SourceLiveConfig.targetLatency).
  • Improve logging system:
    • event logs now include meaningful details in a user-friendly way, and less duplication
    • time entries in human-readable format

3.106.0

Released: 2026-01-16

Changed

Fixed

  • A race-condition which led to missing error information resulting in a Source Error without any error details.

3.105.0

Released: 2026-01-09

Added

Changed

  • Add compatibility with the latest Google Cast iOS sender SDK (4.8.4)
    • Note: 4.8.4 requires a minimum deployment target of iOS 15. To support iOS 14, use a Google Cast SDK version earlier than 4.8.4.

Deprecated


3.104.0

Released: 2025-12-19

Added


3.103.0

Released: 2025-12-11

Changed

  • PlayerEventsApi and its methods are now open to allow integration to implement custom event handling

Fixed

  • Playback errors when using a HTTP redirect for multivariant playlists which are using CRLF (\r\n) new lines characters

3.102.0

Released: 2025-12-04

Added


3.101.0

Released: 2025-11-28

Added


3.100.0

Released: 2025-11-25

Changed

  • Xcode 16.4 and Swift 5.10 or newer is required to integrate the SDK
  • AdvertisingApi from a class to a protocol to allow implementing it in integrations

3.99.0

Released: 2025-11-07

Added

Fixed

Deprecated


3.98.0

Released: 2025-10-31

Added


3.97.2

Released: 2025-10-16

Added

  • Include THIRD-PARTY-NOTICES.md file in all published frameworks

Changed

  • API signature of HttpRequest.headers from NSMutableDictionary to [String: String] to improve usability from Swift. ObjC usage is unaffected.

Fixed

Removed

  • Unused DrmRequest type

3.97.1

Released: 2025-09-26

Fixed


3.97.0

Released: 2025-09-19

Added

  • Support for additional CUE attribute values in HLS Interstitials via DateRangeMetadata.cueingOptions:
    • CUE="PRE" marks an interstitial as a pre-roll (played before main content begins)
    • CUE="POST" marks an interstitial as a post-roll (played after main content has finished)

Changed

  • Media and asset-list reloading for HLS Interstitials:
    Interstitials no longer keep previously loaded resources in memory but re-fetch them from the original URLs on each playback opportunity.
    • The same lifecycle events as for normal loads are re-emitted: AdManifestLoadEvent, AdManifestLoadedEvent, and DownloadFinishedEvent (for X-ASSET-LIST).
    • This ensures updated ad assets are always retrieved, allowing for more flexible monetization opportunities (e.g., refreshed ad content on repeated playback after seeking).

3.96.0

Released: 2025-09-12

Added

Changed

  • Add compatibility with Google IMA SDK for tvOS (4.15.1)
  • Add compatibility with Google IMA SDK for iOS (3.27.4)

Known Issues

  • Google IMA iOS SDK 3.27.4 introduces a memory leak where ads keep the player instance alive even after the PlayerView is destroyed (e.g., when navigating to another View). We raised this issue (link) with the IMA team and are awaiting an update.
    Suggestion: avoid using 3.27.4. Earlier versions of the Google IMA SDK do not show this issue.
  • On iOS 26, the same video-variant playlist may be requested multiple times when loading a stream. As a result, NetworkConfig.preprocessHttpRequest may receive more invocations than expected.

3.95.0

Released: 2025-09-09

Added

  • PictureInPictureApi.isEnabled to dynamically enable or disable Picture-in-Picture at runtime, independent of the initial configuration
    • Toggling this property also updates the UI: when set to false, the PiP button is removed; when set back to true, the PiP button is shown again (if supported)
    • If PiP is currently active when disabling, the session is exited immediately and playback continues in the player view
  • PictureInPictureAvailabilityChangedEvent to signal changes in Picture-in-Picture availability for a PlayerView. Can be observed via UserInterfaceListener

Changed


3.94.1

Released: 2025-08-08

Fixed

  • SourceError when playing Apple Immersive Video assets
  • Skip Ad button losing focus and not being able to focus it again when using BAM with System UI on tvOS

3.94.0

Released: 2025-07-28

Added

Fixed

Known Issues


3.93.0

Released: 2025-07-10

Added

  • DateRangeMetadata.cueingOptions, mapping to the CUE attribute in #EXT-X-DATERANGE tags.
  • Support for CUE="ONCE" on HLS Interstitials: interstitials with this value will be discarded after their first playback, preventing them from being replayed.

Fixed

Changed

  • AdvertisingConfig.shouldPlaySeekedOverAdItems default behaviour for HLS Interstitials:
    • If none of the seeked-over ads are jump-restricted (X-RESTRICT="JUMP"), no item will play after seeking (previously, the last ad would always play).
    • If any of the seeked-over ads are jump-restricted, the last jump-restricted item will play after seeking (previously, the last ad would always play, no matter whether jump-restricted or not).
  • HLS Interstitials are now re-playable by default: previously, interstitials were discarded after playback, skip, or failure. Now, interstitial items will play again each time their scheduled time is reached (e.g., after seeking backwards), unless CUE="ONCE" is set.

3.92.1

Released: 2025-07-04

Fixed

  • Content never gets loaded on the Cast receiver, when the Cast device gets connected before calling Player.load().
  • CastTimeChangedEvent.currentTime and Player.currentTime returns relative time instead of absolute time when casting a live stream.

3.92.0

Released: 2025-06-19

Added

  • Support for HLS Interstitials using #EXT-X-DATERANGE-based ad signaling. This enables scheduled ad breaks during live or VOD playback via timed metadata in the HLS manifest.
    Supported attributes:
    • X-ASSET-URI
    • X-ASSET-LIST
    • X-RESUME-OFFSET
    • X-PLAYOUT-LIMIT
    • X-RESTRICT

Fixed

  • Missing DurationChangedEvent when an HLS stream transitions from Live to VOD resulting in an unusable Player UI

Known Issues

  • For some streams the DurationChanged event is missing when the stream transitions from Live to VOD indicating a potential AVPlayer bug or stream issue. Replay and timeShifting is still possible but the UI will stay in live mode.
  • The System UI appears stuck after a stream transitioned from Live to VOD
  • HLS Interstitials feature:
    • The following attributes in #EXT-X-DATERANGE tags are not currently supported: CUE="ONCE", CUE="PRE", CUE="POST".
    • Non-discardable interstitials are not reloaded after they have been played. When such an interstitial is played again (e.g., after seeking backward), the previously loaded asset is reused instead of being fetched again. This may affect scenarios where updated ad content or refreshed asset data is expected.

3.91.0

Released: 2025-06-16

Changed

  • Improved error code documentation and search preview on the API reference
  • Default value of DownloadConfig.supportClearKeyContent to true to allow downloading ClearKey content by default
  • Live streams without EXT-X-PROGRAM-DATE-TIME tags will no longer have continuous relative currentTime values due to inaccuracy.
  • Logs will include more context information about where they are coming from. This will help Bitmovin engineers to backtrack logs to the SDK implementation.
  • Updated Bitmovin Player Web UI to 3.98.0.

Deprecated

Fixed


3.90.1

Released: 2025-06-06

Fixed

  • Incorrect value of Player.subtitle and no SubtitleChangedEvent emitted when changing subtitle tracks. This fix improves subtitle track switching reliability and ensures proper integration with iOS Closed Captions settings (Settings > Accessibility > Subtitles & Captioning > Closed Captions + SDH).

3.90.0

Released: 2025-05-16

Added

Deprecated

Fixed


3.89.0

Released: 2025-05-08

Added

Fixed

  • Target latency catch up did not trigger after an initial stall when joining an HLS LL stream.
  • automaticallyPreservesLatency not respected after stalls during playback.
  • Occasional unresponsiveness of Bitmovin Player UI

Changed


3.88.0

Released: 2025-04-23

Added

Changed

Removed

  • Deprecated TweaksConfig.disableSubtitleTracksWhileSeeking without replacement as it is no longer required.
  • ThumbnailsApi.registerContainer() method in favor of ThumbnailsApi.container

Fixed


3.87.0

Released: 2025-04-11

Added

  • SDK version to our DocC API reference
  • characteristics to SubtitleTrack and AudioTrack to access CHARACTERISTICS attributes from EXT-X-MEDIA renditions

Fixed

Changed

  • When TweaksConfig.dateBasedTimeShiftingForLiveStreams is enabled for HLS Low Latency streams, the player will try automatically to get closer to the target latency multiple times.
    Due to system limitations, there is no guarantee that the target latency can be reached.

3.86.0

Released: 2025-03-27

Added

Changed

Removed

  • Obsolete player error code 1099: JsonDeserializationFailed

3.85.2

Released: 2025-03-20

Fixed

Changed


3.85.1

Released: 2025-03-07

Fixed

Known Issues

  • Invalid signature of distributed xcframework files due to revoked certificate. See this post for details.

3.85.0

Released: 2025-02-28

Added

  • Additional error codes to SourceError.Code for more granularity when downloading the playlist failed
    • 2205: Downloading the playlist has failed due to an invalid manifest URL.
    • 2210: Downloading the playlist has failed due to an unhandled HTTP redirect (3xx).
    • 2220: Downloading the playlist has failed due to a client-side HTTP error (4xx).
    • 2221: Downloading the playlist has failed due to a bad request.
    • 2222: Downloading the playlist has failed due to missing or invalid authentication credentials.
    • 2223: Downloading the playlist has failed due to insufficient permissions.
    • 2224: Downloading the playlist has failed because the requested manifest could not be found.
    • 2230: Downloading the playlist has failed due to a general server-side issue (5xx).
    • 2231: Downloading the playlist has failed due to an internal server error.
    • 2232: Downloading the playlist has failed due to a bad gateway error.
    • 2233: downloading the playlist has failed because the server is temporarily unavailable.
    • 2234: Downloading the playlist has failed due to a gateway timeout.
  • associatedLanguage to SubtitleTrack and AudioTrack to access ASSOC-LANGUAGE attributes from EXT-X-MEDIA renditions
  • TweaksConfig.parseAdditionalMediaAttributes to control whether the ASSOC-LANGUAGE attribute from EXT-X-MEDIA renditions should be parsed

Changed

  • The SourceErrorEvent.errorCode now contains the underlying system error code for playback failures
  • SourceError.Code, PlayerError.Code and OfflineError.Code enums are no longer deprecated. Properties using those types stay deprecated.
  • Updated Bitmovin Player Web UI to 3.87.0.
  • Playlist download errors are now more granular and using the new SourceError error codes

Fixed

Known Issues

  • Invalid signature of distributed xcframework files due to revoked certificate. See this post for details.

3.84.0

Released: 2025-02-10

Changed

Fixed

Removed

  • Initializer DeficiencyData(code:message:underlyingError). Use DeficiencyData(error:) instead

3.83.0

Released: 2025-02-03

Added

Fixed

  • Duplicate AirPlayAvailabilityChangedEvent events for the same value on subsequent Source loads
  • Playback position not restored when starting AirPlay for live streams without #EXT-X-PROGRAM-DATE-TIME tags

3.82.0

Released: 2025-01-17

Added

Deprecated

Fixed

  • Poster image in PlayerView not rendered correctly in React Native applications
  • Report correct error code 100 via AdErrorEvent when VAST XML parsing fails when using Bitmovin Advertising Module
  • EXT-X-START:TIME-OFFSET was not respected when the stream also contains a EXT-X-PROGRAM-DATE-TIME tag
  • The magnifier glass no longer appears when double tapping any text within the Bitmovin Player UI
  • Played back audio track does not match the one reported as selected by the player and subsequent audio track changes do not work

3.81.0

Released: 2024-12-19

Added


3.80.0

Released: 2024-12-12

Added

Deprecated

  • Player.thumbnail(forTime:) in favor of Player.thumbnails.thumbnail(forTime:).

Fixed

  • Missing PlayingEvent when calling play() while seeking when AirPlay is active.

3.79.0

Released: 2024-12-06

Changed

  • During playback of progressive ads, the UI configured through StyleConfig is now used. Before, progressive ads were not played with a UI. This previous behaviour can be restored by setting AdItem.linearAdUiConfig.requestsUi = false

Fixed

  • Stalling indicator is always displayed during ad playback when System UI is used

3.78.0

Released: 2024-11-22

Added

  • .verbose logging level for DebugConfig.logging.logger?.level. This enables logging all events the Player SDK produces, useful to diagnose problems and trace the flow of execution within the Player.

Changed

  • All public API types from BitmovinPlayer and BitmovinPlayerCore now conform to Sendable protocol to support Swift Concurrency with Swift 6
  • PlayerView is now MainActor isolated to conform to Swift Concurrency requirements with Swift 6 for UIView subclasses
  • APIs in BitmovinPlayerAnalytics now conform to Sendable protocol to support Swift Concurrency with Swift 6

Fixed

Known Issues

  • Stalling indicator is always displayed during ad playback when System UI is used

3.77.0

Released: 2024-10-30

Added


3.76.0

Released: 2024-10-25

Added

Deprecated


3.75.0

Released: 2024-10-14

Added

Changed


3.74.1

Released: 2024-10-09

Fixed

  • Player.timeshift sometimes not changing playback position for specific live streams

3.74.0

Released: 2024-10-04

Changed

  • BufferLevel is now open and can be subclassed for testing purposes
  • BufferLevel's initializer is now public and can be used to create custom instances for testing purposes

Fixed

  • Cast receiver not always starting playback at the same position as local player when starting to cast a live stream

3.73.0

Released: 2024-09-27

Added

Removed

  • Cue's convenience initializers for Objective-C: now it will be necessary to use the complete initializer.
    • initWithStartTime:endTime:text
    • initWithStartTime:endTime:text:vttProperties
    • initWithStartTime:endTime:html
    • initWithStartTime:endTime:image

Known Issues

  • Cue.rawText has the same value as Cue.text in case the caption is embedded in the manifest file

3.72.0

Released: 2024-09-19

Added

Removed

  • Method not implemented warning when the Web UI is calling getSeekableRange

3.71.1

Released: 2024-09-11

Fixed

  • Unnecessarily downloading the first segment of live HLS streams when initially loading the asset
  • Potential infinite buffering with HLS Low Latency stream when initially loading the asset

3.71.0

Released: 2024-09-06

Added

Fixed


3.70.0

Released: 2024-09-02

Added

  • adQuartileFinished methods to Analytics SSAI API

Fixed


3.69.0

Released: 2024-08-23

Added

Changed

Fixed

Deprecated


3.68.0

Released: 2024-08-07

Added

Changed

  • The poster image is now cached and not downloaded again during the lifecycle of a Source e.g. when the Source is inside a playlist and isPosterPersistent is active
  • Extend documentation for closures within NetworkConfig by adding an usage example

Fixed

  • Properly destroy and release IMAAdsManager instances after ads finished playing

Deprecated

Known Issues

  • There is an unexpected behaviour when using the IMA SDK together with NowPlayingConfig. The Google IMA SDK adds its own MPRemoteCommand for play/pause right when the ad starts loading (not when it started playing). Within this time window (approximately around 10 seconds) it's possible that the Ad and the main content are playing at the same time when a user interacts with the Now Playing feature. We raised this issue (link) with the IMA team and are awaiting an update for the IMA iOS SDK.

3.67.0

Released: 2024-07-19

Added

Fixed

  • An issue with the IMA SDK on tvOS where certain ad tags would not emit the STARTED event resulting in a missing AdStartedEvent

3.66.1

Released: 2024-06-28

Fixed


3.66.0

Released: 2024-06-21

Added

  • Support for streaming ads with the Bitmovin Advertising Module (BAM)
  • Improved VAST MediaFile selection by ignoring unsupported MIME-Types and preferring streaming over progressive media files
  • AdSource.videoLoadTimeout to configure the timeout for loading media files of advertisements

Changed

  • Update Google IMA SDK for iOS to latest stable version (3.23.0)
  • Update Google IMA SDK for tvOS to latest stable version (4.13.0)
  • Update Google Cast iOS sender SDK to latest stable version (4.8.1)

Fixed

  • Safe areas not respected for the Bitmovin Player Web UI in landscape

3.65.0

Released: 2024-06-10

Changed

  • Xcode 15.4 and Swift 5.10 or newer is required to integrate the SDK

3.64.0

Released: 2024-05-29

Added

  • PlayerAnalyticsApi.AnalyticsSsaiApi to provide access to the manual SSAI tracking of our Analytics Collector.
  • Buffering overlay is displayed during ad loading for all ad source types (.bitmovin, .ima, .progressive).
  • VastAdData.wrapperAdSystems and VastAdData.wrapperCreativeIds to the Ad.data for VAST ads handled by the Google IMA SDK.

Fixed

  • Playback error of FairPlay content without setting the FairPlayConfig.prepareLicense callback.
  • Two touch interactions needed to skip an ad or open the click-through link when the Bitmovin Advertising Module is used in combination with our Bitmovin Player Web UI.
  • Performance degradation when using side-loaded subtitles.

Changed

  • PlayingEvent, in case of pre-roll ad playback, is now emitted after AdStartedEvent.
  • StallStartedEvent and StallEndedEvent are now emitted during ad loading for all ad source types (.bitmovin, .ima, .progressive).
  • The minimum BitmovinPlayerCollector version to 3.7.0.
  • Updated Bitmovin Player Web UI to 3.64.0.

3.63.0

Released: 2024-05-17

Changed

  • Updated Bitmovin Player Web UI to 3.62.0.
  • Bitmovin Advertising Module macro replacement no longer replaces all unknown macros with -1. Default value replacement can be managed using VastMacroConfig.valueProvider if required.

Fixed

  • Bitmovin Advertising Module macro replacement not working if the macro markers are url encoded.

3.62.0

Released: 2024-05-08

Added

Changed

  • Added DOCTYPE declaration to the HTML document used to render the Bitmovin Player Web UI to prevent quirks mode

Deprecated


3.61.0

Released: 2024-04-26

Added

  • Support for WebVTT coloring information (text and background colors) for side-loaded WebVTT subtitles, and WebVTT subtitles referenced in the manifest. Subtitle cues containing coloring information are provided as HTML through the Cue.html property.

Changed

  • When using the LogEntry initializer from Swift, the code and data properties can be omitted.

Fixed

  • A memory leak of internal components after the Player was released.

3.60.0

Released: 2024-04-12

Added

  • The poster-image is now supported when using the System UI (UserInterfaceType.system) on iOS and tvOS.
  • TweaksConfig.updatesNowPlayingInfoCenter to decide whether AVKit should update Now Playing information automatically when using System UI. You may want to disable automatic updates in case they are interfering with manual updates you are performing.
  • Minimalistic Advertising UI during ad playback when the System UI is used in combination with the Bitmovin Advertising Module.
    • It contains a skip button respecting the customization options from the LinearAdUiConfig.
    • It reacts to user interaction for controlling playback.
    • It handles the clickThroughUrl on iOS and visionOS.

Changed

Fixed

  • Clipped subtitle cues in case of side-loaded subtitle track containing multi-byte unicode characters.
  • Ad not visible when the System UI is used in combination with the Bitmovin Advertising Module.

3.59.0

Released: 2024-04-05

Added

  • Bitmovin Advertising Module as an alternative to using IMA SDK to playback VAST-compliant ads. Using Bitmovin Advertising Module doesn't require any additional dependencies and offers a drop in replacement for the IMA SDK for the most common advertising scenarios. It supports seamless integration with the latest VAST 4.3 standard while offering reliable backward compatibility down to VAST 2.0.
    • AdSourceType.bitmovin to enable Bitmovin Advertising Module for an AdSource.

      // Create an [`AdItem`](<https://cdn.bitmovin.com/player/ios/3.59.0/docs/Classes/AdItem.html>) with one [`AdSource`](<https://cdn.bitmovin.com/player/ios/3.59.0/docs/Classes/AdSource.html>) of type `.bitmovin`
      let adItem = AdItem(
          adSources: [AdSource(tag: adTagUrl, ofType: .bitmovin)],
          // Configure the ad as a pre-roll ad
          atPosition: "pre"
      )
      // You can either create the schedule before player creation using the advertising config
      let advertisingConfig = AdvertisingConfig(schedule: [adItem])
      
      // Add the config to your PlayerConfig
      playerConfig.advertisingConfig = advertisingConfig
      
      // Or use the PlayerAPI to scheduled the ad
      player.scheduleAd(adItem: adItem)
    • LinearAdUiConfig to customise the Bitmovin Advertising UI when AdSourceType.bitmovin is configured.

      let linearAdUiConfig = LinearAdUiConfig()
      linearAdUiConfig.message = "This ad will end in {remainingTime}"
      linearAdUiConfig.untilSkippableMessage = "This ad is skippable in {remainingTime}"
      linearAdUiConfig.skippableMessage = "You can skip this ad now."
      
      // Create an [`AdItem`](<https://cdn.bitmovin.com/player/ios/3.59.0/docs/Classes/AdItem.html>) with one [`AdSource`](<https://cdn.bitmovin.com/player/ios/3.59.0/docs/Classes/AdSource.html>) of type `.bitmovin`
      let adItem = AdItem(
          adSources: [AdSource(tag: adTagUrl, ofType: .bitmovin)],
          // Configure the ad as a pre-roll ad
          atPosition: "pre",
          // Provide a LinearAdUiConfig instance to have built-in support for our default ad UI
          linearAdUiConfig: linearAdUiConfig
      )
    • AdvertisingConfig.bitmovin namespace to configure Bitmovin Advertising Module features.

    • BitmovinAdvertisingConfig.macro to configure macro replacement when using Bitmovin Advertising Module. See VastMacroConfig for more details.

    • VastMacro, VastMacroContext and VastMacroScope to facilitate the macro value providing process.

    • Ad.clickThroughUrlOpened callback to track the opening of the clickThroughUrl in case a custom UI is used.

  • AdvertisingConfig.shouldLoadAdItem(adItem:) callback that can be used to decide whether an AdItem should start loading. It is called once for each AdItem when its loading time is reached.

Fixed

  • Player UI partially or completely covered by the video after exiting Picture-in-Picture mode

Known Issues

  • Ad playback while in Picture-in-Picture mode will result in the ad being played in the main view instead of the Picture-in-Picture view
  • Using System UI via StyleConfig.userInterfaceType with value .system does not render advertisements when Bitmovin Advertising Module is used
  • Bitmovin Advertisement UI needs two taps during ad playback for clickthrough and skip ad interactions
  • URL encoded macros in VAST URLs will not be replaced when using the Bitmovin Advertising Module

3.58.0

Released: 2024-03-29

Changed

Fixed

  • LinearAd.skippableAfter returning 0 instead of .nan for non-skippable advertisements
  • AdFinishedEvent emitted when the ad gets skipped by starting a cast session during ad playback
  • Crash when requesting a thumbnail track or side-loaded subtitle track with a non-200 response status code

3.57.2

Released: 2024-03-22

Fixed

  • Potentially missing SeekedEvent when seeking rapidly after each other across sources

3.57.1

Released: 2024-03-15

Changed

Fixed

  • Invalid current time displayed on the Player UI when entering and leaving background mode during casting

3.57.0

Released: 2024-03-08

Changed


3.56.3

Released: 2024-03-04

Fixed

  • Duplicated ScalingModeChangedEvent delivered when using System UI
  • Subtitle track selection not working while casting when deselecting and reselecting the same track

3.56.2

Released: 2024-02-19

Fixed

  • Potential crash when an IMA Ad results in an error

3.56.1

Released: 2024-02-16

Fixed


3.56.0

Released: 2024-02-09

Added

Changed

  • The minimum BitmovinPlayerCollector version to 3.4.0

Deprecated


3.55.0

Released: 2024-01-26

Added

  • Support for side-loaded SRT (SubRip) subtitles

3.54.0

Released: 2024-01-19

Added

  • Privacy manifests for BitmovinPlayer and BitmovinPlayerCore frameworks

Changed

  • Updated the documentation of Player.skipAd to indicate changed IMA SDK behavior

3.53.0

Released: 2024-01-11

Changed

  • visionOS support is now built with Xcode 15.2

3.52.0

Released: 2023-12-21

Added

Changed

  • NetworkConfig.retryHttpRequest is now called for FairPlay related requests such as license and certificate requests in case of a failure
  • Update Google IMA SDK for iOS to latest stable version (3.19.1)
  • Update Google IMA SDK for tvOS to latest stable version (4.9.2)

3.51.0

Released: 2023-12-15

Changed

  • Xcode 14.2 or newer is required to integrate the SDK. This change was required to fix a Swift Concurrency backport issue on iOS 14.
  • CFBundleShortVersionString no longer contains a pre-released version suffix e.g. -rc.1. This change was made as it's no longer possible to override this value for Frameworks when using Xcode 15 and Apple rejects non-numeric values.

Fixed

  • Pre-release SDK versions e.g. -rc.1 could not be used for uploading applications to App Store Connect
  • Ads scheduled via player.scheduleAd for the same playback position played back in reverse order

3.50.0

Released: 2023-12-01

Added


3.49.0

Released: 2023-11-17

Added

Changed

  • The System UI is now the default UI on visionOS
  • The minimum BitmovinPlayerCollector version was increased to 3.3.0 when using Swift 5.9

3.48.0

Released: 2023-11-13

Added

  • Support for visionOS on Apple Vision Pro
    • The following features are currently unsupported: Google IMA SDK integration, Google Cast SDK integration and AirPlay support
    • Using CocoaPods in a visionOS project is currently not possible due to a known CocoaPods issue

Fixed

  • Crash on iOS Simulators if the IMA SDK was not present
  • Player gets frozen when loading a new source during ad playback

Changed

  • Improved the accuracy of MetadataEvents for ID3 metadata tags
  • MetadataParsedEvents for ID3 metadata tags will be emitted once the information is downloaded instead of when the metadata is due
  • Updated Bitmovin Player Web UI to 3.52.1

3.47.0

Released: 2023-10-23

Added


3.46.0

Released: 2023-10-09

Added


3.45.0

Released: 2023-10-02

Changed

  • Allow adding sources, using player.playlist.add(source:), after playback finished. If the Source was added at the end, it is required to manually transition to the new Source afterwards.
    player.events.on(PlaybackFinishedEvent.self)
        .receive(on: RunLoop.main)
        .sink { _ in
            player.playlist.add(source: sourceToAdd)
            player.playlist.seek(source: sourceToAdd, time: 0)
            player.play() // If desired to start playback automatically
        }
        .store(in: &cancellables)

3.44.2

Released: 2023-09-11

Fixed

  • Potential crash in ConsoleLogger in case there are unexpected String formatting specifiers in the log message

3.44.1

Released: 2023-09-04

Fixed

  • Unexpected caching of the FairplayConfig if it was updated through the SourceConfig on subsequent calls to OfflineManager.getOfflineContentManager(for:)

3.44.0

Released: 2023-08-28

Added

Changed

  • Update Google Cast SDK to latest stable version (4.8.0)

3.43.1

Released: 2023-08-24

Fixed

  • Inconsistent version number for the BitmovinPlayerAnalytics framework

3.43.0

Released: 2023-08-16

Added

Fixed

Changed

  • Updated Bitmovin Player Web UI to 3.50.0

Known Issues

  • Due to an inconsistency in the MARKETING_VERSION field, it's not possible to submit an App to Apple's Review process with this version. This is fixed in version 3.43.1.

3.42.0

Released: 2023-08-01

Added

Fixed

Known Issues

  • Due to an inconsistency in the MARKETING_VERSION field, it's not possible to submit an App to Apple's Review process with this version. This is fixed in version 3.43.1.

3.41.2

Released: 2023-07-24

Fixed


3.41.1

Released: 2023-07-17

Fixed

  • Playback pauses on an AirPlay receiver after putting app back in foreground on iOS 16 and above

3.36.1

Released: 2023-07-11

Fixed


3.41.0

Released: 2023-06-26

Added


3.40.0

Released: 2023-06-12

Added

Changed

  • From 3.40.0 onwards, the BitmovinPlayer framework is a collection of multiple frameworks which defines the final Player product.
    For now, the only dependency is the BitmovinPlayerCore framework. This dependency will always have an exact version match. This means it is not possible to mix incompatible versions together.
  • For ObjC users only:
    • The import for the Player changes from <BitmovinPlayer/BitmovinPlayer.h> to <BitmovinPlayerCore/BitmovinPlayerCore.h>.

Removed

  • Bitcode support. As Apple deprecated bitcode since Xcode 14, we are now also disabling this configuration.

3.39.0

Released: 2023-05-30

Removed

  • Deprecated methods and properties from OfflineManager:
    • offlineState(for:)
    • deleteOfflineData(for:)
    • fetchAvailableTracks(for:)
    • download(sourceConfig:)
    • download(sourceConfig:, downloadConfig:)
    • download(sourceConfig:, tracks:, downloadConfig:)
    • cancelDownload(for:)
    • suspendDownload(for:)
    • resumeDownload(for:)
    • syncOfflineDrmLicenseInformation(for:)
    • offlineDrmLicenseInformation(for:)
    • renewOfflineLicense(for:)
    • createOfflineSourceConfig(for:, restrictedToAssetCache:)
    • add(listener:, for:)
    • remove(listener:, for:)
    • isPlayableOffline(sourceConfig:)
    • usedStorage(for:)
  • Deprecated OfflineManagerListener

Fixed

  • Missing types from API documentation

3.38.0

Released: 2023-05-15

Changed

Fixed

  • SourceConfig.options.startOffset not being respected when using Chromecast

3.37.2

Released: 2023-04-24

Fixed

  • Stalling when a progressive source is loaded into a Player instance that has a source loaded already with autoplay enabled

3.37.1

Released: 2023-04-11

Fixed

  • Ads are covered by main content after exiting Picture-in-Picture playback when another UI is used that is not Bitmovin Player UI

3.37.0

Released: 2023-04-03

Added

Changed

  • Increased minimum required versions to iOS 14.0 and to tvOS 14.0
  • Updated Bitmovin Player Web UI to 3.46.0

Fixed

  • Out-of-view-port caption rendering on iOS 16 by setting UIConfig.forceSubtitlesIntoViewContainer to true per default in our Bitmovin Player Web UI

Deprecated


3.36.0

Released: 2023-03-20

Changed

  • Updated Bitmovin Player Web UI to version 3.45.0

Fixed

  • Potential crashes when Player gets deallocated or destroyed

3.35.1

Released: 2023-03-06

Fixed

  • Buffer level indicator exceeding right edge of seek bar when seeking close to the end in Bitmovin Web UI
  • A memory leak of our internal retry handler
  • Crash during casting when time shifting before a source was loaded

3.35.0

Released: 2023-02-13

Changed

  • Xcode 14.1 or newer is required to integrate the SDK

Fixed

  • SourceUnloadEvent and SourceUnloadedEvent are now emitted correctly after (and not before) the PlayerErrorEvent when a player error occurs
  • DestroyEvent is now emitted correctly after (and not before) the PlayerErrorEvent when a licensing error occurs

3.34.1

Released: 2023-01-30

Changed

  • Removed main-thread assertion leading to runtime crashes when accessing video-quality related API from a background thread

Fixed


3.34.0

Released: 2023-01-19

Added


3.33.0

Released: 2023-01-17

Added

Changed

  • Update Google IMA SDK for iOS to latest stable version (3.18.4)
  • Update Google IMA SDK for tvOS to latest stable version (4.8.2)

Fixed

  • Potential crash when using TweaksConfig.isCustomHlsLoadingEnabled with value true
  • Missing PausedEvent when a participant is doing stall recovery during group playback and the group pauses while the stalling participant is suspended
  • Potential memory leak when using the Bitmovin Player UI

3.32.0

Released: 2022-12-20

Added

  • PlayerViewConfig to configure PlayerView behavior
  • PictureInPictureConfig to group configurations for Picture-in-Picture playback
    • showSkipControls to specify if skip-backward and skip-forward buttons are visible when Picture-in-Picture is active on iOS
    • shouldEnterOnBackground to specify if Picture-in-Picture playback should start automatically when the App enters background
  • PlayerView(player:,frame:,playerViewConfig:) initializer to the PlayerView to allow setting the new PlayerViewConfig
  • .dSYM and .bcsymbolmap files to XCFramework product in order to support crash report symbolication

Deprecated

Removed

  • Deprecated RenderFirstFrameEvent event data object and onRenderFirstFrame event listener from PlayerListener

3.31.0

Released: 2022-12-06

Added

  • Player.sharePlay namespace to control SharePlay related features. SharePlay allows synchronized group playback between participants that are on a FaceTime call together. A SharePlay sample application can be found in our sample repository. The Player.sharePlay namespace offers the following APIs:
    • coordinate(with groupSession:) lets the player join the groupSession to allow group playback
    • isInGroupSession describes whether the player is currently participating in group playback
    • beginSuspension(for suspensionReason:) starts a suspension. The player is not participating in group playback while the suspension is active
    • endSuspension(_ suspension:) and endSuspension(_ suspension:, proposingNewTime newTime:) ends the suspension and optionally proposes a new time that every participant should seek to
    • isSuspended describes whether the player is currently suspended and not able to participate in group playback
    • suspensionReasons describes why the player is currently not able to participate in group playback
  • NetworkConfig.retryHttpRequest callback that can be used to implement a custom retry logic for failed HLS playlist requests

Fixed

  • Potential crash when hitting play on the System UI when no Source is currently loaded

Known Issues
Missing features and known limitations for the SharePlay feature:

  • Trick play (slow/fast-forward and rewind) is not supported
  • Synchronized ad playback and ad break management is not supported
  • Casting is not supported
  • Playlists are not supported
  • Scrubbing suspensions when using Bitmovin UI are not supported
  • System UI is not supported
  • AirPlay and Picture-in-Picture (PiP) are not fully supported. Playback changes done with the AirPlay receiver or PiP mini player are not synchronized with the group. Playback changes done on the AirPlay sender device are working as expected

3.30.0

Released: 2022-11-22

Changed

Removed

  • NSCopying conformance for Config
  • Config as super type from all configs

Fixed


3.29.0

Released: 2022-11-08

Added

Changed

Removed

Fixed

  • Seek/TimeShift and Seeked/TimeShifted event emitting when multiple seek or timeShift operations are done after each other
  • Missing onVideoDownloadQualityChanged listener method in SourceListener

3.28.0

Released: 2022-09-27

Added

Deprecated


3.27.0

Released: 2022-09-13

Added

  • SystemUiApi.customInfoViewControllers which allows adding custom info view controllers that are presented as content tabs on tvOS 15 and above
  • Event emitting for Seek/TimeShift and Seeked/TimeShifted events during casting

Fixed

  • Playback on cast receiver not continuing when destroying the local player
  • Outdated and incomplete documentation for NetworkConfig
  • Performance issues when running on iOS or tvOS simulator
  • Horizontal positioning for cues in WebVTT subtitle tracks on iOS and tvOS 16

3.26.0

Released: 2022-08-30

Added


3.25.0

Released: 2022-08-16

Changed

Removed

  • Deprecated APIs from SourceConfig:
    • HlsSource
    • DashSource
    • ProgressiveSource
    • SourceConfig initializers:
      • init(adaptiveSource:)
      • init(HlsSource)
      • initWithDASHSource:
      • initWithProgressiveSource:
    • SourceConfig properties and methods:
      • urlForType:
      • hasSourceOfType:
      • addSource:error:
      • addAdaptiveSource:error:
      • addProgressiveSource:error:
  • AdaptiveSource, DASHSource, HLSSource, ProgressiveSource, MediaSource classes

Fixed


3.24.0

Released: 2022-08-02

Added

Fixed

  • Accessing the absolute current time via player.currentTime(.absolute) returns a wrong value for live-streams that do not have a EXT-X-PROGRAM-DATE-TIME tag in their manifest

3.23.1

Released: 2022-07-19

Fixed

  • Google IMA SDK overlay not respecting safe area layout of the PlayerView
  • Compilation error when BitmovinPlayer is used within an Objective-C++ (.mm) file
  • Broken PlayerView subclassing for a custom view implementation

3.23.0

Released: 2022-07-05

Added

Fixed


3.22.0

Released: 2022-06-21

Added

  • Picture-in-Picture support on tvOS 14 and above
  • AdBreakStartedEvent.adBreak.totalNumberOfAds and AdBreakFinishedEvent.adBreak.totalNumberOfAds properties to provide the number of ads in an ad break

Fixed

  • Incorrect handling when the application enters background on tvOS, resulting in restarted streams when the application enters foreground again
  • UserInterfaceType.subtitle not properly respected on tvOS resulting in displaying the system UI
  • AdStartedEvent.indexInQueue always returned 0 instead of the proper value

3.21.0

Released: 2022-06-07

Added

Fixed

  • No replay overlay visible on the sender when playback finished during casting
  • Inconsistent player state and event emitting during loading a new Source while casting
  • UI seekbar flickering when loading a live-stream while casting

3.20.0

Released: 2022-05-24

Added

Fixed

  • Incorrect onCastTimeUpdated event fired after pausing the player while casting
  • During casting, after pausing playback and seeing the expected onCastPaused event, an incorrect event sequence of onCastPlaying, onCastTimeUpdated and onCastPaused is seen

3.19.0

Released: 2022-05-10

Added

Changed

Fixed


3.18.0

Released: 2022-04-12

Removed

  • AudioQuality as it was unused

Fixed

  • Player getting stuck when new source is loaded directly from onSourceError listener
  • SourceErrorEvent emitted twice when new source is loaded directly from onSourceError listener
  • Missing AdErrorEvent event for ads with non-supported file types within VMAP manifests
  • Thumbnails not showing on the Bitmovin Player UI
  • Absolute-path relative references not resolved correctly for WebVTT ThumbnailTrack

3.17.0

Released: 2022-03-29

Added

Removed

Fixed

  • offlineDrmLicenseInformation.isDrmLicenseExpired is always showing as expired for FPS protected content
  • Background Playback not working when uiEnabled is false

Changed

  • OfflineContentManager.offlineDrmLicenseInformation to return optional value in order to always represent the correct state
  • OfflineManager.offlineDrmLicenseInformationForSourceConfig: to return optional value in order to always represent the correct state

Deprecated


3.16.0

Released: 2022-03-15

Added

Fixed

  • Incorrect SCTE tag timing when the initial variant playlist has a EXT-X-MEDIA-SEQUENCE of 0
  • CueEnter.text property containing <br> as new-line representation instead of \n
  • CueEnter.html property containing \n as new-line representation instead of <br> for external SubtitleTracks
  • CueEnter.html is empty for SubtitleTracks that are present in the manifest

Changed


3.15.0

Released: 2022-03-01

Added

  • isCastEnabled property to the RemoteControlConfig to enable or disable casting functionality for a player instance
  • Support for ID and CLASS properties for EXT-X-DATERANGE metadata

Fixed

  • Some internal events are emitted through the onEvent listener method

3.14.0

Released: 2022-02-16

Added

  • MetadataParsedEvent to be emitted for inactive sources in a playlist when SCTE metadata is parsed for HLS content
  • MetadataParsedEvent to be emitted for inactive sources in a playlist when Id3 metadata is parsed for HLS content
  • Allow seeking and time shifting as soon as PlayerActiveEvent is seen. Before, it was required to wait until the ReadyEvent is received.
  • Support for negative values for player.playbackSpeed to allow reverse playback
  • Player.canPlayAtPlaybackSpeed API to check if given playbackSpeed value is supported by the currently loaded source

Changed

Fixed

  • Missing TimeShiftEvent and TimeShiftedEvent on tvOS when live stream contains EXT-X-PROGRAM-DATE-TIME
  • Playback via AirPlay for HLS streams hosted on Akamai using Token Authentication
  • Unnecessary caching of HLS playlist requests

Known Issues


3.13.0

Released: 2022-02-01

Added

  • Automatic retries for HLS playlist requests when the previous request failed with an non-2xx HTTP status code

Fixed

  • Time shifting not always working properly when being connected to AirPlay on iOS versions lower than iOS 14.7
  • Potential runtime crash when using Google IMA SDK

Known Issues


3.12.0

Released: 2022-01-18

Added

Removed

  • Underscored methods and properties from documentation

Changed

  • Updated Google Cast SDK to latest stable version (4.7.0)

Fixed

  • Partially downloaded offline data getting discarded when upgrading from version 2.64.2 or below
  • Resuming offline downloads after upgrading from version 2.64.2 or below
  • Crash during seeking while connecting to Google Cast device
  • PlayEvent is fired too late when PlaybackConfiguration.isAutoplayEnabled is set to true
  • Documentation generation for various types
  • Missing documentation for tvOS only properties

Deprecated

Known Issues


3.11.0

Released: 2021-12-21

Changed

  • Updated Google IMA SDK to latest stable version (3.14.5)

Fixed

  • Missing PlayingEvent when SourceOptions.startOffset is configured and PlaybackConfiguration.isAutoplayEnabled is set to true
  • Deprecation message pointing to non-existing API for OfflineManager.isPlayableOffline
  • Content being paused on Google Cast receiver when sender device gets locked
  • Content being reloaded unnecessarily on Google Cast receiver when sender application is brought back to foreground

Known Issues

  • Picture-in-Picture mode is not working on iOS 14.0 and iOS 14.1
  • Playback gets stuck when playing a Progressive Ad that results in an AdError
  • Loading a new Source from a PlayerErrorEvent or a SourceErrorEvent does not work
  • Loading a new Source from a PlaybackFinishedEvent sometimes does not start playback automatically when PlaybackConfig.isAutoPlayEnabled is set to true
  • When our default Bitmovin Player Web UI is used it can happen that the label of an AudioTrack keeps the value of the previous source
  • Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below 2.64.2 to this version

3.10.0

Released: 2021-12-07

Added

Changed

Deprecated

Removed

  • Internal types from public documentation

Fixed

  • Downloading ClearKey (AES-128) protected content when SourceConfig.title is not set
  • Calling player.audio or player.setAudio(trackIdentifier:) before the source finishes loading blocks the main thread

Known Issues

  • Picture-in-Picture mode is not working on iOS 14.0 and iOS 14.1
  • Playback gets stuck when playing a Progressive Ad that results in an AdError
  • Loading a new Source from a PlayerErrorEvent or a SourceErrorEvent does not work
  • Loading a new Source from a PlaybackFinishedEvent sometimes does not start playback automatically when PlaybackConfig.isAutoPlayEnabled is set to true
  • When our default Bitmovin Player Web UI is used it can happen that the label of an AudioTrack keeps the value of the previous source
  • Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below 2.64.2 to this version

3.9.2

Released: 2021-11-23

Fixed

  • Performance issues on iOS 15 when preloading a playlist with many sources
  • A potential crash on iOS 15 when preloading a playlist with many sources

Known Issues

  • Picture-in-Picture mode is not working on iOS 14.0 and iOS 14.1
  • Playback gets stuck when playing a Progressive Ad that results in an AdError
  • Loading a new Source from a PlayerErrorEvent or a SourceErrorEvent does not work
  • Loading a new Source from a PlaybackFinishedEvent sometimes does not start playback automatically when PlaybackConfig.isAutoPlayEnabled is set to true
  • When our default Bitmovin Player Web UI is used it can happen that the label of an AudioTrack keeps the value of the previous source
  • Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below 2.64.2 to this version

3.9.1

Released: 2021-11-11

Fixed

  • Broken playback of downloaded FairPlay protected content when upgrading from SDK version 2.64.2 or below to v3 or from 3.3.0 or below to v3

Known Issues

  • Picture-in-Picture mode is not working on iOS 14.0 and iOS 14.1
  • Playback gets stuck when playing a Progressive Ad that results in an AdError
  • Loading a new Source from a PlayerErrorEvent or a SourceErrorEvent does not work
  • Loading a new Source from a PlaybackFinishedEvent sometimes does not start playback automatically when PlaybackConfig.isAutoPlayEnabled is set to true
  • When our default Bitmovin Player Web UI is used it can happen that the label of an AudioTrack keeps the value of the previous source
  • Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below 2.64.2 to this version

3.9.0

Released: 2021-10-12

Added

Fixed

  • A memory leak inside a Source object after it was loaded into a player, which lead to never releasing it

Known Issues

  • Picture-in-Picture mode is not working on iOS 14.0 and iOS 14.1
  • Playback gets stuck when playing a Progressive Ad that results in an AdError
  • Loading a new Source from a PlayerErrorEvent or a SourceErrorEvent does not work
  • Loading a new Source from a PlaybackFinishedEvent sometimes does not start playback automatically when PlaybackConfig.isAutoPlayEnabled is set to true
  • When our default Bitmovin Player Web UI is used it can happen that the label of an AudioTrack keeps the value of the previous source
  • Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below 2.64.2 to this version
  • When upgrading to this version, FairPlay protected streams that were downloaded with a version before 2.64.2 for v2 to v3 upgrade or before 3.3.0 for a v3 to v3 upgrade (using OfflineManager) are not playable anymore when the device is offline

3.8.0

Released: 2021-09-28

Added

Fixed

  • Crash when stopping the cast session after a SourceConfig was used for loading an asset

Changed

  • The documentation for showSeekBar and showInfoViews on the SystemUserInterfaceConfiguration to properly reflect it's behaviour on tvOS 15

Known Issues

  • Picture-in-Picture mode is not working on iOS 14.0 and iOS 14.1
  • Playback gets stuck when playing a Progressive Ad that results in an AdError
  • Loading a new Source from a PlayerErrorEvent or a SourceErrorEvent does not work
  • Loading a new Source from a PlaybackFinishedEvent sometimes does not start playback automatically when PlaybackConfig.isAutoPlayEnabled is set to true
  • When our default Bitmovin Player Web UI is used it can happen that the label of an AudioTrack keeps the value of the previous source
  • Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below 2.64.2 to this version
  • When upgrading to this version, FairPlay protected streams that were downloaded with a version before 2.64.2 for v2 to v3 upgrade or before 3.3.0 for a v3 to v3 upgrade (using OfflineManager) are not playable anymore when the device is offline

3.7.0

Released: 2021-09-14

Added

Fixed

  • Seeking backwards within a playlist is never finished on iOS 15
  • isPlaying occasionally returned false inside an onPlaylistTransition listener method
  • Bitmovin Player Web UI occasionally stays visible after a transition to a subsequent source
  • AirPlayToggleButton not updating to active state when AirPlay is active

Changed


3.6.1

Released: 2021-08-31

Fixed

  • AirPlay playback session is paused when iOS device gets locked
  • Subsequent Sources within a playlist don't finish preloading before transitioning on iOS 12

Changed

  • Making several Events open for extending and changed their initializers to public for better integration support

3.6.0

Released: 2021-08-19

Added

Deprecated

  • BitmovinCastManager.initializeCasting(applicationId:) and BitmovinCastManager.initializeCasting(applicationId:messageNamespace:) in favor of BitmovinCastManager.initializeCasting(options:)

Fixed

  • Offline FairPlay license renewal and synchronization
  • Failing offline playback for assets with dual-expiry FairPlay licenses
  • Removed internal types from public documentation

3.5.0

Released: 2021-08-03

Added

Fixed

  • Different text size between single-line and multi-line subtitles when using Bitmovin Player Web UI

Changed


3.4.0

Released: 2021-07-20

Added

Changed

Fixed

  • No audio on playback when there is no default audio track defined in the asset
  • Unexpected TimeChanged events when calling play right after the PlaybackFinished event
  • Online playback occasionally not starting for AES-128 protected streams
  • StallingEnded event being emitted after Playing event
  • Unexpected MetadataEvents for SCTE tags during seeking

Deprecated


3.3.0

Released: 2021-06-22

Added

  • MetadataParsedEvent to be emitted for inactive sources in a playlist when Daterange metadata is parsed for HLS content

Changed

Fixed

  • Issue that SourceConfigs that are not downloaded for offline playback were marked as already downloaded.
  • Offline playback of AES-128 encrypted HLS content when only a variant playlist is used
  • Removed internal extensions from public documentation

3.2.0

Released: 2021-06-08

Added


3.1.0

Released: 2021-05-26

Added

Fixed

  • Incorrect value of isPlaying and isPaused inside the Bitmovin Player Web UI when the PlaybackFinishedEvent is received.

3.0.1

Released: 2021-05-11

Changed

Fixed

  • Crash when destroying player during ad playback
  • No stalling indicator visible when stalling is in progress when transitioning from one Source to another happens
  • Incorrect Source.loadingState when the following event listeners were called: SourceLoad / SourceLoaded / SourceUnload / SourceLoaded
  • Additional SourceLoaded events when a Source already finished preloading during playback of the previous Source
  • Player is returning data from the previous source inside the PlaylistTransitionEvent (e.g. Player.availableAudio, Player.availableSubtitles)

3.0.0

Released: 2021-04-27

Added

  • Native support for running the SDK on iOS/tvOS simulators on Apple Silicon
  • Player protocol, which replaces the BitmovinPlayer as the main player type
  • PlayerFactory to create Player instances
  • Source protocol as top-level type
  • SourceFactory to create Source instances
  • SourceState indicating the current state of a Source
  • Player.source that returns the currently active source
  • Player.load(source:) to load a single Source
  • PlaylistConfig to configure playback of multiple sources
  • PlaylistOptions to customize additional playlist behaviour
  • Player.playlist namespace to control playback of multiple sources
  • Player.load(playlistConfig:) to load multiple Sources
  • Player.registerPlayerLayer for custom native UI support using an AVPlayerLayer
  • Player.registerPlayerViewController for custom native UI support using an AVPlayerViewController
  • Player.registerAdContainer for custom native UI support to register the container view which should be used for Ad rendering
  • TweaksConfiguration.seekToEndThreshold to configure the threshold when seeking to the end in seconds
  • The sender to the each PlayerListener method to distinguish which Player emitted an event
  • Events
    • PlaybackTransitionEvent to indicate a transition from one Source to another
    • PlayerActiveEvent to indicate the player got a source to load
    • PlayerInactiveEvent to indicate when a player does not have any source anymore

Fixed

  • AdaptationConfig and NetworkConfig not extending Config
  • CloseButton of the SettingsPanel sliding out of Safe Area in Bitmovin Player Web UI v3
  • Subtitles are rendered very close to the bottom Safe Area in Bitmovin Player Web UI v3

Changed

Removed

  • Player.setup - Pass the PlayerConfig to the PlayerFactory instead
  • PlayerConfig.sourceConfig - Loading a source from the PlayerConfig is no longer supported
  • ConfigurationUpdatedEvent
  • PlayerView - The BitmovinPlayerView from v2 became the new PlayerView
  • PlaybackType
  • SourceConfig.drmConfigs
  • SourceConfig.add(drmConfig:)
  • Player.streamType - Use SourceConfig.type instead
  • Jsonable implementation
  • All non-is* (e.g. playing) boolean properties on the API when used from ObjC
  • Player.preload
  • iOS/tvOS 10 Support
  • iOS/tvOS 11 Support
  • Support for non CAF Cast Receivers
  • Support for Bitmoivn Player Web UI v2

Deprecated


Did this page help you?