Skip to content

Releases: jwplayer/jwplayer-sdk-documentation

Features, Fixes, & Improvements

13 Sep 16:39
6fc366b
Compare
Choose a tag to compare

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

Features, Fixes, & Improvements

13 Jul 22:30
6fc366b
Compare
Choose a tag to compare

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

23 Mar 21:37
6fc366b
Compare
Choose a tag to compare

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

10 Feb 14:21
6fc366b
Compare
Choose a tag to compare

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, 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

Localization Support and more!

09 Dec 21:16
6fc366b
Compare
Choose a tag to compare

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!

02 Nov 12:00
6fc366b
Compare
Choose a tag to compare

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

OMID Ad Support & Double-tap to Rewind/Fast Forward

07 Oct 14:53
6fc366b
Compare
Choose a tag to compare

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

29 Jul 19:25
6fc366b
Compare
Choose a tag to compare

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 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 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 to JWAdertisingConfig.
    • Google IMA JWImaAdvertisingConfigBuilder
    • Google IMA DAI JWImaDaiAdvertisingConfigBuilder
    • JW Player 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

Airplay 2 support

16 Dec 20:40
6fc366b
Compare
Choose a tag to compare

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 and onAdBreakEnd event callbacks to JWPlayerDelegate.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 and JWAdCompanion.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

05 Nov 22:40
6fc366b
Compare
Choose a tag to compare

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 and non-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