All Projects → twilio → Twilio Video App Ios

twilio / Twilio Video App Ios

Licence: apache-2.0
A collaboration application built with the Twilio Video iOS SDK

Programming Languages

swift
15916 projects
objc
23 projects

Projects that are alternatives of or similar to Twilio Video App Ios

Audioswitch
An Android audio management library for real-time communication apps.
Stars: ✭ 69 (-64.8%)
Mutual labels:  twilio, webrtc
Twilio Video.js
Twilio’s Programmable Video JavaScript SDK
Stars: ✭ 408 (+108.16%)
Mutual labels:  twilio, webrtc
Fonos
🚀 The open-source alternative to Twilio
Stars: ✭ 3,785 (+1831.12%)
Mutual labels:  twilio, webrtc
Routr
Routr: Next-generation SIP Server
Stars: ✭ 788 (+302.04%)
Mutual labels:  twilio, webrtc
Twilio Video App Android
A collaboration application built with the Twilio Video Android SDK
Stars: ✭ 186 (-5.1%)
Mutual labels:  twilio, webrtc
Twilio Video App React
A collaboration application built with the twilio-video.js SDK and React.js
Stars: ✭ 1,233 (+529.08%)
Mutual labels:  twilio, webrtc
Twilio Contact Center
A contact center built on Twilio, supporting voice calls, web chat, callback, Facebook Messenger and SMS chat
Stars: ✭ 176 (-10.2%)
Mutual labels:  twilio, webrtc
Webrtc To Sip
Setup for a WEBRTC client and Kamailio server to call SIP clients
Stars: ✭ 173 (-11.73%)
Mutual labels:  webrtc
Webrtcbuilds
Getting started with WebRTC natively is no easy picnic. The goal of webrtcbuilds is to provide a single standalone WebRTC static library and package.
Stars: ✭ 185 (-5.61%)
Mutual labels:  webrtc
Rtcmulticonnection
RTCMultiConnection is a WebRTC JavaScript library for peer-to-peer applications (screen sharing, audio/video conferencing, file sharing, media streaming etc.)
Stars: ✭ 2,187 (+1015.82%)
Mutual labels:  webrtc
Peardownloader.js
一个支持多协议、多源、混合P2P-CDN的下载器
Stars: ✭ 170 (-13.27%)
Mutual labels:  webrtc
Node Webrtc
node-webrtc is a Node.js Native Addon that provides bindings to WebRTC M87
Stars: ✭ 2,258 (+1052.04%)
Mutual labels:  webrtc
Flutter Webrtc
WebRTC plugin for Flutter Mobile/Desktop/Web
Stars: ✭ 2,764 (+1310.2%)
Mutual labels:  webrtc
Playcanvas Ar
Fast and Easy Augmented Reality for the Web 🚀
Stars: ✭ 172 (-12.24%)
Mutual labels:  webrtc
Netflux
JavaScript client and server side transport API based on WebRTC & WebSocket
Stars: ✭ 188 (-4.08%)
Mutual labels:  webrtc
Ipywebrtc
WebRTC for Jupyter notebook/lab
Stars: ✭ 171 (-12.76%)
Mutual labels:  webrtc
Peer To Peer Cue System
Cue system for simple two-way communication and visual signaling using a PeerJS peer-to-peer connection.
Stars: ✭ 190 (-3.06%)
Mutual labels:  webrtc
Video Meeting
Google Meet / Zoom clone in a few lines of code
Stars: ✭ 187 (-4.59%)
Mutual labels:  webrtc
Webrtc Leak Prevent
Prevent WebRTC leaks in Chromium browsers.
Stars: ✭ 182 (-7.14%)
Mutual labels:  webrtc
Webcamera
Camera controls for the Web
Stars: ✭ 182 (-7.14%)
Mutual labels:  webrtc

Twilio Video iOS App

This app is a sample video conferencing app that uses the Twilio Programmable Video SDK. The open source app can be easily configured by developers to try out real-time video and audio features.

App Preview

Features

Requirements

iOS Deployment Target Xcode Version Swift Language Version
12.0 12.0 Swift 5

Getting Started

Deploy Twilio Access Token Server

