Releases: jwplayer/jwplayer-sdk-documentation
Features, Fixes, & Improvements
New features and fixes.
4.7.0
Release Date: September 13, 2022
New Features
- Support for ARM64 simulators. Please note that the Google Cast SDK and Google IMA SDK are not currently supported when running in the ARM64 simulator environment.
JWPlayerViewController
has a new property:handleCastingInternally
. If set tofalse
, a ChromeCast session will not be initialized by the SDK, instead the session must be initialized by the developer. By default, this value istrue
.- The behavior of playback on external devices can be configured or disabled using
JWExternalPlaybackSettings
. This object can be created usingJWExternalPlaybackSettingsBuilder
, and set inJWPlayerConfigurationBuilder
. - Caption rendering can be disabled by setting
JWPlayer.suppressesCaptionRendering
totrue
. Caption events are still reported even if rendering is suppressed. By default this value isfalse
. - When using JWPlayerViewController, additional controls may be hidden: full screen button, languages button (audio and captions), and the settings button.
- When using Google IMA, the ad impression event populates the following new information in
JWAdImpression
:adId
,creativeId
, andcreativeAdId
.
Features, Fixes, & Improvements
New features and fixes.
4.6.2
Release Date: September 6, 2022
Improvements
- An error event is fired when the internet connection is lost.
- A new metadata array is exposed in the adMeta event.
Fixes
- Fixed an issues causing the app to quit unexpectedly.
- Fixed an issue where system captions styling was being ignored.
- Fixed an issue where the player was getting stuck after playing IMA ads in autostart mode.
- Fixed an issue where video content was playing from the beginning when a Chromecast device recovered the connection.
- Fixed an issue where captions were not displayed while seeking in the middle of a caption cue range.
- Fixed an issue where audio stream continued playing after calling the stop() API.
- Fixed an issue where the startOnSeek ad rule was being ignored for VAST ads.
- Fixed an issue where scrubbing past a midroll ad the player wasn’t triggering the ad playback in Google IMA DAI.
- Fixed an issue where the fullscreen button was not reflecting the current fullscreen mode state in the ads UI.
- Fixed an issue where the playlist/recommendations UI was displaying the PiP button despite PiP being disabled.
4.6.1
Release Date: August 3, 2022
Improvements
- Improved ad error messaging to help identify what is causing the problem.
Fixes
- Fixes issue that occurs when using autostart with IMA ads.
- Fixes crash that occasionally occurs when reachability changes.
- Fixes bug that causes the UI to get stuck when switching between landscape and portrait mode.
4.6.0
Release Date: July 13, 2022
Features
- Added the
JWPlayerViewController.setVisibility(_ isVisible: Bool, controls: [JWControlType])
API to allow developers to hide or replace the UI elements in the JWPlayerViewController. - Added the
JWAdSettingsBuilder.allowsBackgroundPlayback
API to allows developers to set whether background playback is allowed for JWPlayer Ads (VAST). - Added the
JWPlayerView.allowsPictureInPicturePlayback
API to enable or disable the Picture-in-Picture feature for custom UI.
Improvements
- The Live UI is now improved for DVR streams.
Fixed Issues
- Fixed an issue where a
SwiftUI.List
with multiple players had low performance when scrolling. - Fixed an issue where a pre-roll IMA ads failed silently for playlist items with a title.
- Fixed an issue where tapping the Live button was not seeking to the live edge.
- Fixed an issue where the dismiss fullscreen button was misaligned.
Features, Fixes, & Improvements
New features and fixes.
4.5.3
Release Date: May 11, 2022
Fixed Issues
- Fixed issue where adTime events were increasing memory consumption.
- Fixed issue where VAST ad video quality was always chosen as the lowest quality.
- Fixed issue where the JWPlayerItem.adSchedule API for IMA ads was being ignored.
- Fixed a crash when configuring the player twice in a row before the player was fully initialized.
- Fixed a crash when the player was configured in background before the player was fully initialized.
4.5.2
Release Date: April 20, 2022
Fixed Issues
- Fixed a crash related to the next up card being displayed
4.5.1
Release Date: April 5, 2022
Fixed Issues
- Resolved a rare crash due to an unowned variable.
- Resolved an issue where backgrounding the app unexpectedly paused JW Player VAST ads.
- Resolved issues around Picture in Picture, where in iPadOS and iOS the behavior of the ‘allowsPictureInPicturePlayback’ flag was behaving differently.
- Resolved issue where JW Player VAST ads were not sending out expected pings for tracking events.
4.5.0
Release Date: March 23, 2022
Features and Improvements
- When using JWPlayerViewController to display videos we no longer allow the delegates within JWPlayer and JWPlayerView to be overridden. JWPlayerViewController needs to be the delegate to work properly, and allowing this behavior caused issues in certain utilizations of our SDK.
- Added a new property to JWPlayerViewController called ‘allowsPictureInPicturePlayback’. If set to false, Picture in Picture is disabled for the given player. This flag is ‘true’ by default.
- Exposed new properties in the JWAdImpression object
duration
: The duration of the ad, in seconds.podCount
: The number of ads in the ad pod.sequence
: The position of the current ad in the ad pod.- Expanded support of more header types in JWPlayerItem custom headers.
- JWAdsAdvertisingConfigBuilder allows a skip offset to be specified programmatically.
- Setting captions using JWPlayer.setCaptions(locale:) will throw an ambiguity error if multiple captions are found with the same locale.
Fixed Issues
- Improved stability, and improved the user experience when casting to a ChromeCast device.
- Fixed issue where side-loaded captions would remain on the screen during ad midrolls.
- Fixed issue where video would remain black for a few seconds after an ad when the player was embedded within a UIPageViewController.
- Fixed issue where VMAP ads wrapped in a redirect wrapper were not playing.
- Fixed issue where the Casting Menu was not accessible in full screen.
- Fixed issue where
bitrateUpperBound
was not being observed by the currently playing item. - Fixed issue where setting the volume to a non-zero value after being mute was not working.
- Seeking is now disabled in Picture in Picture during DAI streams.
- onVisualQuality event is now fired for MP4 streams.
Custom Ad controls, fullscreen APIs, improvements
We've added a new API so developers can implement custom ad clickthrough behavior and fixed some issues.
4.4.1
Release Date: March 7, 2022
Features and Improvements
- Fixes issue that prevented uploading Bitcode enabled .ipa to App Store Connect
4.4.0
Release Date: February 9, 2022
Features and Improvements
- Added
openAdClickthrough()
API to support custom Ad controls - Added methods for
isFullScreen
,transitionToFullScreen
, anddismissFullScreen
, see our iOS API reference documentation for details - IMA Postrolls are now requested in the 10 seconds leading up to the ad break
Fixed Issues
- Fixed DFXP captions not working in some cases
- Fixed missing
adPosition
in theonAdBreakStart
event - Fixed the
setMute()
API method - Fixed the centered replay button not displaying in the COMPLETE state
- Fixed cues for midrolls sometimes being grouped at the start of the seekbar
- Fixed ad controls not respecting show/hide settings
- Deprecated
autoPlayMessage
- Fixed FF and Rewind buttons being missing in Live DVR streams
- Fixed tap behavior in the seekbar
- Fixed
skipOffset
being incorrect in theadMeta
event
Localization Support and more!
Now you can display labels and other UI elements in your app user's native language.
4.3.1
Release Date: January 4, 2021
- Fixed an issue where VMAPs with embedded VASTAdData tags were not displaying advertisements.
4.3.0
Release Date: December 9, 2021
New Feature & Updates
- Interfaces have been localized for international languages, including Arabic, Chinese, Dutch, Finnish, French, German, Greek, Hebrew, Indonesian, Italian, Japanese, Korean, Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish, Thai, Turkish
- All strings within the interface can be localized by overriding the string keys within an app’s string tables. These keys are documented in our online documentation.
Improvements
- Google IMA is updated to reflect the user’s desired language, or the language specified in the IMASdkSettings config object.
Fixes
- The onSizeChanged event was firing event when the size of the player did not change. This event has been fixed to only fire when the size changes.
- Fixed a bug where the user could skip Google IMA mid rolls by pausing the player after seeking past the midroll.
- Fixed bug introduced in 4.2.0 where certain caption tracks were not selectable.
- Fixed bug where side-loaded WebVTT files were not parsing correctly if the file contained control characters.
- Fixed bug where first frame of a video was being displayed before a pre-roll.
API Updates and More!
We made an update to JWPlayerStateDelegate
which requires you to add two additional methods to JWPlayerStateDelegate
to compile if you are not using JWPlayerViewController
for your player. With iOS 4.2.0, we made many improvements to event reporting, Chromecast features & reporting, and captions. Of course, we are tirelessly working to improve UI and stability of SDK.
4.2.0
Release Date: November 1, 2021
New Features
- Added ability to listen to AirPlay status events through
JWAirPlayDelegate
. - Added support for
GCKUICastButton
for iOS 14+. - Playback rate can be set while using Chromecast.
- Analytics have been added for in-manifest captions.
- Caption tracks can be specified using desired locale.
- Added ability to launch an unscheduled ad using
JWPlayer.play(ad tag: URL, client: JWAdClient)
. - Added a reason to
onBuffer
events. - Added error reporting for HLS manifest issues.
- Added
sdkVersion
toJWPlayerKit
, which reports what version of theJWPlayerKit
SDK is being used.
General Improvements
- Added ability to listen to when cues are updated, using
JWPlayerStateDelegate.jwplayer(_ player: JWPlayer, updatedCues cues: [JWCue])
. - Casting interface adapts to both video and audio-only content.
- Continued improvements to User Interface.
Fixes
- Fixed an issue where incorrect license key error message is displayed.
OMID Ad Support & Double-tap to Rewind/Fast Forward
Pioneered by the Interactive Advertising Bureau, the Open Measurement standard for video in the mobile app is a giant leap for viewability measurement. Open Measurement gives publishers transparency and control to manage the third-party verification scripts rather than running them through the ad creatives themselves, where they cannot be accessed. Our iOS 4.1.0 release brings out of the box OMID support for this industry-wide specification through our VAST ad client.
One more thing! Excited to introduce the most popular gesture control, double-tap to RW/FF, for watching a video to iOS 4.1.0. With this latest iOS SDK, users can easily navigate between frames by simply double tapping either side of the screen. This great feature is well blended into slick UI.
4.1.1
Release Date: October 11, 2021
- Fixed an issue where SDK is not working properly with Xcode 12 or lower.
4.1.0
Release Date: October 5, 2021
- Added support for OMID (Open Measurement Interface Definition) in JW Player VAST client.
- Improved OMID support for Google IMA, reporting more accurate viewability data.
- Added a new API,
JWPlayer.friendlyObstructions
, where friendly obstructions can be reported to both IMA and JW Player VAST ad clients. - Added double-tap to rewind and fast forward.
- Added the ability to specify a playlist URL in
JWPlayerConfigurationBuilder
. - Deprecated
JWPlayerItemBuilder.setAutostart
.
Introducing Version 4
We are excited to announce JW Player SDK 4.0 for iOS. This release updates the SDK, its new features & UI, and many other improvements to engage your audiences intelligently and monetize your content.
Version 4 is a complete rewrite of the JW Player SDK for iOS in Swift, “the powerful programming language that is also easy to learn,” to make it easier for developers to add the best in class media playback to any iOS app. Please refer to this important 4.x migration guide for iOS to update your current application from version 3.x to 4.x. This guide includes important information about API changes, new features & callbacks, and will help your team with the transition process.
You may use CocoaPods to update to SDK 4.x, or you can download the SDK 4 packages from the Players -> Downloads & Keys section of your JW Player Dashboard. Please note that version 4 of the SDKs are available to our Enterprise edition customers, and do not require new license keys because 3.x license keys will work.
4.0.1
Release Date: September 21, 2021
- Continuing improvements to user interface.
- Fixed a bug where
JWPlayerViewController
crashes in Simulator for iPhone 8 or below.
4.0.0
Release Date: July 28, 2021
General Changes
- Entirely rewritten in Swift while maintaining backward compatibility for customer applications using Objective-C.
- Completely native player and User Interface by using
UIKit
, which gives easier video control presentations and customizations. - Decoupled user interface, which gives greater flexibility for creating own user interface with
JWPlayerView
. - License keys must be supplied programmatically through
JWPlayerKit
. For extra security, they are no longer read from theInfo.plist
in the application. - Thumbnail preview is shown as the user seeks across the content if the thumbnail track is specified for a
JWPlayerItem
. - New and improved customizable user interface through using the
JWPlayerViewController
. - Chromecast is supported through using our interface in
JWPlayerViewController
if you include GoogleCast SDK in your project. - Related content is displayed in a new and improved user interface, complete with autoplay functionality.
- Added a common error reporting
JWError
for warnings and errors. - Added specialized metadata event delegates, which can be subscribed to events through the
JWPlayer
protocol. - Added fast forward button to compliment the rewind button
Ads
- Upgraded IMA support to 3.14.3 include iOS 14 and above.
- JW iOS SDK 4.0 supports Google IMA, Google IMA DAI, and JW Player VAST.
- Added Picture-in-Picture support for IMA DAI ads.
- Added ability to set custom initialization options through the
assetOptions
property.
API Updates
- Added dedicated builders for each type of ad, and renamed
JWAdConfig
toJWAdertisingConfig
.- Google IMA
JWImaAdvertisingConfigBuilder
- Google IMA DAI
JWImaDaiAdvertisingConfigBuilder
- JW Player VAST
JWAdsAdvertisingConfigBuilder
- Google IMA
- Renamed
JWConfig
toJWPlayerConfiguration
, which is created using a separate objectJWPlayerConfigurationBuilder
. - Renamed
JWPlaylistItem
toJWPlayerItem
. - Renamed
JWSource
toJWVideoSource
. - Renamed
JWRelatedConfig
toJWRelatedContentConfiguration
. - Deprecated
JWTrack
, and added associated buildersJWMediaTrack
,JWChapterTrack
,JWCaptionTrack
, andJWThumbnailTrack
.
Event API
- Added multiple delegates for different events
JWPlayer
JWPlayerDelegate
JWPlayerStateDelegate
JWPlayerViewControllerDelegate
JWViewControllerDelegate
JWAdDelegate
JWAVDelegate
JWPlaybackMetadataDelegate
User Interface
- Added Lock screen control, which is more reactive to the state of the player:
- The next item and previous item buttons are shown if the current item is part of a playlist.
- The rewind and fast forward buttons are enabled if there is only one item.
- “Advertisement” is displayed as the video title when an ad is playing.
- The application’s name is displayed in the controls if a currently playing item does not have a title.
- “Previous Item” button is disabled for the first item in a playlist, and the “Next Item” button is disabled for the final item in a playlist.
- Added chapter markers, which are displayed as cue points and chapters have been defined for the player item.
Captions
- Added ability to customize the look of captions using
JWCaptionStyle
. These settings are observed only if they are not specified in the user’s accessibility settings. - Added side-loaded VTT captions positional attributes, which is specified within the VTT file. Vertically-displayed text is not supported.
- Added In-manifest Caption support for Chromecast.
Deprecated features
- VPAID and FreeWheel support
- CSS support
Airplay 2 support
Our latest iOS 3.9.0 release now has AirPlay 2 support as well as several other AirPlay improvements. Users of your app can now stream to Apple TVs, HomePods, and AirPlay 2-compatible smart TVs.
Learn how to add an AirPlay button to your app here.
3.9.0
Release Date: December 16, 2019 (Build 109)
Updates
- Made improvements to AirPlay implementation in SDK and best practice apps to ensure they follow AirPlay 2 best practices
- Upgraded iOS SDK to use JW Player 8.11.8
- Added
onAdBreakStart
andonAdBreakEnd
event callbacks toJWPlayerDelegate.h
Fixes
- Fixed an issue where scrubbing while in an AirPlay session will sometimes stop the player or reset the position to 00:00
- Fixed an issue where pressing play or pause during an AirPlay session causes the sender to disconnect and reconnect to the receiver
- Fixed an issue where during an AirPlay session the Control Center fails to display the Now Playing information and the controls do not work
- Fixed issues with misaligned vertical and horizontal webVTT captions that use cue positioning
- Added
JWPlayerError.h
andJWAdCompanion.h
class declarations to Swift header
Known Issue
Due to a third party Google IMA bug, there are some inconsistent Google IMA ad playback behaviors during AirPlay sessions. These include:
- Playback control is allowed during ad playback
- When a pre-roll or mid-roll ad is completed, the player displays the play button and the AirPlay session ends
- Mid-roll ads will not play if the user seeks over its scheduled time
We have reported these issues with Google IMA support. Once a fix is provided we will update the iOS SDK accordingly
Google Cast Sender Library Upgrade
Implement an improved casting experience in iOS 13 with the latest Google Cast upgrade.
3.8.1
Release Date: November 25, 2019 (Build 108)
Update
- Maintenance release.
3.8.0
Release Date: November 5, 2019 (Build 107)
Update
- Upgraded the iOS Google Cast Sender library to version 4.4.5 which provides an improved experience in iOS 13. Apple introduced stricter permissions requirements in iOS 13 that enforces a tighter control for bluetooth access. To accommodate this change there are now two implementation options—
guest-mode
that includes bluetooth support andnon-guest
mode which does not have Bluetooth support. When upgrading your app you will need to decide if you want to keep guest mode support or remove guest mode support. More information on how to update your casting implementation can be found here
Fixes
- Fixed an issue where Freewheel VMAP ads served through the JW Player VAST plugin made two ad requests before playing an ad
- Fixed an issue where video audio played after the player was released
- Fixed an issue that prevented the home screen indicator in iPhone X and above models from fading when in fullscreen
- Fixed an issue with multi-threading synchronization
- Fixed weak reference usage and removed assertions from network reachability