Player iOS / tvOS Releases
Latest Releases
Stable
3.36.0
3/20/2023
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
andSourceUnloadedEvent
are now emitted correctly after (and not before) thePlayerErrorEvent
when a player error occursDestroyEvent
is now emitted correctly after (and not before) thePlayerErrorEvent
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
returning0
after time-shifting when the System UI is used.TimeShiftEvent.timeShift
returning0
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 forwardPictureInPictureApi.showSkipControls
to dynamically specify if skip-backward and skip-forward buttons are visible when Picture in Picture is active on iOSPictureInPictureConfig.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 valuetrue
- 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 configurePlayerView
behaviorPictureInPictureConfig
to group configurations for Picture in Picture playbackshowSkipControls
to specify if skip-backward and skip-forward buttons are visible when Picture in Picture is active on iOSshouldEnterOnBackground
to specify if Picture in Picture playback should start automatically when the App enters background
PlayerView(player:,frame:,playerViewConfig:)
initializer to thePlayerView
to allow setting the newPlayerViewConfig
.dSYM
and.bcsymbolmap
files to XCFramework product in order to support crash report symbolication
Removed
- Deprecated
RenderFirstFrameEvent
event data object andonRenderFirstFrame
event listener fromPlayerListener
Deprecated
PlaybackConfig.isPictureInPictureEnabled
in favor ofPictureInPictureConfig.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. ThePlayer.sharePlay
namespace offers the following APIs:coordinate(with groupSession:)
lets the player join thegroupSession
to allow group playbackisInGroupSession
describes whether the player is currently participating in group playbackbeginSuspension(for suspensionReason:)
starts a suspension. The player is not participating in group playback while the suspension is activeendSuspension(_ suspension:)
andendSuspension(_ suspension:, proposingNewTime newTime:)
ends the suspension and optionally proposes a new time that every participant should seek toisSuspended
describes whether the player is currently suspended and not able to participate in group playbacksuspensionReasons
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
fromopen
tofinal
to restrict subclassing
Removed
NSCopying
conformance forConfig
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 usedImaAdsManager
type to improve usability when Google IMA SDK is usedVideoPlaybackQualityChangedEvent
which is emitted when the playback video quality changes
Changed
- Improved documentation on
AdBreak.ads
to state limitations AdvertisingConfig.beforeInitialization
property now uses our ownImaSettings
type instead of Google IMA SDK to improve usabilityAdvertisingConfig.onAdsManagerAvailable
property now uses our ownImaAdsManager
type instead of Google IMA SDK to improve usability
Removed
autoPlayAdBreaks
property when usingIMASettings
fromAdvertisingConfig.beforeInitialization
, as using this property has no effect on ad playbackplayerType
property when usingIMASettings
fromAdvertisingConfig.beforeInitialization
, as using this property has no effect on ad playbackenableDebugMode
property when usingIMASettings
fromAdvertisingConfig.beforeInitialization
, as using this property has no effect on ad playbackdelegate
property when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as using this caused undefined behavior, potentially breaking playbackadPlaybackInfo
property when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as all of this information is available viaPlayer
API during ad playbackvolume
property when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.volume
API during ad playbackinitialize(with:)
when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this had no effectstart()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as ads are starting automatically when scheduled if playing, or can be started using viaPlayer.play()
pause()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.pause()
API during ad playbackresume()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.play()
API during ad playbackskip()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.skipAd()
API during ad playbackclicked()
when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this API had no effect when useddestroy()
when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as using this caused undefined behavior, potentially breaking playback
Fixed
Seek
/TimeShift
andSeeked
/TimeShifted
event emitting when multiple seek or timeShift operations are done after each other- Missing
onVideoDownloadQualityChanged
listener method inSourceListener