NOTE: The Twilio Function that provides access tokens via a passcode should NOT be used in a production environment. This token server supports seamlessly getting started with the collaboration app, and while convenient, the passcode is not secure enough for production environments. You should use an authentication provider to securely provide access tokens to your client applications. You can find more information about Programmable Video access tokens in this tutorial.

The app requires a back-end to generate Twilio access tokens. Follow the instructions below to deploy a serverless back-end using Twilio Functions.

  1. Install Twilio CLI.
  2. Run twilio login and follow prompts to login to your Twilio account.
  3. Run twilio plugins:install @twilio-labs/plugin-rtc.
  4. Run twilio rtc:apps:video:deploy --authentication passcode.
  5. The passcode that is output will be used later to sign in to the app.

The passcode will expire after one week. To generate a new passcode, run twilio rtc:apps:video:deploy --authentication passcode --override.

Troubleshooting

If any errors occur after running a Twilio CLI RTC Plugin command, or the application fails to validate a passcode, then try the following steps.

  1. Update your application to the latest source
  2. Run twilio plugins:update to update the RTC plugin to the latest version.
  3. Run twilio rtc:apps:video:delete to delete any existing authentication servers.
  4. Run twilio rtc:apps:video:deploy --authentication passcode to deploy a new authentication server.

App Behavior with Different Room Types

NOTE: Usage charges will apply for most room types. See pricing for more information.

After running the command to deploy a Twilio Access Token Server, the room type will be returned in the command line output. Each room type provides a different video experience. More details about these room types can be found here. The rest of this section explains how these room types affect the behavior of the video app.

Group - The Group room type allows up to fifty participants to join a video room in the app. The Network Quality Level (NQL) indicators and dominant speaker are demonstrated with this room type. Also, the VP8 video codec with simulcast enabled along with a bandwidth profile are set by default in order to provide an optimal group video app experience.

Small Group - The Small Group room type provides an identical group video app experience except for a smaller limit of four participants.

Peer-to-peer - Although up to ten participants can join a room using the Peer-to-peer (P2P) room type, it is ideal for a one to one video experience. The NQL indicators, bandwidth profiles, and dominant speaker cannot be used with this room type. Thus, they are not demonstrated in the video app. Also, the VP8 video codec with simulcast disabled and 720p minimum video capturing dimensions are also set by default in order to provide an optimal one to one video app experience. If more than ten participants join a room with this room type, then the video app will present an error.

Go - The Go room type provides a similar Peer-to-peer video app experience except for a smaller limit of two participants. If more than two participants join a room with this room type, then the video app will present an error.

If the max number of participants is exceeded, then the video app will present an error for all room types.

Install Dependencies

  1. Install CocoaPods.
  2. Run pod install.

Configure Signing

  1. Open VideoApp.xcworkspace with Xcode.
  2. In Xcode navigate to the Signing & Capabilities pane of the project editor for the Video-Community target.
  3. Change Team to your team.
  4. Change Bundle identifier to something unique.

Run

  1. In Xcode use the Scheme menu to select the Video-Community scheme.
  2. In Xcode use the Scheme menu to select a destination. Cameras do not work in the simulator so select a device for best results.
  3. Run ⌘R the app.

The Video-Internal scheme uses authentication that is only available to Twilio employees in order to make internal testing easier.

Start Video Conference

For each device:

  1. Run the app.
  2. Enter any unique name in the Your name field.
  3. Enter the passcode from Deploy Twilio Access Token Server in the Passcode field.
  4. Tap Sign in.
  5. Enter a room name.
  6. Tap Join.

The passcode will expire after one week. Follow the steps below to sign in with a new passcode.

  1. Generate a new passcode.
  2. In the app tap Settings > Sign Out.
  3. Repeat the steps above.

Tests

Unit Tests

For unit tests use:

UI Tests

UI tests require credentials that are only available to Twilio employees.

Known Issues

  1. Running tests ⌘U will crash if the app was run ⌘R on the device previously. See issue #12 for a workaround and more details.

Related

For Twilions

Twilio employees should follow these instructions for internal testing.

License

Apache 2.0 license. See the LICENSE file for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].