[object Object] Icon

Encoding
Learn how to create, start, manage and modify Encodings

[object Object] Icon

Player
Learn how to create, start, manage and modify Players

[object Object] Icon

Analytics
Learn how to create, start, manage and modify Analyticss

Docs Home
User shortcuts for search
Focus by pressing f
Hide results by pressing Esc
Navigate via   keys

Player iOS / tvOS Releases

Latest Releases

Date

Version

Stable

3/20/2023

3.36.0

Changed

  • Updated Bitmovin Player Web UI to v3.45.0

Fixed

  • Potential crashes when Player gets deallocated or destroyed

Stable

3/6/2023

3.35.1

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

Stable

2/13/2023

3.35.0

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

Stable

1/30/2023

3.34.1

Changed

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

Fixed

  • Player.timeShift returning 0 after time-shifting when the System UI is used.
  • TimeShiftEvent.timeShift returning 0 when the System UI is used for time-shifting.
  • Missing PausedEvent during group playback when pausing right after seeking

Stable

1/19/2023

3.34.0

Added

  • PlayerView.pictureInPicture API namespace to group picture in picture related APIs together going forward
  • PictureInPictureApi.showSkipControls to dynamically specify if skip-backward and skip-forward buttons are visible when Picture in Picture is active on iOS
  • PictureInPictureConfig.restoreUserInterfaceHandler to provide the possibility to restore the user interface before Picture in Picture stops

Stable

1/17/2023

3.33.0

Added

  • BitmovinCastManagerOptions.deviceDiscoveryMode to specify when cast devices discovery should start

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

Stable

12/20/2022

3.32.0

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

Removed

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

Deprecated

  • PlaybackConfig.isPictureInPictureEnabled in favor of PictureInPictureConfig.isEnabled

Stable

12/6/2022

3.31.0

Added

  • Player.sharePlay namespace to control SharePlay related features. SharePlay allows synchronized group playback between participants that are on a FaceTime call together. Learn more about SharePlay in our tutorial. 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

Stable

11/22/2022

3.30.0

Changed

  • PlayerConfig from open to final to restrict subclassing

Removed

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

Fixed

  • Endless stalling after seeking on iOS 16.1 when TweaksConfig.unstallingBehaviour is set to .aggressive for HLS assets
  • Bad structure of TweaksConfig.isCustomHlsLoadingEnabled documentation

Stable

11/8/2022

3.29.0

Added

  • ImaSettings type to improve usability when Google IMA SDK is used
  • ImaAdsManager type to improve usability when Google IMA SDK is used
  • VideoPlaybackQualityChangedEvent which is emitted when the playback video quality changes

Changed

  • Improved documentation on AdBreak.ads to state limitations
  • AdvertisingConfig.beforeInitialization property now uses our own ImaSettings type instead of Google IMA SDK to improve usability
  • AdvertisingConfig.onAdsManagerAvailable property now uses our own ImaAdsManager type instead of Google IMA SDK to improve usability

Removed

  • autoPlayAdBreaks property when using IMASettings from AdvertisingConfig.beforeInitialization, as using this property has no effect on ad playback
  • playerType property when using IMASettings from AdvertisingConfig.beforeInitialization, as using this property has no effect on ad playback
  • enableDebugMode property when using IMASettings from AdvertisingConfig.beforeInitialization, as using this property has no effect on ad playback
  • delegate property when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as using this caused undefined behavior, potentially breaking playback
  • adPlaybackInfo property when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as all of this information is available via Player API during ad playback
  • volume property when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as this is available via Player.volume API during ad playback
  • initialize(with:) when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as this had no effect
  • start() method when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as ads are starting automatically when scheduled if playing, or can be started using via Player.play()
  • pause() method when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as this is available via Player.pause() API during ad playback
  • resume() method when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as this is available via Player.play() API during ad playback
  • skip() method when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as this is available via Player.skipAd() API during ad playback
  • clicked() when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as this API had no effect when used
  • destroy() when using IMAAdsManager from AdvertisingConfig.onAdsManagerAvailable, as using this caused undefined behavior, potentially breaking playback

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

Latest Releases

Give us feedback