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

82 Posts
Sort by:
Post not yet marked as solved
0 Replies
365 Views
In WWDC 2016 Session 230 (https://wwdctogether.com/wwdc2016/230) they show the incoming Voip call screen (at time 02.59) with an image covering the entire call screen. How is that achieved?
Posted
by mungbeans.
Last updated
.
Post not yet marked as solved
3 Replies
1.7k Views
Hi Folks, I'm currently working on video conferencing app and use AVRoutePickerView for output device selection. Since iOS 16 release it started to display incorrect names for ear-piece and speaker options. For both of them the name is iPhone (before it was iPhone/Speaker) Output changes works correctly but display names confuse. Here is my audio session configuration:     private func configureSession() {         let configuration = RTCAudioSessionConfiguration.webRTC()         configuration.category = AVAudioSession.Category.playAndRecord.rawValue         configuration.categoryOptions = [.allowBluetooth, .allowBluetoothA2DP, .duckOthers, .mixWithOthers]         let session = RTCAudioSession.sharedInstance()         session.lockForConfiguration()         do {             try session.setConfiguration(configuration)         } catch let error as NSError {             logError("[AudioSessionManager] Unable to configure RTCAudioSession with error: \(error.localizedDescription)")         }         session.unlockForConfiguration()     }          private func overrideOutputPortIfNeeded() {         DispatchQueue.main.async {             guard let currentOutputType = self.session.currentRoute.outputs.first?.portType else { return }                      self.session.lockForConfiguration()             let shouldOverride = [.builtInReceiver, .builtInSpeaker].contains(currentOutputType)             logDebug("[AudioSessionManager] Should override output to speaker? \(shouldOverride)")             if shouldOverride {                 do {                     try self.session.overrideOutputAudioPort(.speaker)                 } catch let error as NSError {                     logError("[AudioSessionManager] Unable to override output to Speaker: \(error.localizedDescription)")                 }             }             self.session.unlockForConfiguration()         }     } Any help appreciated, Thansk!
Posted Last updated
.
Post not yet marked as solved
1 Replies
533 Views
If you create a CallKit extension with Xcode 15 beta, then add some logging to the template code that gets created and run it on an iOS 17.3 beta phone the logging clearly shows that the OS is running the extension twice when the user turns on the extension in Settings. Run it on any device with < iOS 17 and its only invoked once, as it should be. However, not only does the OS run it twice, but based on the logging the two invocations are in parallel, not serial, suggesting two CallDirectoryHandler instances are being created and run simultaneously.
Posted
by mungbeans.
Last updated
.
Post not yet marked as solved
0 Replies
477 Views
I have "upgraded" from INStartAudioCallIntent to INStartCallIntent because of deprecation warnings about INStartAudioCallIntent However with INStartCallIntent when it proceeds to make the VoIP call I need to UNLOCK the device. This defeats the purpose of using Siri where you may be driving and do not want to touch the iPhone in order to make a call Is there anyway this can be avoided? Is there a Property List Key or Phone Setting to allow the call to proceed without unlocking? With INStartAudioCallIntent I did not need to unlock the device so this is a step backwards for users.
Posted
by davemaj.
Last updated
.
Post not yet marked as solved
1 Replies
611 Views
iOS Deployment Target 12.0. I want to used 'CTCallCenter' from CoreTelephony , xcode told me 'CTCallCenter' was deprecated in iOS 10.0: Replaced by CXCallObserver from CallKit.framework. but china prohibited to use the CallKit.framework. i just want to obtaining the Call Status, no phone UI, no VoIP. so i want to know how can i do
Posted
by Mario719.
Last updated
.
Post not yet marked as solved
1 Replies
1.3k Views
I'm using Flutter with the flutter_callkit_voximplant plugin. On iOS 16 devices, CallKit closes after 60 seconds. In previous versions of iOS (14, 15), it could be displayed for 90 seconds, and then we closed it by ourselves. We have tried other packages for CallKit, but they still have the same issue. Have anyone faced the same issue and knows how to bypass it? Logs that we get when CallKit is finished flutter: [[FlutterCallKit.INFO](http://fluttercallkit.info/)] FCXProvider > executeTransaction flutter: [[FlutterCallKit.INFO](http://fluttercallkit.info/)] FCXTransaction > getActions flutter: [[FlutterCallKit.INFO](http://fluttercallkit.info/)] FCXProvider > FCXEndCallAction flutter: [[FlutterCallKit.INFO](http://fluttercallkit.info/)] FCXProvider > reportCallEnded flutter: [[FlutterCallKit.INFO](http://fluttercallkit.info/)] FCXEndCallAction > fulfill flutter: [[FlutterCallKit.INFO](http://fluttercallkit.info/)] FCXCallObserver > callChanged I assume, that we are getting declined events from the system. I've removed handling of declined events, but CallKit is still closed after 60 seconds. So, I think, we are getting declined events from the system, and the system closes callKit on the decline even if we haven’t told so. Our logs: FlutterCallKit.performEndCallAction has been called New Call Kit VoIP messages action = VoipAction.declined has been received
Posted
by zddarova.
Last updated
.
Post not yet marked as solved
0 Replies
728 Views
Dear Apple Developer Forum members, We recently encountered a situation where VoIP Push notifications were not being received under specific conditions. We would greatly appreciate any insights or information regarding the potential cause of this issue and possible countermeasures. Incident Details: Problem: VoIP Push notifications are not being received. Device Information: iPad Air (9th generation) OS version: 16.1 Prerequisites for the Issue to Occur: Device is operating without a SIM card, using only Wi-Fi connectivity. Auto-lock feature in Settings is disabled. Low-security Wi-Fi network is being used (specifically, a pocket Wi-Fi device with a low-security label). Procedure to Reproduce the Issue: Leave the app running in the foreground without any user interaction for approximately 5-6 minutes. Send a VoIP Push notification to the target device. No notification appears on the device. Investigation Details and Findings: No apsd (Apple Push Notification Service daemon) log output was generated at the time the VoIP Push notification was sent. We suspect the apsd process may have been stopped for some reason. Is it possible that the apsd process, configured as a wake-on-WAN client, fails to start when the packet is received? Additional information from the macOS Console: Following the log output below, notifications stopped being received: Default 18:26:12.416462+0900 apsd <private> _disconnectStream for interface: WWAN with reason: 2 Default 18:26:12.416574+0900 apsd <private>: Setting is connected 0 on interface WWAN with reason 2 Default 18:26:12.416681+0900 apsd Connection closed development WWAN Default 18:26:12.416783+0900 apsd <private> canUseProxy: NO isNearby: NO Default 18:26:12.416886+0900 apsd <private> received courierConnectionStatusDidChange from <private>. Default 18:26:12.416986+0900 apsd <private> canUseProxy: NO isNearby: NO Default 18:26:12.417090+0900 apsd <private> canUseProxy: NO isNearby: NO Default 18:26:12.417193+0900 apsd <private> updating network guidance isConnected? YES Default 18:26:12.417296+0900 apsd <private> canUseProxy: NO isNearby: NO Default 18:26:12.417396+0900 apsd <private> canUseProxy: NO isNearby: NO Default 18:26:12.417506+0900 apsd Attempting to roll activity presence salt Default 18:26:12.417606+0900 apsd It has not been long enough since the last roll Additional information from the Wi-Fi daemon (wifid) log: The following entry was found: "wifid apsd[122] is a wow client." Additionally, we noticed the following recurring log entry: ERROR: __WiFiLQAMgrIsIntervalChangeAllowed: Too frequent LQM interval change not allowed. Thank you in advance for any assistance, suggestions, or information you can provide. We are eager to understand the cause of this problem and explore potential remedies. Best regards,
Posted
by furuno.
Last updated
.
Post marked as solved
1 Replies
755 Views
Hello guys I am getting this error Unrecognizable claims found when trying to validate my JWT Token for push notifications. I don't understand what it means. Can someone tell me how to resolve this issue? I am using python, and using the time module to generate the epoch. I guess, this is where the issue is coming from, but I am not sure. import time epoch = time.time() Thanks in advance.
Posted Last updated
.
Post not yet marked as solved
1 Replies
401 Views
We have a voip calling app which supports multiple calls at the same time. Problem is, if a user is on 1st voip call, mutes it and then holds it to accept 2nd voip call, the 2nd voip call does not have an outgoing audio. This means, it appears as if the 2nd voip call has been muted. Incoming audio works properly. Is this working as expected with Callkit?
Posted Last updated
.
Post not yet marked as solved
1 Replies
574 Views
I made an app for calls with CallKit and PushKit. It seems everything is done correctly, according to apples manual on CallKit and PushKit. If I start app on two devices, and try to make a call everything is working for the first time, and it can work for the second time and so on. But then, by unknown reason (I don't handle any errors), the phone that receives voip push notification ringing but doesn't show the panel with answer/decline buttons. If that happens, new incoming calls work the same broken way. To improve that broken situation I must initiate outgoing call with CallKit on broken phone. I don't post any code, it just the same as in numerous examples. Do anyone has guess what's wrong?
Posted Last updated
.
Post not yet marked as solved
0 Replies
698 Views
Hi, Sharing the requirement and issues that we are facing with ANCS. Requirement - On the hardware (Support BLE) along with GATT protocol, ANCS and AMC is implemented. On the display - Caller name, Duration, Status should come. Usecase - On an incoming call hardware is getting the username/contact number and same is showing on the display, But after the call accept- no data access ANCS is providing; also once call is accepted, hardware is not able to get the call duration, caller name/number and disconnect the call. What can be the solution here to get these information? Is there any other protocol or BLE support is needed to upgrade or any apple profile that does provide these information and control? Thanks
Posted
by VinitC.
Last updated
.
Post not yet marked as solved
2 Replies
1.5k Views
According to SpeakerBox sample code, the Watch App should register for receiving the PushKit notifications like so: let pushRegistry = PKPushRegistry(queue: DispatchQueue.main) pushRegistry.delegate = self pushRegistry.desiredPushTypes = [.voIP] This would then cause a delegate method to be called with a token: func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) { } That, however, never happens. I've already have the required entitlement and this exact same logic works fine on the main iOS app, however, in the companion watchOS app, it does nothing. What am I missing here? Also, since this is not a standalone watchOS app, it doesn't really make sense that it would have its own pushKit token. Isn't there a way to notify the watch about an incoming call using the same pushKit token received on the phone? Thanks in advance,
Posted
by lkz32.
Last updated
.
Post not yet marked as solved
1 Replies
969 Views
We're currently trying to develop an Apple Watch companion app for our iOS app using the new WatchOS 9 which has the VoIP call capabilities. Is there a way to mirror VoIP notifications similarly to push notifications between the WatchOS app and iOS app? Essentially we'd like to be able to send a VoIP notification to the iOS app and have the answer/decline call screen show up in both the iPhone and Apple Watch. Currently when we send a VoIP notification to the iOS app, the Apple Watch does not receive anything. Push notifications and local notifications work just fine.
Posted
by JoL07.
Last updated
.
Post not yet marked as solved
0 Replies
537 Views
In the WWDC, there was a mention of the CallKit framework that it would be possible for 3rd party VoIP apps to create Posters programmatically. However, there are no new methods around this in the CallKit framework. Are we missing something?
Posted
by knakul.
Last updated
.