Suggestions

close search

Add Messaging, Voice, and Authentication to your apps with Vonage Communications APIs

Visit the Vonage API Developer Portal

Vonage Video API iOS SDK release notes

New features and changes

Version 2.27.2 -- March 2024

Version 2.27.1 -- January 2024

Version 2.27.0 -- December 2023

Version 2.26.2 -- November 2023

Version 2.26.1 -- October 2023

Version 2.26.0 -- August 2023

Version 2.25.4 -- October 2023

Version 2.25.3 -- July 2023

Version 2.25.2 -- May 2023

Version 2.25.1 -- May 2023

Version 2.25.0 -- April 2023

Version 2.24.3 -- October 2023

Version 2.24.2 -- February 2023

Version 2.24.1 -- December 2022

Version 2.24.0 -- October 2022

Version 2.23.1 -- August 2022

Version 2.23.0 -- July 2022

Version 2.22.3 -- May 2022

Version 2.22.2 -- April 2022

Version 2.22.1 -- March 2022

Version 2.22.0 -- February 2022

Version 2.21.3 -- January 2022

Version 2.21.2 -- November 2021

Version 2.21.1 -- October 2021

Version 2.21.0 -- October 2021

Version 2.20.2 -- November 2021

Version 2.20.1 -- August 2021

Version 2.20.0 -- May 2021

Version 2.19.1 -- April 2021

This version fixes the following issues:

Version 2.19.0 -- February 2021

Version 2.18.1 -- October 2020

This version fixes the following issues:

Version 2.18.0 -- August 2020

Version 2.17.1 -- July 2020

This version fixes the following issues:

Version 2.17.0 -- April 2020

Version 2.16.6 -- April 2020

This version fixes the following issue:

Version 2.16.5 -- March 2020

This version fixes the following issues:

Version 2.16.4 -- February 2020

This version fixes the following issues:

Version 2.16.3 -- September 2019

This version adds support for iOS 13 by fixing the issue where the application would crash using iOS 13 Metal renderer. It also fixes the following issues:

Version 2.16.2 -- August 2019

This version fixes the following issues:

Version 2.16.1 -- May 2019

Version 2.16.0 -- April 2019

Version 2.15.3 -- January 2019

Version 2.15.2 -- December 2018

Version 2.15.1 -- November 2018

Version 2.15.0 -- October 2018

Version 2.14.2 -- August 2018

Version 2.14.1 -- July 2018

Version 2.14.0 -- April 2018

Version 2.13.0 -- January 2018

Version 2.12.1 -- October 2017

Version 2.12.0 -- September 2017

Version 2.11.5 -- October 2017

Version 2.11.4 -- August 2017

Version 2.11.3 -- July 2017

Version 2.11.2 -- June 2017

Version 2.11.1 -- May 2017

Version 2.11.0 -- April 2017

Version 2.10.2

Version 2.10.1

Version 2.10.0

Version 2.9.2

Version 2.9.1

Version 2.9.0

Version 2.8.4

Version 2.8.3

Version 2.8.2

Version 2.8.1

Version 2.8.0

Version 2.7.1

Version 2.7.0

Version 2.6.1

Version 2.6.0

Version 2.5.0

Version 2.4.1

Version 2.4.0

Version 2.3.1

Version 2.3.0

Version 2.2.1

Version 2.2.0

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 OpenTok 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 OpenTok 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 OpenTok 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:

  1. In Xcode, open your app's info.plist file.

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

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

Emojis unexpectedly appear in videos in iOS 17. This is a result of the new Apple Reactions feature. At this time, there is no API or programmatic to turn this off. End-users must disable it during a video session. Open Control Center (by swiping down from the top-right corner or bottom of the screen, depending on the device), tap Video Effects, and then tap Reactions to disable it.

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