Twilio Video Quickstart for iOS with Swift
Switch branches/tags
Nothing to show
Clone or download
ceaglest ISDK-1699: Add support for the iPhone X, XS, XR (#315)
* Use safe area for ScreenCapturerExample preview layout.
* Use safe area for AudioDeviceExample preview layout.
* Use safe area for AudioSinkExample layout.
* Local video preview.
* Text label when recognizing audio.
* Automatically hide the home indicator in ARKitExample.
* Settings ViewController UX improvements.
* Use a red theme for ReplayKitExample.
* Theme the UINavigationBar for white tint color, twilio red bar tint, and black bar style.
* Theme the RPBroadcastSystemPickerView to match with white tint.
* Use #if !targetEnvironment(simulator) macro.
* Update the ReplayKit example images.
* Hide auto home indicator when connected to a Room in QS / CallKit QS.
Latest commit 70e7ad7 Oct 17, 2018
Permalink
Failed to load latest commit information.
.github Note about PII (#269) May 23, 2018
ARKitExample.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
ARKitExample ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
AudioDeviceExample.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
AudioDeviceExample ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
AudioSinkExample.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
AudioSinkExample ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
DataTrackExample.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
DataTrackExample ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
ReplayKitExample.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
ReplayKitExample ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
ScreenCapturerExample.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
ScreenCapturerExample ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
Utils ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
VideoCallKitQuickStart.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
VideoCallKitQuickStart ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
VideoQuickStart.xcodeproj ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018
VideoQuickStart ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
images/quickstart ISDK-1699: Add support for the iPhone X, XS, XR (#315) Oct 16, 2018
.gitignore ISDK-1912: Support TVIAudioDevice backgrounding (2.0.0-beta3) (#245) Mar 21, 2018
LICENSE Twilio => Twilio, Inc. Feb 1, 2017
Podfile ISDK-1512 - Add ReplayKit Example (#287) Oct 6, 2018
README.md ISDK-1717: Upgrade to Swift 4.2 (#314) Oct 12, 2018

README.md

Download Docs

Twilio Video Quickstart for Swift

NOTE: These sample applications use the Twilio Video 2.x APIs. For examples using our 1.x APIs, please see the 1.x branch.

Get started with Video on iOS:

Setup

This project uses Apple's Swift 4.2 programming language for iOS.

If you haven't used Twilio before, welcome! You'll need to Sign up for a Twilio account first. It's free!

Note: if your app uses Objective-C see video-quickstart-objective-c.

CocoaPods

  1. Install CocoaPods 1.0.0+.

  2. Run pod install from the root directory of this project. CocoaPods will install TwilioVideo.framework and then set up an xcworkspace.

  3. Open VideoQuickStart.xcworkspace.

Note: You may need to update the CocoaPods Master Spec Repo by running pod repo update master in order to fetch the latest specs for TwilioVideo.

Manual Integration

You can integrate TwilioVideo.framework manually by following these install instructions.

Quickstart

Running the Quickstart

To get started with the Quickstart application follow these steps:

  1. Open this VideoQuickStart.xcworkspace in Xcode

  1. Type in an identity and click on "Generate Access Token" from the Testing Tools page.

Note: If you enter the Room Name, then you can restrict this user's access to the specified Room only. Ideally, you want to implement and deploy an Access Token server to generate tokens. You can read more about setting up your own Access Token Server in this section. Read this tutorial to learn more about Access Tokens.

  1. Paste the token you generated in the earlier step in the ViewController.swift.

  1. Run the Quickstart app on your iOS device or simulator.

  1. As in Step 2, generate a new Token for another identity (such as "Bob"). Copy and paste the access token into ViewController.swift (replacing the one you used earlier). Build and run the app on a second physical device if you have one, or the iPhone simulator.

  2. Once you have both apps running, enter an identical Room name (such as "my-cool-room") into both apps, and tap "Connect" to connect to a video Room (you'll be prompted for mic and camera access on the physical device). Once you've connected from both devices, you should see video!

Using a Simulator

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.

Note: If you have an iOS device, you can now run apps from Xcode on your device without a paid developer account.

Examples

You will also find additional examples that provide more advanced use cases of the Video SDK. The currently included examples are as follows:

  • AudioDevice - Provide your own means to playback and record audio using a custom TVIAudioDevice and CoreAudio.
  • AudioSink - Access raw audio samples and record them to disk using AVFoundation. Perform live voice recognition using Apple's Speech framework.
  • ARKit - Captures augmented reality content with ARKit and uses SceneKit to place objects in the virtual scene. The resulting rendering is previewed locally, and shared in a TVIRoom via a custom TVIVideoCapturer source. This app requires Xcode 9 & iOS 11.
  • CallKit - Shows how to use Twilio Video with the CallKit framework.
  • DataTrack - Shows how to use the Data Track APIs for interactive drawing.
  • ReplayKit - Shows how to use ReplayKit to share the screen, and microphone via TVIVideoCapturer and TVIAudioDevice.
  • Screen Capturer - Shows how to use TVIScreenCapturer to capture the contents of a UIView, and how a custom TVIVideoCapturer can be implemented to do the same.

Setup an Access Token Server

Using Twilio's Video client within your applications requires an access token. Access Tokens are short-lived credentials that are signed with a Twilio API Key Secret and contain grants which govern the actions the client holding the token is permitted to perform.

Configuring the Access Token Server

If you want to be a little closer to a real environment, you can download one of the video Quickstart server applications - for instance, Video Quickstart: PHP and either run it locally, or install it on a server. You can review a detailed tutorial.

You'll need to gather a couple of configuration options from the Twilio developer console before running it, so read the directions on the Quickstart. You'll copy the config.example.php file to a config.php file, and then add in these credentials:

Credential Description
Twilio Account SID Your main Twilio account identifier - find it on your dashboard.
API Key Used to authenticate - generate one here.
API Secret Used to authenticate - just like the above, you'll get one here.

Use whatever clever username you would like for the identity. If you enter the Room Name, then you can restrict this users access to the specified Room only. Read this tutorial for more information on Access Tokens.

A Note on API Keys

When you generate an API key pair at the URLs above, your API Secret will only be shown once - make sure to save this in a secure location.

Running the Video Quickstart with ngrok

Because we suggest that you run your video chat application on actual iOS device so that you can use the camera on the device, you'll need to provide an externally accessible URL for the app (the iOS simulator will be fine with localhost). Ngrok creates a publicly accessible URL that you can use to send HTTP/HTTPS traffic to a server running on your localhost. Use HTTPS to make web connections that retrieve a Twilio access token.

When you get a URL from ngrok, go ahead and update ViewController.swift with the new URL. If you go down this path, be sure to follow the directions in the comments in the viewDidLoad() method at the top of the source file - you will need to uncomment one line, and comment out another. You will also need to update the code if your ngrok URL changes.

For this Quickstart, the Application transport security settings are set to allow arbitrary HTTP loads for testing your app. For production applications, you'll definitely want to retrieve access tokens over HTTPS/SSL.

More Documentation

You can find more documentation on getting started as well as our latest Docs below:

Issues and Support

Please file any issues you find here on Github. Please ensure that you are not sharing any Personally Identifiable Information(PII) or sensitive account information (API keys, credentials, etc.) when reporting an issue.

For general inquiries related to the Video SDK you can file a support ticket.

License

MIT License