Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

Video iOS Platform Overview


(warning)

Warning

This documentation is for reference only. We are no longer onboarding new customers to Programmable Video. Existing customers can continue to use the product until December 5, 2026(link takes you to an external page).

We recommend migrating your application to the API provided by our preferred video partner, Zoom. We've prepared this migration guide(link takes you to an external page) to assist you in minimizing any service disruption.

Twilio's Programmable Video iOS SDK lets you add real time voice and video to your native iOS applications.


Prerequisites

prerequisites page anchor
  • Xcode 13.0+
  • Swift projects must use Swift 5.0 or higher
  • Support for iOS 12.2+

Programmable Video Live Demo

programmable-video-live-demo page anchor

Launch our Twilio Programmable Video live demo(link takes you to an external page) in less than 5 minutes. A high-quality, full-featured and open-source video collaboration application.


To get started with Twilio Video, you should download and run a QuickStart Application(link takes you to an external page).

Using a Simulator

using-a-simulator page anchor

You can use the iOS Simulator that comes with Xcode to do your testing, but local video will not be shared since the Simulator cannot access a camera. If you have an iOS device, you can now run apps from Xcode on your device without a paid developer account.

The QuickStart repository(link takes you to an external page) contains additional examples. These examples demonstrate the usage of new features and also let you build more complex applications.

To add Video to your app, follow the Getting Started Guide


The Twilio Video iOS SDK dynamic framework can be installed using Swift Package Manager, CocoaPods or manually, as you prefer.

You can add Programmable Video for iOS by adding the https://github.com/twilio/twilio-video-ios repository as a Swift Package.

In your Build Settings, you will also need to modify Other Linker Flags to include -ObjC.

There is a known issue(link takes you to an external page) with consuming binary frameworks distributed via Swift Package Manager. The current workaround to this issue is to add a Run Script Phase to the Build Phases of your Xcode project. This Run Script Phase should come after the Embed Frameworks build phase. This new Run Script Phase should contain the following code:


_10
find "${CODESIGNING_FOLDER_PATH}" -name '*.framework' -print0 | while read -d $'\0' framework
_10
do
_10
codesign --force --deep --sign "${EXPANDED_CODE_SIGN_IDENTITY}" --preserve-metadata=identifier,entitlements --timestamp=none "${framework}"
_10
done


_10
source 'https://github.com/CocoaPods/Specs'
_10
_10
platform :ios, '12.2'
_10
_10
target 'TARGET_NAME' do
_10
pod 'TwilioVideo', '~> 5'
_10
end

Then run pod install to install the dependencies to your project.

TwilioVideo.xcframework is distributed as a dynamic iOS framework that you can drag and drop into your existing projects.

View all Video iOS Releases here(link takes you to an external page) or just download the latest Video dynamic framework here(link takes you to an external page).

Once you've downloaded and unpacked the XCFramework, navigate to your Xcode project's General settings page. Drag and drop TwilioVideo.xcframework onto the Frameworks, Libraries, and Embedded Content section. Ensure that "Copy items if needed" is checked and press Finish. Ensure that "Embed & Sign" is selected.

In your Build Settings, you will also need to modify Other Linker Flags to include -ObjC.

To allow a connection to a Room to be persisted while an application is running in the background, you must select the Audio, AirPlay, and Picture in Picture background mode from the Capabilities project settings page.

Background modes.

You can add Audio Processors for iOS by adding the https://github.com/twilio/twilio-audio-processors-ios repository as a Swift Package.

In your Build Settings, you will also need to modify Other Linker Flags to include -ObjC.


_10
source 'https://github.com/CocoaPods/Specs'
_10
_10
platform :ios, '12.2'
_10
_10
target 'TARGET_NAME' do
_10
pod 'TwilioAudioProcessors', '~> 5'
_10
end

Then run pod install to install the dependencies to your project.

TwilioAudioProcessors.xcframework is distributed as a dynamic iOS framework that you can drag and drop into your existing projects.

View all Audio Processors iOS Releases here(link takes you to an external page) or just download the latest Audio Processors dynamic framework here(link takes you to an external page).

Once you've downloaded and unpacked the XCFramework, navigate to your Xcode project's General settings page. Drag and drop TwilioAudioProcessors.xcframework onto the Frameworks, Libraries, and Embedded Content section. Ensure that "Copy items if needed" is checked and press Finish. Ensure that "Embed & Sign" is selected.

In your Build Settings, you will also need to modify Other Linker Flags to include -ObjC.


