Skip to content
A WebRTC and CallKit demo application
Branch: master
Clone or download


This is a demo application to show the synergy between WebRTC and Callkit. It does not claim to be complete or error safe in any way. Only the necessary parts of these both technologies are implemented to show a simple call demo.


  • Swift 4.2
  • CocoaPods
  • Xcode 10
  • Set privacy notice for camera and microphone
  • Docker for the signaling server
  • coturn or any other turn server

Signaling and Turn server

We suggest using the Spreed Signaling Server and the coturn turn server.

For a more in depth usage description please see the README of our WebRTC Abstraction Layer lib.


To configure the app with your own servers and credentials please take a look into the Config.swift file.

static let config = WebRTCConnection.Config(
            signalingServerUrl: "ws://",
            turnServer: turnServer,
            stunServerUrl: nil,
            formatConstraints: formatConstraints)


To make two devices connect you have to ensure that at least the signaling server is running. If the two devices are in different networks you also have to run a stun or turn server. Make sure to start the app on the two devices time-shifted. When the connect button is enabled you are ready to make a call. All CallKit related code is placed within the CallManager.swift file. Almost all WebRTC connection related code comes from our WAL lib.

You can’t perform that action at this time.