• Home
  • About
  • Consultancy
  • Contact

The New Dial Tone

Technology & Markets

CallKit is a New Nightmare for Operators

September 19, 2016 / in Mobile / 13 Comments

OTT VoIP made easy on iOS10

Anyone who once received an OTT VoIP call on an iOS device knows the drill, you need to unlock the phone, get back to that notification and answer the call hoping you did all of this fast enough so call didn’t timeout. If an incoming, operator generated, call would come in while you are on a VoIP call it would override that VoIP call putting it on hold without letting the user make his choice as is done with 2 telephony calls through call waiting.

This dialer priority problem is part of the overall OTT VoIP calls experience problem that is a roadblock for OTT VoIP calls to really replace telephony mobile calls.

In iOS10, Apple introduced CallKit which comes to put an end to this challenge by giving OTT VoIP apps the ability to offer on a par experience with telephony calls. CallKit connects between the phone’s system services such as telephony and audio devices to VoIP applications. VoIP applications that decide to make use of CallKit will interact with CallKit when making calls, receiving calls or performing actions on a call such as muting it.

CallKit Architecture

CallKit architecture for OTT VoIP call

 

Some of the benefits from user experience perspective:

  • Incoming calls are alerted and answered in the same way telephony calls are, goodbye to that terrible locked screen experience when answering a VoIP call
  • The system knows about all calls, telephony or VoIP, and handles them in the same priority. This means that if a user is on an operator phone call and wants to make a VoIP call, the telephony call will be placed on hold
  • Incoming telephony call no longer automatically put VoIP calls on hold but rather are viewed as call waiting
  • It is possible to swap between active and held calls regardless if they are VoIP or telephony calls
  • VoIP calls are visible on recent calls and included in user’s contact information
  • VoIP calls are visible and easily returned to from home screen

Here are some snippets from the Apple WWDC 2016.

This is how an incoming call works with CallKit. Instead of that push notification coming up on your screen the iOS system will actually view it as a call, not just a notification.

Incoming VoIP Call

Incoming OTT VoIP call architecture using CallKit

And this is how an outgoing VoIP call looks like now.

Outgoing VoIP call

Outgoing OTT VoIP call architecture using CallKit

In both cases call setup goes through updating CallKit and the iOS system so multiple calls can be managed properly as seen in the call waiting example below. It now doesn’t matter what type of call it is, VoIP or operator one, all calls are born equal.

Call waiting

Call waiting user experience with VoIP/non-VoIP calls using CallKit

Screenshot below shows how a VoIP call remains active in home screen so returning to it is just like it was with operator telephony calls before.

Call active in home screen and contacts

Call active in home screen and VoIP app in contacts

Some OTT providers have already adopted CallKit and introduced it in their applications; this includes Cisco Spark and Vonage.

Not technical but a strategic business decision

To date, Apple made life of VoIP app developers pretty complex. Android was more open in this sense (as in many other things). The decision of Apple to give VoIP calls the same priority as operator telephony calls is not a technical decision, it is a strategic decision to pull the rug out from under the operators’ advantage around user experience.

As OTT VoIP and operator calls are made equal on iOS10 users will become more indifferent as to which service to use. This makes OTTs stronger and when looking specifically at the business sector, it makes the embedding of telephony in business communications and collaboration services more natural.

You may also like:

  • Hold On with the Apple WebRTC in iOS PartyHold On with the Apple WebRTC in iOS Party
  • OTTs Combining WebRTC with SD-WAN – a New Headache for OperatorsOTTs Combining WebRTC with SD-WAN – a New Headache for Operators
  • Geographical Silos vs. Service Silos… Guess Who Faces CrexitGeographical Silos vs. Service Silos… Guess Who Faces Crexit
  • Why Dropbox Must Take WebRTC SeriouslyWhy Dropbox Must Take WebRTC Seriously

Tagged With: Apple, CallKit, Cisco Spark, iOS10, OTT, VoIP Call, Vonage

Comments

  1. Fred Clark says

    September 22, 2016 at 3:44 am

    Can this feature be used for a WebRTC call as well assuming it is a Native Application?

    Reply
    • Amir Zmora says

      September 22, 2016 at 8:23 am

      Sure. The fact WebRTC happens to be the media engine of that application doesn’t impact the option of using CallKit. It is still a VoIP call and the application may make use of CallKit.

      Reply
  2. Erika says

    October 12, 2016 at 4:36 am

    How do I get rid of this calkit or can I have my apps not link to my phones call history? There is a reason I have app to make separe calls and msgs I don’t need them linked to my phone it is annoying. HELP

    Reply
    • Amir Zmora says

      October 12, 2016 at 11:47 am

      Simply don’t use it in your app. You need to explicitly decide to use it and link to it in order to activate the capabilities it brings.

      Reply
  3. Andrei says

    November 19, 2016 at 12:03 am

    On Call Waiting screen: if you press ‘Hold and Accept’ would you
    be given option to merge calls and create 3-way conference?
    Will it work if one call is phone and other is VOIP?

    Reply
    • Amir Zmora says

      November 21, 2016 at 12:29 pm

      Hi Andrei,

      Unfortunately CallKit doesn’t enable establishing 3-way calls between a VoIP call and a PSTN one. This is probably since the 3-way call feature is service provider dependent.

      Amir

      Reply
  4. Chris Chan says

    November 21, 2016 at 5:07 am

    I have an existing app that using webRTC, how can implement callkit on top the webRTC ?

    Reply
    • Amir Zmora says

      November 21, 2016 at 12:31 pm

      Hi Chris,

      To get your WebRTC application to use CallKit you will need to integrate your call flow with the CallKit framework.
      Take a look at the Apple documentation (https://developer.apple.com/reference/callkit) for more information.

      Amir

      Reply
      • Chris Chan says

        November 22, 2016 at 4:15 am

        Thanks Amir,

        Reply
  5. Michael says

    January 18, 2017 at 5:31 pm

    Could you have a service work in background to intercept any outgoing call, detect if it is an international number and launch the voip app?

    Reply
    • Amir Zmora says

      January 18, 2017 at 5:57 pm

      Hi Michael,

      This is not so much related to CallKit functionality. CallKit is a closed library from Apple that knows about all calls on the device. It doesn’t handle diverting calls from one app to the other.
      What you could do is have the user dial from your app and then if your app detects it is a local call handle it through the phone’s dialer similar to clicking on a phone number on a website that results in opening of the dialer.
      Once the user decided to call from the phone dialer that’s where the call will go out from.

      Reply
      • Michael says

        January 18, 2017 at 6:02 pm

        But then you couldn’t have an app work in background mode with the CalllKit funtionality to detect outgoing calls from the native call app and manipulate them, could you?

        Reply
        • Amir Zmora says

          January 18, 2017 at 6:06 pm

          Right. I don’t think that is possible. The purpose of CallKit is not to move a call from the phone dialer to other apps but just to be able to manage calls of different applications + dialer as real calls with similar priority.

          Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Subscribe by email
LinkedInTwitter

ABOUT ME

Amir Zmora

Amir Zmora

Blogging about new technology trends and their impact on markets and people.

read more
Follow @AmirZmora

Categories

  • IoT
  • Markets & People
  • Mobile
  • SD-WAN
  • VoIP
  • WebRTC Standards

© 2018 The New Dial Tone

Designed by Katika