Using Twilio Video side by side with WebRTC
The Twilio Video SDK for iOS is based upon a fork of the Chromium WebRTC project (webrtc.org). This heritage presents an interesting challenge when using other WebRTC dependencies alongside Twilio in your iOS application.
If you use the WebRTC Objective-C APIs or another Chromium WebRTC based SDK, read on to learn how you can eliminate class conflicts with Twilio Video.
Objective-C doesn't support the concept of namespaces. Instead, developers typically use a 3-4 letter prefix to uniquely identify their classes. WebRTC classes are prefixed with RTC
, while Twilio Video classes are prefixed with TVI
.
Consider the following Podfile which consumes both Twilio Video and WebRTC.
1source 'https://github.com/CocoaPods/Specs'23target 'TARGET_NAME' do4platform :ios, '9.0'5pod 'TwilioVideo', '2.2.2'6pod 'GoogleWebRTC'7end
Some classes with the RTC
prefix are present both in WebRTC (publicly) and in Twilio Video (privately). When classes are loaded by the Objective-C runtime, any conflicts which occur are raised in your console logs:

You can see that classes like RTCAudioSession
are provided by both libraries. When classes conflict at runtime, the version which is loaded is undefined. This could result in unexpected behavior or crashes in your application.
One technique used to resolve class conflicts is to rename (prefix) the impacted classes. From version 2.3.0, Twilio Video prefixes RTC
classes with TVI
. For example, RTCAudioSession
becomes TVIRTCAudioSession
.
If you want to use Twilio Video side by side with other WebRTC dependencies we recommend that you update to version 2.3.0 or newer to eliminate class conflicts. For the latest version information, see the iOS SDK Changelog.