Menu

Expand
Rate this page:

Using Twilio Voice side by side with WebRTC

Twilio's Programmable Voice SDK for iOS is based upon a fork of the Chromium WebRTC project (webrtc.org). This heritage usually presents an interesting challenge of class conflicts when using other WebRTC dependencies alongside Twilio in your iOS application. We have designed Voice SDK 3.x and above to work along side other libraries that also inherit from webrtc. However, in the case you run into conflict issues, follow this guide for ways how to resolve conflicts.

How do conflicts occur?

Objective-C does not 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 Voice classes are prefixed with TVO.

Consider the following Podfile which consumes both Twilio Voice and WebRTC.

source 'https://github.com/CocoaPods/Specs'

target 'TARGET_NAME' do
  platform :ios, '10.0'
  pod 'TwilioVoice', '4.0.0'
  pod 'GoogleWebRTC'
end

Some classes with the RTC prefix are present both in WebRTC (publicly) and in Twilio Voice (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.

How do I resolve class conflicts?

One technique used to resolve class conflicts is to rename (prefix) the impacted classes. As of version 4.0.0, Twilio Voice now prefixes RTC classes with TVO. For example, RTCAudioSession now becomes TVORTCAudioSession.

If you wish to use Twilio Voice side by side with other WebRTC dependencies we recommend that you update to 4.x to eliminate class conflicts.

Rate this page:

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.

        
        
        

        Thank you for your feedback!

        We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

        Sending your feedback...
        🎉 Thank you for your feedback!
        Something went wrong. Please try again.

        Thanks for your feedback!

        Refer us and get $10 in 3 simple steps!

        Step 1

        Get link

        Get a free personal referral link here

        Step 2

        Give $10

        Your user signs up and upgrade using link

        Step 3

        Get $10

        1,250 free SMSes
        OR 1,000 free voice mins
        OR 12,000 chats
        OR more