2.4.5
Released: 23.06.2026
Summary
- Fix preferred audio and subtitles track
2.4.4
Released: 22.06.2026
Summary
- Redesign playlist UI on mobile
- fix audioOnly UI not applied
- refactor public api of player UI viewmodel (deprecated)
- fix beaconing edge cases
2.4.1
Released: 05.06.2026
Summary
- Redesign playlist UI on mobile
- fix audioOnly UI not applied
- refactor public api of player UI viewmodel (deprecated)
2.3.12
Released: 14.05.2026
Summary
- fix missing watermarks on tvOS
- remove watermarks alpha pixels clipping
2.3.11
Released: 28.04.2026
Summary
- fix minor issue with Premier VODs
2.3.8
Released: 21.04.2026
Summary
- fix resources handling with SPM for Tuist support
2.3.7
Released: 20.04.2026
Summary
- improve HTTP logging
- fix HTTP decoding error regression from 2.3.5
- add platform specific seekintervals from realm settings
2.3.5
Released: 17.04.2026
Summary
- Add VesperSDKManager.setDebugEnabled method to toggle verbose logging
- Add dedicated playback error message to tell that DRM content is not playable on simulators
- Fix CSAI ads breaks playback if they do not contain prerolls
2.3.3
Released: 03.04.2026
Summary
- fix smarter subtitles off selection incorrect logic
- remove redundant unspecified kind from subtitles
- minor tvOS labels fixes
2.3.1
Released: 20.03.2026
Summary
- fix public inits of beacon context
- fix chromecast audio selection from UI not working in some cases
- fix unload during preloading does not cancel preload
2.3.0
Released: 20.03.2026
Summary
- update tvOS ui
- separate beacon watch context and content watch context in ResolvableSource
- fix CSAI Ads keep pause after user close whyThisAd View
- fix ad countdown on tvOS
2.2.9
Released: 05.03.2026
Summary
- fix creating new playerManager breaks output of previous playerManager
2.2.5
Released: 10.02.2026
Summary
- add tvOS support
- fix countdown timer with premier vods not deallocating
- force playback rate control text color in settings to be always white
- support pause ads looping via new player config toggle
2.1.0
Released: 27.01.2026
Summary
- Removed x86_64 simulator slice because of one of the dependencies does not support it anymore, so this SDK will only build on arm64 simulators/devices
- Smart subtitle selection feature
- New public types: SmartSubtitleMapping, AudioLanguage, SubtitleLanguage, SubtitleKind
- New property: ResolvableSource.smartSubtitles: [SmartSubtitleMapping]?
- New property: DorisMediaSelectionPluginProtocol.smartSubtitles: [SmartSubtitleMapping]?
- Allows mapping specific subtitle languages to specific audio languages
- Pause/Overlay Ad Support
- New property: AdsConfig.isPauseAdsEnabled: Bool
- New property: AdsConfig.treatAllOverlayAdsAsPauseAds: Bool
- Supports pause ads for VOD and live content
- Fixed ads being skipped after seek operation
- Fixed tracks disappearing when switching to next playlist item
- Fixed ads snapback behavior when subtitles are enabled
- Fixed ad countdown view incorrectly showing when seeking backward before ad position
- Fixed SKIP button not working for promo on Chromecast
2.0.2
Released: 25.11.2025
Summary
- removed custom ads countdown for Google IMA SDK
- switch to build-in IMA ads countdown UI
- add localization support for Google IMA SDK
2.0.1
Released: 21.11.2025
Summary
- Add spm support
2.0.0
Released: 20.11.2025
New Features
- Display types (
DisplayTypes): newnaked,minibar,miniPlayer,regular,max. See the Getting Started guide and example app for usage. - UI management:
UIManagerConfig: switch display types viaUiManagerUIManagerConfigToggles: toggle individual UI components viaUiManagerConfig
- Player configuration:
PlayerManagerConfig: updatebandwidthPolicyandlocalizationConfigviaPlayerManagerPlayerManagerConfigToggles: toggleisPipEnabledviaPlayerManagerConfig
- Added Google PAL SDK support.
- Added countdown UI for Premiere VOD / future-scheduled streams. #### API Changes
ResolvableSource:watchContextis nowArray<WatchContext>(last element determines the collection; keep a single element to preserve 1.x behavior). List is forwarded to the Beacon API for continue-watching.- Added optional
beaconContext(standard,heroPreview,bucketPreview; defaultstandard) used as the Beacon APIctx. - Added optional
allowClientSideAds(defaulttrue) to control CSAI playback. - Added optional
LimitedSeekRangeto restrict live-stream timelines.
ApiConfig:- Added
contentLanguageCode(defaulten-US) for UI label language. - Added
allowStorageForGooglePal(defaultfalse) to signal if the publisher manages Google PAL storage consent.
- Added
Some dependencies are pod spec dependencies instead of rebuilding them as vendored frameworks
- GoogleAds-IMA-iOS-SDK
- ConvivaAVFoundation
- Mux-Stats-AVPlayer
some Player/View events/states are changed/removed/renamed/added
Other minor improvements and bug fixes
Events/States
DorisViewStatedrops the seekIdle and playingAds cases, introduces progressiveSeekingDorisViewUniversalEventnow routes seek interactions through richer gesture cases (seekBarPanned, viewPanned), replaces quality selection with bandwidthPolicyModeSelected, and adds accessibility-driven hooks (voiceOverStatusChanged, voiceOverFocusChanged) plus layout change notifications.
public enum DorisViewUniversalEvent {
case viewLoaded
…
case bandwidthPolicyModeSelected(BandwidthPolicy.Mode?)
case seekBarAnnotationTapped(value: Double)
case seekBarPanned(state: UIGestureRecognizer.State, offsetPercent: Double, isRemote: Bool)
case progressiveSeekDidUpdate(interval: Double)
…
case viewPanned(state: UIGestureRecognizer.State, offsetPercent: Double, isRemote: Bool)
…
case layoutTypeChanged(DorisUIDisplayType)
case voiceOverStatusChanged(Bool)
case voiceOverFocusChanged
}
- DorisViewTapEvent has been refactored to separate specific tap locations (buttons vs. surface), adds remote/voice-over seek cases, removes generic ads/live tap cases, and expands skip marker data.
public enum DorisViewTapEvent {
case playPauseButtonTap
case seekBackButtonTap
case seekForwardButtonTap
case viewLeftTap
case viewRightTap
case seekBarLeftTap
case seekBarRightTap
case seekBarRemoteTap
case seekBarVoiceOverDecrement
case seekBarVoiceOverIncrement
…
case castButtonTapped
…
case longPressedLeftOnView
case longPressedRightOnView
…
case skipMarkerButtonTap(SkipMarkerType)
case watchFromStartButtonButtonTap
…
}
- DorisSystemEvent (PiP application observer) now emits willResignActive and didBecomeActive, and the observer subscribes to the corresponding UIApplication notifications.
public enum DorisSystemEvent {
…
case willResignActive
case didBecomeActive
}
- DorisPlayerEvent adds loadInitiated, simplifies willLoadNow (drops delay), emits queueItemsChanged, replaces playbackQualityChanged with a more general bitrateChanged, and adds didUnload.
public enum DorisPlayerEvent {
…
case didTimeControlStatusChange(status: AVPlayer.TimeControlStatus)
case loadInitiated
case willLoadAfterDelay(delay: Double, initialSeek: SeekType?)
case willLoadNow(initialSeek: SeekType?)
…
case queueItemsChanged(items: [QueueItem])
case availableMediaTracksChanged(tracks: [MediaTrack])
…
case bitrateChanged(bitrate: Double, policy: BandwidthPolicy)
case volumeChanged(volume: Float)
case didUnload
}
1.2.5
Released: 14.10.2025
Summary
- add autoplay param to load method
- fix multiple players with DRM issue
1.2.4
Released: 03.06.2025
Summary
- Fix seekbar not seeking sometimes after iOS 18.4 upgrade
1.2.3
Released: 07.04.2025
Summary
- fix watermark appearance
1.2.2
Released: 18.03.2025
Summary
- Fix default mux key environment
1.2.1
Released: 07.02.2025
Summary
- Hide playback rate option in settings for lives with short DVR window
- fix content playing in background while CSAI ads are playingfix player deallocation issues
- fix CSAI ads overlay transparent background in fullscreen
- fix annotations markers incorrect layout
- fix close button visibility issues when close button is disabled
- fix play/pause visibility toggle while playing ads
- other minor bug fixes
1.2.0
Released: 10.01.2025
Summary
- support direct-manifest ads type
- rename BaseView to avoid collisions
- update audioOnly streams UI behaviour
1.1.5
Released: 19.12.2024
Summary
- Remove SDWebImage dependency
1.1.4
Released: 16.12.2024
Summary
- fix streams with server side ads forever loading
- Other bug fixes
1.1.3
Released: 14.11.2024
Summary
- Fix: strip bitcode from OMSDK framework
1.1.2
Released: 01.11.2024
Summary
- update MUX player name and version
1.1.1
Released: 23.10.2024
Bug fixes
- fix passing startAt to ResolvableSource had no effect
1.1.0
Released: 16.10.2024
General
- VesperSDK built with Xcode 16, swift 6
- upgrade Yospace SDK dependency to 3.8.1
Bug fixes
- fix Xcode 16 related build issues
- Ads seek with snapback is not triggered when seeking back now, only forward
1.0.3
Released: 04.10.2024
Bug fixes
- fix UI updates not on main thread
1.0.2
Released: 02.10.2024
Features
- added manual UI configurations
playerManager.uiManager?.viewModel.labels.playbackTimesViewModel.countDownType
playerManager.uiManager?.viewModel.toggles.isTitleOnFullscreenVisible
playerManager.uiManager?.viewModel.toggles.isCloseButtonVisible
playerManager.uiManager?.viewModel.toggles.isSettingsButtonVisible
playerManager.uiManager?.viewModel.toggles.isDefaultSettingsViewEnabled
- added prefilled UI configurations from Realm settings
seekForwardIntervalInSecondsForLive
seekBackwardIntervalInSecondsForLive
seekForwardIntervalInSecondsForVod
seekBackwardIntervalInSecondsForVod
1.0.1
Released: 06.09.2024
Bug fixes
- fixed missing chromecast button
1.0.0
Released: 23.08.2024