Xcode and iOS Version Support

xcode-and-ios-version-support page anchor
SDK VersionMinimum Xcode RequirementMinimum iOS VersionSupported ArchitecturesSupported Devices
5.xXcode 13.0iOS 12.2arm64, x86_64iPhone 5s and later, iPad (5th generation) and later, iPad mini (2nd generation) and later.
4.xXcode 12.5iOS 9.0 **armv7, arm64, i386, x86_64iPhone 4s and later **, iPad 2 and later, iPad mini (1st generation) and later.
iOS 11.0arm64, x86_64iPhone 5s and later *, iPad (5th generation) and later, iPad Air and later, iPad mini 2 and later
3.xXcode 11.0iOS 11.0arm64 ***, x86_64iPhone 5s and later *, iPad (5th generation) and later, iPad Air and later, iPad mini 2 and later

* Dual SIM enabled iPhones (XS, XS Max, XR and later) are supported, but not when two SIMs are installed and enabled. See Chromium issue #10966(link takes you to an external page) for more information.

** Build time support is available for iOS 9.x and 10.x. Run time support is available on iOS 11.0 and above.

*** Arm64 simulators are not supported.


We love feedback and questions, especially those with helpful debugging information so we can diagnose and respond quickly. When submitting issues or support tickets, it would be great if you add the following:

  • Description - A description of the issue
  • Steps to reproduce - List the steps necessary to reproduce the issue
  • Code - Include any applicable code snippets that would assist in reproduction and troubleshooting
  • Expected Behavior - What you expect to happen
  • Actual Behavior - What actually happens
  • Reproduces How Often - What percentage of the time does it reproduce?
  • Logs - Any log output when the issue occurs. See below for enabling debug level logging.
  • Video iOS SDK - The version(s) of the Video iOS SDK where this issue is apparent
  • Xcode - The version(s) of Xcode where this issue is apparent
  • iOS Version - The version(s) of iOS where this issue is apparent
  • iOS Device - The iOS device(s) where this issue is apparent
  • Room SID - Room SIDs can be useful for tracing backend issues

After gathering the above information, you can get help in a few ways:

For issues related to the Twilio Video iOS SDK itself:

For issues related to the Twilio Video iOS Quickstarts:

To enable debug level logging, add the following code in your application:


_10
TwilioVideoSDK.setLogLevel(.debug)


Migrating from 4.x to 5.x

migrating-from-4x-to-5x page anchor

Our 5.0 releases are now "Generally Available" (GA) and represent our latest releases and adds support for:

  • Xcode 13.0

Our 4.x releases will now only receive critical bug fixes. Support for the 4.x releases will cease as of February 14, 2023. Refer to our 5.x migration guide for migrating your applications from 4.x to 5.x.


Migrating from 3.x to 4.x

migrating-from-3x-to-4x page anchor

Our 4.0 releases are now "Generally Available" (GA) and represent our latest releases and adds support for:

  • Upgraded WebRTC version.
  • Swift Package Manager.
  • In-app screen capture.
  • RemoteParticipant reconnection APIs.
  • Recording API improvements.

Our 3.x releases will now only receive critical bug fixes. Support for the 3.x releases will cease as of December 4, 2021. Refer to our 4.x migration guide for migrating your applications from 3.x to 4.x.


Migrating from 2.x to 3.x

migrating-from-2x-to-3x page anchor

Our 3.0 releases are "Generally Available" (GA) and provide the following features:

  • Global low latency (GLL) signaling with IPv4 and IPv6 support.
  • Improved Swift APIs for a more idiomatic Swift development experience.
  • Support for UIScene(link takes you to an external page) and multi-window apps on iOS 13 and iPadOS 13.

Our 2.x releases will now only receive critical bug fixes. Support for 2.x releases ended on January 10, 2020. Refer to our 3.x migration guide for migrating your applications from 2.x to 3.x.


Migrating from 1.x to 2.x

migrating-from-1x-to-2x page anchor

Our 2.0 releases are "Generally Available" (GA) and provide the following features:

  • Support for iOS 9.0+
  • H.264 encoding and decoding.
  • Codec preferences.
  • Bandwidth controls.
  • Subscription focused APIs.
  • Track names, Track level errors.
  • Data Tracks.
  • Custom Audio Devices.

Our 1.x releases are no longer supported. Refer to our 2.x migration guide for migrating your applications from 1.x to 2.x and our 3.x migration guide for migrating your applications from 2.x to 3.x.


Rate this page: