Display the system-calling UI for your app’s VoIP services and coordinate your calling services with other apps and the system using CallKit.

CallKit Documentation

Posts under CallKit tag

90 Posts
Sort by:
Post not yet marked as solved
12 Replies
15k Views
If the device is locked the provider callback for - (void)provider:(CXProvider *)provider didActivateAudioSession:(AVAudioSession *)audioSession is never called when trying to answer a call using CallKit (bug 28549610). This happens when the app state is backgrounded or force closed. However, if the device is not locked CallKit works perfectly in both app states. I've also noticed that any attempts to answer incoming calls after the initial "failure" (failure is in quotes because there are no errors given to my application) will succeed. To rule out exceptions, back audio unit/session management and anything my code may be doing wrong, I've disabled all my business logic and have still reproduced the issue.Has anyone run into similar issues?
Posted
by
Post not yet marked as solved
12 Replies
22k Views
We received the following message after an app rejection asking us to remove callkit integration due to some ruling on China."From Apple 5. Legal: PreambleGuideline 5.0 - LegalRecently, the Chinese Ministry of Industry and Information Technology (MIIT) requested that CallKit functionality be deactivated in all apps available on the China App Store. During our review, we found that your app currently includes CallKit functionality and has China listed as an available territory in iTunes Connect. Next Steps This app cannot be approved with CallKit functionality active in China. Please make the appropriate changes and resubmit this app for review. If you have already ensured that CallKit functionality is not active in China, you may reply to this message in Resolution Center to confirm. Voice over Internet Protocol (VoIP) call functionality continues to be allowed but can no longer take advantage of CallKit’s intuitive look and feel. CallKit can continue to be used in apps outside of China."The app is currently deployed to multiple countries including China.Removing China from deployed app store or totally removing Callkit is currently out of the option. We are currently apprehensive on the proper implementation on how to disable the feature specifically just for the Chinese region without violating yet another guideline. Does anybody have the same problem or knows an acceptable approach for this?
Posted
by
Post not yet marked as solved
1 Replies
1.6k Views
We have a iOS app in which we have integrated video calling using WebRTC sdk. Now we would like to use the Call Kit https://developer.apple.com/documentation/callkitin the app to display the call UI. When i am chekcing in docuemntation of the call kit it says that it can be used for voip app. Therefore we would like to know if as per the apple developer guidelines is it allowed to use the call kit features in a app providing voice and video calling using webrtc.
Posted
by
Post not yet marked as solved
2 Replies
665 Views
Hi there, The Call Directory Extension in Settings wasn't localized since iOS 13, and getting even worse in iOS 14 beta. In iOS 13, though not localized, the custom extension name was display as expected. In iOS 14, it showed only the bundle name which made no sense to general users. This is important to us to introduce our app to foreign countries. I also fired a feedback in Feedback Assistance but don't know when it will get fixed, so just raise the attention here.
Posted
by
Post not yet marked as solved
108 Replies
11k Views
Good evening everyone! After using CarPlay, my Apple Watch (5) no longer rings when someone calls. My iPhone 📱 11 Pro Max rings normally. Other devices (iPad and MacBook) do not ring either. After a restart, it works again on all devices or, alternatively, when I manually disconnect CarPlay. I use Wireless CarPlay. Does anyone else have the problem?
Posted
by
Post not yet marked as solved
0 Replies
506 Views
Hello, I developer voip functionality for my clients app. It uses googles WebRTC sdk + callkit. The problem is when I put app into background (.voice and .voip modes enabled in pList) while on call I get red Recording status bar. My clients would like it to be Green like WhatsApp, Skype and native calls app. I can not find any documentation how it is done. All I found is some comments that say Red Recording bar is because I'm running AVAudioSession on .playAndRecord category ( .voiceChat mode) in background. Can anyone instruct me/point me to documentation/example on how can I enter In-Call background state with green status bar? Sincerely, Martynas
Posted
by
Post not yet marked as solved
0 Replies
491 Views
Hi , I have a problem with observing call status in iPadOS 14. callObserver:callChanged: method not invoked when I initiate a cellular call from iPad ( using url as tel://). But same code working fine in iPhone - iOS 14. My Code , import UIKit import CallKit class ViewController: UIViewController, CXCallObserverDelegate {         private lazy var callObserver = CXCallObserver()     override func viewDidLoad() {         super.viewDidLoad()         configureCallButton()         view.backgroundColor = .gray         self.callObserver.setDelegate(self, queue: nil)         // Do any additional setup after loading the view.     }     func configureCallButton() {         let button = UIButton(type: .system)         button.setTitle("Call", for: .normal)         let attStr = NSMutableAttributedString(string: "Call", attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 25), NSAttributedString.Key.foregroundColor: UIColor.blue]);         button.setAttributedTitle(attStr, for: .normal)         button.translatesAutoresizingMaskIntoConstraints = false         view.addSubview(button)         button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true         button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true         button.addTarget(self, action: #selector(initiateCall), for: .touchUpInside)     }     @objc func initiateCall() {         if let url = URL(string: "tel://*********") {              UIApplication.shared.openURL(url)          }     }     func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {         if call.isOutgoing {             print("Call outgoing")         }         else if call.hasConnected {             print("Call has connected")         }         else if call.hasEnded {             print("Call has ended")         }     } } Note: Observer method invoked for FaceTime calls in iPadOS 14.( using url as facetime:// )
Posted
by
Post not yet marked as solved
1 Replies
410 Views
Hi I have a peer to peer VoIP application supposed to work without Internet access. Everything works fine except incoming calls reception while in background. I know that the recommended approach for VoIP applications is to use push notifications, but this is not an option for this application. Are there other options to receive incoming calls while in background ? thank you Bogdan
Posted
by
Post not yet marked as solved
1 Replies
884 Views
In iOS15 beta3 I get an incoming call. The text that I send as the caller is Brad Smith (PBX:142} When the incoming call screen appears it shows 142} as the caller If I look at the recent calls in the native phone App it shows it correctly as Brad Smith (PBX:142} I setup the caller CXHandle as follows... locHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:numToCall]; Note 1: Everything works fine on iOS14 Note 2: Just for info... I use this format for special internal calls so as when return a recent call from the Native phone App then it can figure out the number to dial by searching for {PBX: and using the digits after it.
Posted
by
Post not yet marked as solved
1 Replies
509 Views
From iOS 14.3, WKWebView has full support for WebRTC. I was able to get the voice call to work. Unfortunately, I ran into a blocking issue when integrating CallKit. Basically CallKit breaks getUserMedia JavaScript call. I believe it's because CallKit gives the calling process exclusive access to the microphone, but WKWebView renderer runs in a separate process. Is there a solution to this problem? The reason I'm implementing the feature on top of webview instead of native WebRTC SDK is due to the size of the SDK. It adds 10M to the app size and our app is already too big.
Posted
by
Post not yet marked as solved
0 Replies
575 Views
I took delivery of my first M1 Mac (iMac running Big Sur 11.4) and with great anticipation installed my iOS VoIP App from the AppStore. I was greatly disappointed to see that There were no VoIP Pushes to start an incoming call Callkit does not seem to work so I get no Audio. Am I missing something? Is there some permissions or configuration I might need to set? Or is it just that Callkit and Pushkit don't work even though it states on developer.apple.com that they are supported on macOS 10.15+ Any advice or guidance greatly appreciated. Very disappointed :-(
Posted
by
Post not yet marked as solved
0 Replies
464 Views
I am working on an iOS app that uses push notifications to wake up the app so I can receive SIP calls when app is not in foreground. When all is working, app gets a VOIP push notification while in background which wakes up the app and within 5 seconds I get a SIP invite to process the call. We are using a timer for 5 seconds to wait for SIP after getting VOIP push. The issue I am having is after a certain period of running sip calls test, app stopped receiving SIP invites if it is in background. This happened on our multiple test devices. Restarting the app and rebooting the device didn’t help but uninstalling & installing the same version of app did the trick. What could be the reasons behind this and how can we fix this? Have anyone else experienced the similar thing? Any suggestions . TIA.
Posted
by
Post not yet marked as solved
0 Replies
237 Views
According the the documentation CallKit in the Topic Receiving incoming call it mentions about identifying call and caller and passing that information to a corresponding method. I tried the same but am not able to get the caller details. Is there any definitive solution for the getting the caller information.
Posted
by
Post not yet marked as solved
0 Replies
339 Views
I am a fresher in the IOS app. I have some questions. Can CallKit support connect the SIP server and handle VoIP? Is another library CallKit needed to solve the above case? Many thanks.
Posted
by
Post not yet marked as solved
1 Replies
660 Views
Hey, I would like to ask when we should call completion handler for didReceiveIncomingPushWithPayload delegate method if we have some async code fired inside. Let's have following examples: (completion called already in same runloop cycle) private let provider: CXProvider func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) { /// code to get call info provider.reportNewIncomingCall(with: uuid, update: update) { error in /// some code here } completion() } (completion called at "future" when we "finish" handling voip notification, potentially future runloop cycle) private let provider: CXProvider func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) { /// code to get call info provider.reportNewIncomingCall(with: uuid, update: update) { error in /// some code here completion() } } (error cases in both examples were omitted but i'm aware I should handle them too) Which one is more correct?
Posted
by