# CallKit Tutorial for iOS | raywenderlich.com

**URL:** <https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487>\
**Category:** 🎓 Courses & Articles\
**Created:** [April 3, 2019, 7:48pm UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487 "2019-04-03T19:48:59Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![jozsef.vesza](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/jozsef.vesza/32/103514_2.png) [@jozsef.vesza](https://forums.kodeco.com/u/jozsef.vesza)\
**Post date:** [April 3, 2019, 7:48pm UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/1 "2019-04-03T19:48:59Z")

</div>

Learn how your app can use CallKit for system-level phone integration and how to build a directory extension for call blocking and identification.

* * *
This is a companion discussion topic for the original entry at [https://www.raywenderlich.com/1276414-callkit-tutorial-for-ios](https://www.raywenderlich.com/1276414-callkit-tutorial-for-ios)

---

<div class="post-metadata">

**Author:** ![blakninja](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/blakninja/32/102075_2.png) [@blakninja](https://forums.kodeco.com/u/blakninja)\
**Post date:** [April 9, 2019, 11:28pm UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/2 "2019-04-09T23:28:41Z")

</div>

I don’t understand the outcome of the “Starting the Call” chapter.

When I run the app and make a call, in the Hotline table view screen, I see the outgoing call and the label on the right saying “Dialing…”, “Connecting…”, then “Active”. But once it’s active, there’s no sound, nothing. I don’t hear the ringtone, or the other person answering. Is this chapter incomplete?

Thanks!

---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [April 30, 2019, 4:07am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/3 "2019-04-30T04:07:26Z")

</div>

@haawa Can you please help with this when you get a chance? Thank you - much appreciated! :]

---

<div class="post-metadata">

**Author:** ![mobiapp](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/mobiapp/32/81840_2.png) [@mobiapp](https://forums.kodeco.com/u/mobiapp)\
**Post date:** [April 30, 2019, 8:16am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/4 "2019-04-30T08:16:43Z")

</div>

How can we make real call using this App ? Is it possible or it is a framework to work with existing VOIP apps to improve UI , please advise

---

<div class="post-metadata">

**Author:** ![haawa](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/haawa/32/97362_2.png) [@haawa](https://forums.kodeco.com/u/haawa)\
**Post date:** [April 30, 2019, 8:31am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/5 "2019-04-30T08:31:10Z")

</div>

The purpose of this tutorial is to learn how your app can use CallKit for system-level phone integration and how to build a directory extension for call blocking and identification.

This tutorial doesn’t cover the VoIP integration itself. It covers how you can integrate with Apple dialing and calling APIs.

---

<div class="post-metadata">

**Author:** ![haawa](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/haawa/32/97362_2.png) [@haawa](https://forums.kodeco.com/u/haawa)\
**Post date:** [April 30, 2019, 8:35am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/6 "2019-04-30T08:35:47Z")

</div>

As it is stated on [Apple documentation page](https://developer.apple.com/documentation/callkit), with CallKit framework you can:

“Display the system-calling UI for **your app’s VoIP services** , and coordinate your calling services with other apps and the system”.

So for actual calling you will need to use some VoIP APIs which is not part of CallKit.  
Once you do that, you can then integrate with the iOS calling UI by using CallKit framework. This is out of scope of this tutorial.

---

<div class="post-metadata">

**Author:** ![mobiapp](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/mobiapp/32/81840_2.png) [@mobiapp](https://forums.kodeco.com/u/mobiapp)\
**Post date:** [April 30, 2019, 8:37am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/7 "2019-04-30T08:37:46Z")

</div>

Thanks for the clarification

---

<div class="post-metadata">

**Author:** ![blakninja](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/blakninja/32/102075_2.png) [@blakninja](https://forums.kodeco.com/u/blakninja)\
**Post date:** [April 30, 2019, 10:49am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/8 "2019-04-30T10:49:53Z")

</div>

I see thanks. Is it possible to programatically trigger (or make) a phone call using CallKit? From the documentation, it seems not. Can you confirm? Thanks!

---

<div class="post-metadata">

**Author:** ![paprajapati](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/paprajapati/32/81494_2.png) [@paprajapati](https://forums.kodeco.com/u/paprajapati)\
**Post date:** [May 30, 2019, 11:22am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/9 "2019-05-30T11:22:29Z")

</div>

Thanks for great tutorial. Actually my app using callkit to make calls but. I also wants to record those calls can i do that?

---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [May 30, 2019, 11:43am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/10 "2019-05-30T11:43:08Z")

</div>

@haawa Can you please help with this when you get a chance? Thank you - much appreciated! :]

---

<div class="post-metadata">

**Author:** ![amadeu01](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/amadeu01/32/110248_2.png) [@amadeu01](https://forums.kodeco.com/u/amadeu01)\
**Post date:** [June 22, 2019, 4:13pm UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/11 "2019-06-22T16:13:28Z")

</div>

Hi, thanks for the tutorial.  
I’d like to know whether is possible to keep showing the system in-call UI when the screen is not locked.

![image](https://files.chunter.kodeco.com/original/3X/3/a/3add466f67d54384f27e88a2c110aded285adf1a.jpeg)

This ˆ screen is only shown and kept when the device screen is locked.

---

<div class="post-metadata">

**Author:** ![prashantkt](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/prashantkt/32/81494_2.png) [@prashantkt](https://forums.kodeco.com/u/prashantkt)\
**Post date:** [June 24, 2019, 7:35am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/12 "2019-06-24T07:35:52Z")

</div>

When device is locked and we show incoming call. native UI is shown which is fine, but how can I get know when app button pressed (bottom right button with title Hotline ) ![image](https://files.chunter.kodeco.com/original/3X/0/8/08fc9f2b7b43c57b6cb579b3b2ef9f1bdda3c77a.png)

So is there any event fire for that button press?

Issue I am facing is with ARKit. ARKit session is unable to start when this screen appears and getting this error

**2019-06-24 13:05:19.890875+0530 App[4305:1012138] [Sensor] ARImageSensor (\<ARImageSensor: 0x281648cf0\>) failed to start!**

**2019-06-24 13:05:19.891068+0530 App[4305:1012138] [Session] Session (0x10705a9d0): did fail with error: Error Domain=com.apple.arkit.error Code=102 “Required sensor failed.” UserInfo={NSLocalizedRecoverySuggestion=Make sure that the application has the required privacy settings., NSLocalizedDescription=Required sensor failed., NSLocalizedFailureReason=A sensor failed to deliver the required input.}**

Any help ?

---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [July 9, 2019, 2:05am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/13 "2019-07-09T02:05:29Z")

</div>

@haawa Do you have any feedback about this? Thank you - much appreciated! :]

---

<div class="post-metadata">

**Author:** ![haawa](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/haawa/32/97362_2.png) [@haawa](https://forums.kodeco.com/u/haawa)\
**Post date:** [July 9, 2019, 7:12am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/14 "2019-07-09T07:12:54Z")

</div>

As far as I know, there is no API to record call from Apple.

---

<div class="post-metadata">

**Author:** ![haawa](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/haawa/32/97362_2.png) [@haawa](https://forums.kodeco.com/u/haawa)\
**Post date:** [July 9, 2019, 7:16am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/15 "2019-07-09T07:16:11Z")

</div>

I think there should be a way to display this while phone is unlocked. But I’m unaware how to do this. If you succeed please share your knowledge.

---

<div class="post-metadata">

**Author:** ![haawa](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/haawa/32/97362_2.png) [@haawa](https://forums.kodeco.com/u/haawa)\
**Post date:** [July 9, 2019, 7:24am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/16 "2019-07-09T07:24:13Z")

</div>

I don’t have an answer to your question. My best guess would be that when your app is launched by pressing the “Hotline” button, you can this information as user info in one of AppDelegate callbacks. And then you will be able to change logic depending on how the app was launched.

---

<div class="post-metadata">

**Author:** ![alif](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/alif/32/102075_2.png) [@alif](https://forums.kodeco.com/u/alif)\
**Post date:** [August 21, 2019, 12:28pm UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/17 "2019-08-21T12:28:27Z")

</div>

when I click for loud speaker its active and become a disactive and I got this logs

````auto
2019-08-21 14:34:03.130631+0300 AddaIOS[2458:467985] Route change:
2019-08-21 14:34:03.130913+0300 AddaIOS[2458:467985] Override
2019-08-21 14:34:03.131045+0300 AddaIOS[2458:467985] Previous route:
2019-08-21 14:34:03.131737+0300 AddaIOS[2458:467985] <AVAudioSessionRouteDescription: 0x10e76ada0, 
inputs = (
    "<AVAudioSessionPortDescription: 0x10e76ae40, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = (null)>"
); 
outputs = (
    "<AVAudioSessionPortDescription: 0x10e76b1c0, type = Receiver; name = Receiver; UID = Built-In Receiver; selectedDataSource = (null)>"
)>
2019-08-21 14:34:03.217922+0300 AddaIOS[2458:467985] Route change:
2019-08-21 14:34:03.218300+0300 AddaIOS[2458:467985] CategoryChange
2019-08-21 14:34:03.218670+0300 AddaIOS[2458:467985] New Category: AVAudioSessionCategoryPlayAndRecord
2019-08-21 14:34:03.218963+0300 AddaIOS[2458:467985] Previous route:
2019-08-21 14:34:03.219813+0300 AddaIOS[2458:467985] <AVAudioSessionRouteDescription: 0x10e323ec0, 
inputs = (
    "<AVAudioSessionPortDescription: 0x10b3ee020, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = (null)>"
); 
outputs = (
    "<AVAudioSessionPortDescription: 0x10e32eb40, type = Speaker; name = Speaker; UID = Speaker; selectedDataSource = (null)>"
)>```
````

---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [September 6, 2019, 1:17am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/18 "2019-09-06T01:17:31Z")

</div>

@haawa Can you please help with this when you get a chance? Thank you - much appreciated! :]

---

<div class="post-metadata">

**Author:** ![pocheshire](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/pocheshire/32/98088_2.png) [@pocheshire](https://forums.kodeco.com/u/pocheshire)\
**Post date:** [October 11, 2019, 8:24am UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/19 "2019-10-11T08:24:13Z")

</div>

Unfortunately, this code hasn’t worked anymore.

Problems:  
• system call UI doesn’t show;  
• CallKit can’t place the connection to the called phone.

iOS 13+ Xcode 11+

---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [November 14, 2019, 2:16pm UTC](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487/20 "2019-11-14T14:16:51Z")

</div>

@haawa Do you have any feedback about this? Thank you - much appreciated! :]

[Next page](https://forums.kodeco.com/t/callkit-tutorial-for-ios-raywenderlich-com/66487.md?page=2)
