You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This release makes downloads and offline playback publicly available on iOS, and revisits URL-based and standard connector item creation to support them.
Note
Pillarbox now requires Xcode 27 (Swift 6.4). Downloads require iOS 17 or above and are not available on tvOS. Downloading FairPlay-protected content is not supported yet.
Improvements
Added public support for downloads and offline playback with URLDownloader (URL-based content), StandardDownloader (Pillarbox standard metadata) and URNDownloader (SRG SSR content). Custom stores can be used with Downloader and AssetDownloadStore. See the new "Downloads and Offline Playback" article.
Added DownloadConfiguration to choose the quality (preferredPeakBitRate, preferredMaximumResolution) and the audio and subtitle languages (DownloadMediaSelectionPreference) of downloaded content.
Added Download.size to show how large a download is and how much of it has completed.
Added support for downloading and playing AES-128 protected content offline.
Made PlayerConfiguration, PlaybackConfiguration and PlayerLimits properties mutable.
Made PlayerData properties public so they can be used in custom asset providers.
Added AssetLoader.downloadableAssetPublisher(from:metadata:) to provide a different asset for downloading, if needed. A default implementation is provided.
Requests for SRG SSR metadata now include platform information, so the resource best suited for Apple platforms is selected by the server.
Added useful SRG SSR metadata response headers to events sent to Pillarbox monitoring (MetricsTracker.Metadata(metadataUrl:metadataHeaders:assetUrl:)).
Added scrolling for long chapter titles in the Info panel on tvOS 26.
Updated for Xcode, iOS and tvOS 27.
Fixes
Fixed Player.resume(_:in:) when resuming an item other than the current one.
Made Player.resume(_:in:) ignore invalid positions.
Fixed a potential infinite recursion that could occur when a seek failed, most notably near the end of a stream.
Breaking Changes
PlayerMetadata is now a type alias for AssetMetadata<EmptyCustomData>. AssetMetadata now exposes metadata fields (title, subtitle, imageSource, chapters, etc.) directly and no longer has a playerMetadata property. Create it with AssetMetadata(identifier:title:…:customData:).
Moved EmptyCustomData from PillarboxStandardConnector to PillarboxPlayer. It is now Codable.
Removed PlayerItem.init(asset:metadata:trackerAdapters:), PlayerItem.custom(url:delegate:metadata:trackerAdapters:configuration:) and PlayerItem.encrypted(url:delegate:metadata:trackerAdapters:configuration:), as well as the configuration parameter of PlayerItem.simple(url:metadata:trackerAdapters:). To create custom or encrypted items, or to provide a custom configuration, implement a URLAssetLoaderProvider and use PlayerItem.custom(assetProviderType:url:metadata:trackerAdapters:).
Replaced PlayerItem.standard(request:type:decoder:trackerAdapters:assetProvider:) and PlayerItem.standard(request:decoder:trackerAdapters:assetProvider:) with PlayerItem.standard(assetProviderType:input:trackerAdapters:). Implement a StandardAssetLoaderProvider to supply the request, decoder and asset.
Moved Source to PlayerData.Source.
Removed MediaComposition.Chapter.recommendedResource and MediaComposition.StreamingMethod.supportedMethods. The server now returns resources suited for Apple platforms first.
Demo Improvements
Added settings to choose the quality and the audio and subtitle languages of downloads.
Moved URL-based downloads to the new URLDownloader API.
Added AES-128 protected content examples.
Added a sign language toggle example to the showcase.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
This release makes downloads and offline playback publicly available on iOS, and revisits URL-based and standard connector item creation to support them.
Note
Pillarbox now requires Xcode 27 (Swift 6.4). Downloads require iOS 17 or above and are not available on tvOS. Downloading FairPlay-protected content is not supported yet.
Improvements
URLDownloader(URL-based content),StandardDownloader(Pillarbox standard metadata) andURNDownloader(SRG SSR content). Custom stores can be used withDownloaderandAssetDownloadStore. See the new "Downloads and Offline Playback" article.DownloadConfigurationto choose the quality (preferredPeakBitRate,preferredMaximumResolution) and the audio and subtitle languages (DownloadMediaSelectionPreference) of downloaded content.Download.sizeto show how large a download is and how much of it has completed.PlayerConfiguration,PlaybackConfigurationandPlayerLimitsproperties mutable.PlayerDataproperties public so they can be used in custom asset providers.AssetLoader.downloadableAssetPublisher(from:metadata:)to provide a different asset for downloading, if needed. A default implementation is provided.MetricsTracker.Metadata(metadataUrl:metadataHeaders:assetUrl:)).Fixes
Player.resume(_:in:)when resuming an item other than the current one.Player.resume(_:in:)ignore invalid positions.Breaking Changes
PlayerMetadatais now a type alias forAssetMetadata<EmptyCustomData>.AssetMetadatanow exposes metadata fields (title,subtitle,imageSource,chapters, etc.) directly and no longer has aplayerMetadataproperty. Create it withAssetMetadata(identifier:title:…:customData:).EmptyCustomDatafrom PillarboxStandardConnector to PillarboxPlayer. It is nowCodable.PlayerItem.init(asset:metadata:trackerAdapters:),PlayerItem.custom(url:delegate:metadata:trackerAdapters:configuration:)andPlayerItem.encrypted(url:delegate:metadata:trackerAdapters:configuration:), as well as theconfigurationparameter ofPlayerItem.simple(url:metadata:trackerAdapters:). To create custom or encrypted items, or to provide a custom configuration, implement aURLAssetLoaderProviderand usePlayerItem.custom(assetProviderType:url:metadata:trackerAdapters:).PlayerItem.standard(request:type:decoder:trackerAdapters:assetProvider:)andPlayerItem.standard(request:decoder:trackerAdapters:assetProvider:)withPlayerItem.standard(assetProviderType:input:trackerAdapters:). Implement aStandardAssetLoaderProviderto supply the request, decoder and asset.SourcetoPlayerData.Source.MediaComposition.Chapter.recommendedResourceandMediaComposition.StreamingMethod.supportedMethods. The server now returns resources suited for Apple platforms first.Demo Improvements
URLDownloaderAPI.Demo Fixes
What's Changed
Full Changelog: 19.0.0...20.0.0
This discussion was created from the release Offline Playback.
All reactions