Release Notes (iOS v4)




The iOS v4 release notes highlight the additions and improvements JWP has made to the iOS SDK v4 code. If you have any questions after reading a release note and linked documentation, please contact your JWP representative.


💡

To receive immediate notifications for all Player releases, add the following RSS feed URL to your RSS reader:

https://docs.jwplayer.com/players/changelog.rss


4.8

Version Date Description
4.8.0 11 Nov 2022 New Feature
  • A new API has been added to the JWPlayerObjCViewController allowing developers who write in Objective-C to programmatically make the JWPlayerView full screen or dismiss full screen.
General Improvements
  • JWPlayer.loadPlaylist has been improved to accept a URL pointing to a playlist on the JWP Dashboard.
  • The size of captions now scale with the height of the JWPlayerView.
  • Caption position responds more accurately and reliably to resizing of the JWPlayerView.
Fixes
  • Memory footprint during JW VAST ad playback has been optimized and improved.
  • Layout constraint errors and warnings have been fixed in the Playlist / Recommendation menu.


4.7

Version Date Description
4.7.1 28 Oct 2022 Fixes
  • Fixed an issue where Apple’s supplied caption styles were not being rendered as expected.
  • Fixed an issue where the player was not able to play local MP4 files when the internet connection is lost.
  • Fixed an issue where the audio track selection wasn’t working as expected.
4.7.0 13 Sep 2022 General Improvements
  • Support for ARM64 simulators. Note that the Google Cast SDK and Googel IMA SDK are not supported when running in the ARM64 simulator environment.
  • JWPlayerViewController has a new property: handleCastingInternally. If set to false, a ChromeCast session will not be initialized by the SDK, instead the session must be initialized by the developer. By default, this value is true.
  • The behavior of playback on external devices can be configured or disabled using JWExternalPlaybackSettings. This object can be created using JWExternalPlaybackSettingsBuilder, and set in JWPlayerConfigurationBuilder.
  • Caption rendering can be disabled by setting JWPlayer.suppressesCaptionRendering to true. Caption events are still reported even if rendering is suppressed. By default this value is false.
  • 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, and creativeAdId.


4.6

Version Date Description
4.6.0 13 Jul 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 JWAdSettingsBuilder.allowsBackgroundPlayback API to allows developers to set whether background playback is allowed for JWPlayer Ads (VAST).

General Improvements
  • The Live UI is now improved for DVR streams.

Fixes
  • 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.


4.5

Version Date Description
4.5.3 11 May 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 20 Apr 2022 Fixed Issues
• Fixed a crash related to the next up card being displayed.


4.4

Version Date Description
4.4.1 7 Mar 2022 Features and Improvments
• Fixes issue that prevented uploading Bitcode enabled .ipa to App Store Connect
4.4.0 9 Feb 2022 Features and Improvements
• Added openAdClickthrough() API to support custom Ad controls
• Added methods for isFullScreen, transitionToFullScreen, and dismissFullScreen, 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 the onAdBreakStart 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 the adMeta event


4.3

Version Date Description
4.3.1 4 Jan 2022 Features and Improvements
• Fixed an issue where VMAPs with embedded VASTAdData tags were not displaying advertisements.
4.3.0 9 Dec 2022 New Features and 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.


4.2

Version Date Description
4.2.0 1 Nov 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 to JWPlayerKit, which reports what version of the JWPlayerKit 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.


4.1

Version Date Description
4.1.1 11 Oct 2022
• Fixed an issue where SDK is not working properly with Xcode 12 or lower.
4.1.0 5 Oct 2021
• Added support for OMID (Open Measurement Interface Definition) in JWP 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 JWP VAST ad clients.
• Added double-tap to rewind and fast forward.
• Added the ability to specify a playlist URL in JWPlayerConfigurationBuilder.
• Deprecated JWPlayerItemBuilder.setAutostart.


4.0

Version Date Description
4.0.1 11 Oct 2022
• Continuing improvements to user interface.
• Fixed a bug where JWPlayerViewController crashes in Simulator for iPhone 8 or below.
4.0.0 5 Oct 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 the Info.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 JWP 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 to JWAdertisingConfig.
   • Google IMA JWImaAdvertisingConfigBuilder
   • Google IMA DAI JWImaDaiAdvertisingConfigBuilder
   • JWP VAST JWAdsAdvertisingConfigBuilder

• Renamed JWConfig to JWPlayerConfiguration, which is created using a separate object JWPlayerConfigurationBuilder.
• Renamed JWPlaylistItem to JWPlayerItem.
• Renamed JWSource to JWVideoSource.
• Renamed JWRelatedConfig to JWRelatedContentConfiguration.
• Deprecated JWTrack, and added associated builders JWMediaTrack, JWChapterTrack, JWCaptionTrack, and JWThumbnailTrack.


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