iOS Client SDK release notes
Version 2.28.3 -- December 2024
This version fixes an issue where, in some cases, toggling audio or video immediately after publishing would prevent video from being displayed.
This version fixes an issue where, in some cases, applications running on iOS 17.6.1 would crash.
Version 2.28.2 -- September 2024
This version fixes an issue where, in some cases, the audio level stayed the same when the publisher was muted.
This version fixes an issue where custom audio devices could potentially cause a crash.
This version fixes an issue where, in some cases, audio from web client SDK users was garbled.
Version 2.28.1 -- August 2024
This version adds a minimum required iOS version in the Info.plist.
This version fixes an issue where video was briefly stuttering after connecting to another user.
This version fixes an issue where the video resolution was not updating when devices were rotated.
Version 2.28.0 -- June 2024
This version adds support for Single Peer Connection. When enabled, it reduces OS resource consumption, improves rate control, and in the case of mobile native devices, supports large sessions. See the documentation for the
OTSessionSettings.singlePeerConnectionproperty.This version adds support for advanced noise suppression. This uses the Vonage Media Library to provide enhanced noise cancellation. See the documentation for the
OTPublisherKit.audioTransformerproperty. This was previously a beta feature.This version fixes an issue where, in some cases, the publisher was destroyed when video was muted.
Version 2.27.4 -- June 2024
This version adds support for reading the Certificate Authority certificates in the trust store of the host so that it can use them as valid root certificates when connecting to OpenTok services.
This version adds support for Apple's requirement of the signature for the SDK.
This version adds support for advanced noise suppression. This uses the Vonage Media Library to provide enhanced noise cancellation. See the documentation for the
OTPublisherKit.audioTransformerproperty. This is a beta feature.This version reduces the size of the SDK by removing the Vonage Media Library code. In order to use methods that use the Vonage Media Library, you must load the Vonage Media Library separately from the Vonage Video iOS SDK. This includes using the
OTPublisherKit.audioTransformersandOTPublisherKit.videoTransformersproperties to apply audio and video transformers to the stream. For more information, see Vonage Media Library integration.This version fixes a crash.
Version 2.27.3 -- April 2024
- This version adds a privacy manifest required by Apple's App store.
Version 2.26.3 -- April 2024
- This version adds a privacy manifest required by Apple's App store.
Version 2.25.5 -- April 2024
- This version adds a privacy manifest required by Apple's App store
Version 2.27.2 -- March 2024
- This version fixes an issue where apps would sometimes crash when unpublishing.
Version 2.27.1 -- January 2024
This version fixes a bug where canSubscribe returned incorrect information in
OTSessionCapabilities.This version fixes an issue where the state of captions was not properly updated for subscribers under certain circumstances.
This version fixes some crashes.
This version fixes an issue where some private classes were exposed.
Version 2.27.0 -- December 2023
This version adds support for publisher audio fallback. This was previously a beta feature. See the Publisher audio fallback documentation.
This version adds support for the VP9 codec in relayed sessions. For more information, see the Video Codecs documentation.
This version adds support for end-to-end encryption. You can enable end-to end-encryption using the
[OTSession setEncryptionSecret:secret:error:]method. For more information, see the End-to-End Encryption documentation.This version adds support for adaptive media routing. For more information, see the Adaptive Media Routing documentation.
This version adds some memory management improvements.
This version fixes an issue where certain events were being dropped.
Version 2.26.2 -- November 2023
- This version adds support for publisher audio fallback. This is a beta feature. See the Publisher audio fallback documentation.
Version 2.25.4 -- October 2023
- This version fixes an issue where it sometimes took longer than expected to disconnect from a session.
Version 2.24.3 -- October 2023
- This version fixes an issue where it sometimes took longer than expected to disconnect from a session.
Version 2.26.1 -- October 2023
- This version fixes an issue where video dimensions were incorrect if users muted video.
- This version fixes an issue where, in some cases, users were unable to connect to sessions with both custom TURN servers and IP Proxies enabled.
- This version fixes an issue where, in some cases, using custom audio devices was causing publishing failures.
- This version fixes some memory leaks.
- This version fixes an issue where it sometimes took longer than expected to disconnect from a session.
- This version fixes an issue where, in some cases, setting the microphone to mute was causing a crash.
Version 2.26.0 -- August 2023
This version adds support for the Vonage Media Processor library and custom media transformers. You can apply custom video and audio transformations to video and audio streams using the
OTPublisherKit.videoTransformersandOTPublisherKit.audioTransformerproperties. This was previously a beta feature.This version adds support for more Vonage Media Processor filters. The background blur filter now accepts a custom radius option. And there is a new background replacement filter. See the docs for the
OTPublisherKit.videoTransformersproperty.This version adds support for Live Captions. See the docs for
OTPublisherKitSettings.publishCaptionsandOTSubscriberKit.subscribeToCaptions. This was previously a beta feature.This version fixes some compiler warnings.
Version 2.25.2 -- May 2023
This version adds support for Insertable Streams for video and audio. You can apply custom video and audio transformations to video and audio streams using the
OTPublisherKit.videoTransformersandOTPublisherKit.audioTransformerproperties. This is a beta feature.This version adds support for Live Captions. See the docs for
OTPublisherKitSettings.publishCaptionsandOTSubscriberKit.subscribeToCaptions. This is a beta feature.This version fixes an issue where captions were enabled by default.
Version 2.25.1 -- May 2023
Added support for Swift Package Manager: https://github.com/opentok/vonage-client-sdk-video.git.
This version removes support for FAT binaries (previously available as Pod "OpenTok"). Only XCFramework artifacts are supported (available as Pod "OTXCFramework").
This version fixes linker errors when an application uses multiple WebRTC libraries.
This version fixes some memory leaks.
This version fixes an issue where occasionally the app would crash if it was publishing for a very long time.
Version 2.25.0 -- April 2023
This version of the SDK uses an updated version of WebRTC 99, which includes improvements in performance and stability.
This version fixes an intermittent crash when running your application in debug mode.
Version 2.24.2 -- February 2023
This version supports iOS 13 or higher.
This version adds emulator support for Apple silicon-based CPUs.
This version fixes an issue where the camera LED was not turned off when the video was muted.
This version fixes an issue where audio would remain muted for users under certain circumstances.
This version fixes an issue where starting a session with muted video would disable scalable video.
This version fixes an issue where publishing using Full High Definition (1080p) was causing scalable video to be disabled.
Version 2.24.1 -- December 2022
- This version fixes an issue where, in some cases, publishing may take longer than usual.
Version 2.24.0 -- October 2022
This version of the SDK uses WebRTC 99, which includes improvements in performance and stability.
This version fixes an issue when AES-256 was enabled and applications could not connect to clients using on Safari 15.3 and below.
This version fixes an issue in which applications could not connect to a session when IP Proxy was enabled.
This version fixes an issue where there was an intermittent thread warning when initializing a publisher.
Version 2.23.1 -- August 2022
This version fixes an issue that caused excessive bandwidth usage by streams in relayed sessions.
This version fixes an issue where the app would occasionally crash due to audio issues.
Version 2.23.0 -- July 2022
This version provides support for iOS 12 or higher.
Adding support for Full High Definition (1920x1080-pixel) resolution. You can specify
OTCameraCaptureResolutionHigh1080pas thecameraResolutionproperty of theOTPublisherSettingsobject you pass into the[OTPublisher initWithDelegate:settings:]method. This was previously a private beta feature.This version implements scalable video support for screen sharing. See the
OTPublisherKitSettings.scalableScreenshareproperty. This was previously a beta feature.This version adds the ability to enable per-subscriber audio levels. See the docs for the
OTSubscriberKit.audioVolumeproperty. This was previously a beta feature.This version fixes an issue where publishers of 1080p or 720p streams to routed sessions published two scalable video layers instead of three.
Known issues
Important changes to iOS 14 networking affecting relayed sessions
With iOS 14, Apple introduces local network privacy (see this video).
Beginning in iOS 14, the operating system will prompt the user for permission when an application attempts to subscribe to clients on the same local network in a relayed session. The default text in the notification says that the app "would like to find and connect to devices on your local network."
In a relayed session, the Vonage Video API uses the local network to discover and connect to video participants on your local network when possible. If clients cannot connect on the local network, an application will use the TURN server to relay audio-video streams.
If the user does not accept the permission, the attempt to subscribe can fail if the client cannot connect to the TURN server. In this case, after the permission is rejected, any future attempts to subscribe to clients on the same network will also fail unless the user changes the permission in Settings. Unfortunately, iOS does not provide an API for an application to determine if the user has accepted or rejected this permission.
It is important to note that this does not apply to video sessions that use the Media Router, as media is sent over the internet rather than the local network.
If your application uses a relayed session, we encourage you to to add a descriptive custom usage string to inform the user why the application needs this permission:
In Xcode, open your app's info.plist file.
In the info.plist editor, right-click the left-hand column and select Add Row (or click +) to add a setting for Privacy - Local Network Usage Description.
Edit the value for this string to describe how your app uses this permission.
For example, add "This app uses the local network to discover and connect to video participants on the same network when possible."
The prompt to the user will include this description.
For applications which cannot use routed sessions and do not wish the user to be prompted for local network access, you can use the following code, which forces the application to use TURN servers:
Objective-C
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.transportPolicy = OTSessionICETransportRelay;
settings.iceConfig = myICEServerConfiguration;
session = [[OTSession alloc] initWithApiKey:kApiKey
sessionId:kSessionId
delegate:self settings:settings];
Swift
let settings = OTSessionSettings()
let myICEServerConfiguration = OTSessionICEConfig()
myICEServerConfiguration.transportPolicy = .relay
settings.iceConfig = myICEServerConfiguration
let session = OTSession(apiKey: apiKey, sessionId: sessionId, delegate: self,
settings: settings)
Issues using Xcode Simulator to preview your app on a Mac with an M1 chip
The Vonage Video API iOS SDK does not currently include support for arm64, which the Simulator requires when running on an M1 Mac. To work around this issue, run Xcode (and Simulator) in Rosetta.
We are working on a fix for this issue.
Other known issues
Disconnecting from a session may take longer than expected. We are working on a fix for this issue.
In Vonage sessions that use H.264 video, CPU usage can increase to a significant level if the app uses a publisher and four or more subscribers simultaneously.
This version of the iOS SDK does not support displaying videos using Apple AirPlay.
In a session with the media mode set to relayed, only one client can subscribe to a stream published by an iOS device.
The Xcode iOS Simulator does not provide access to the camera. When testing in the iOS Simulator, an OTPublisher object uses a demo video instead of the camera.
Subscribing to screen-sharing streams (see "New features and changes - Version 2.4") is not supported in the iOS SDK version 2.3 and older. You must upgrade to version 2.4.
If you are using a version of Xcode prior to 7.2.0, do not use the -all_load linker flag. Instead, use the -force_load linker flag to load specific libraries that require it.
The iOS SDK links to the libc++ standard library. If another library that links to the libc++ standard library was compiled in a version of Xcode older than 6.0.0, it may result in segfaults at run time when using it with the iOS SDK. Known incompatible libraries include, but are not limited to, Firebase (versions earlier than 2.1.2 -- see https://code.google.com/p/webrtc/issues/detail?id=3992) and Google Maps (versions earlier than 1.9.0). To fix this issue, download a version of the other library that was compiled using Xcode 6.0.0 or later.
Video streaming is prevented on networks that have firewalls that use authenticated proxies. This is due to a core issue with the current underlying WebRTC implementation. (See this Chromium bug report.)
In relayed sessions, applications do not display the red bar when running in the background, if no client subscribes to your stream before the app goes into background mode.
When setting a proxy URL (using the Session.Builder.setProxyUrl() method), please use the absolute URL root path only. Using the proxy path in the URL does not work currently and is a known bug. Hence "https://my-proxy.herokuapp.com" and "https://my-proxy.herokuapp.com:443" are acceptable, while "https://my-proxy.herokuapp.com/" and "https://my-proxy.herokuapp.com/my-beta-app/version5" are not.