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

83 Posts
Sort by:
Post not yet marked as solved
1 Replies
397 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
by
Post not yet marked as solved
0 Replies
682 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
Post not yet marked as solved
1 Replies
566 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
by
Post marked as solved
1 Replies
742 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
by
Post not yet marked as solved
0 Replies
719 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
Post not yet marked as solved
0 Replies
463 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
Post not yet marked as solved
1 Replies
523 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
Post not yet marked as solved
4 Replies
1.2k Views
Occasional issues for iOS 17, when call mute in callkit, system will auto mute/unmute many times, see the log for iOS 17, and iOS 16 is normal. iOS 17: {code} 2023-07-31 17:22:54.302 CST : [app] CallKitManager.swift:293:muteMeeting(_:muted:ignoreCallback:):muteMeeting muted:true 2023-07-31 17:22:54.468 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: true 2023-07-31 17:22:54.996 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: true 2023-07-31 17:22:55.037 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: false 2023-07-31 17:22:55.088 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: true 2023-07-31 17:22:55.180 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: false 2023-07-31 17:22:55.222 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: true 2023-07-31 17:22:55.300 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: false 2023-07-31 17:22:55.335 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: true 2023-07-31 17:22:55.429 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: false 2023-07-31 17:22:55.476 CST : [app] CallKitDelegate.swift:119:provider(:perform:):provider CXSetMutedCallAction isMuted: true 2023-07-31 17:22:55.566 CST : [app] CallKitDelegate.swift:119:provider(_:perform:):provider CXSetMutedCallAction isMuted: false {code}
Posted
by
Post not yet marked as solved
0 Replies
469 Views
I've been successfully using CXProvider.reportNewIncomingVoIPPushPayload() as follows: a (non VoIP) push is sent to the handset this is intercepted by a notification service extension the extension calls CXProvider.reportNewIncomingVoIPPushPayload() (the extension has the required com.apple.developer.usernotifications.filtering entitlement) this results in the app delegate's implementation of PKPushRegistryDelegate:didReceiveIncomingPushWithPayload getting called (the app is launched if terminated) This all works as expected, in particular when the app is terminated it still works. However its suddenly stopped working since my phone got updated to iOS 16.6 (I can't remember exactly what was on it previously, 16.5 or 16.4). Now with iOS 16.6 the behavior is that PKPushRegistryDelegate:didReceiveIncomingPushWithPayload() only gets called if the app is not terminated. If the app is terminated then calling CXProvider.reportNewIncomingVoIPPushPayload() results in the app getting launched and didFinishLaunchingWithOptions() getting called BUT didReceiveIncomingPushWithPayload() is not called when launching from a terminated state. As a consequence of didReceiveIncomingPushWithPayload() not getting called, the app isn't calling reportNewIncomingCallWithUUID() and so after a few runs the OS stops launching the app entirely saying: "Application will not be launched because it failed to report an incoming call too many times". When didFinishLaunchingWithOptions() is called the launchOptions are nil, i.e. there is no way to distinguish the app from being launched as a consequence of reportNewIncomingVoIPPushPayload()(*) being called and therefore it is not possible to call reportNewIncomingCallWithUUID(). So this feature is totally broken apparently from previous behavior. Any comment? TIA (*)Well actually, the extension could write a flag to a shared group and the app read that on launch, but what a hack, and should be unnecessary.
Posted
by
Post not yet marked as solved
0 Replies
393 Views
Our iOS app is using CallKit to receive VoIP notification and using Per App VPN to access custom HTTP REST API located in private network. VPN is required to access the custom HTTP REST API and to resolve the API server name. Currently we have issues with receiving notifications when the Per App VPN is not connected. After the notification is received and AppDelegate wakes up, the custom HTTP REST API calls are executed while waiting for the user's interaction. At the timing of this HTTP REST API Call , the server name resolution fails and the app crashes. From the user's point of view,Incoming Calling Report screen disappears in about 2 seconds. Expected results: HTTP REST API call to succeed and the app not to crash. I want to know following. Is the communication triggered by AppDelegate not subject to activation Per App VPN? The behavior of this phenomenon does not appear to activate Per App VPN. Is it possible to explicitly start VPN from App code and wait for it to ready?
Posted
by
Post not yet marked as solved
1 Replies
470 Views
Hi, Is CallKit going to be brought as a framework for macOS 14 as well? Which library is recommended for being able to integrate native VoIP calling on macOS? Best regards, Elöd
Posted
by
Post not yet marked as solved
0 Replies
452 Views
I need a custom UI/visuals for voice calls, but I'm having a hard time getting it working. I'm basing the project off of the example SpeakerBox-Watch project, which has custom UIs for calls in the iOS project, but seems to just use the system UI in the WatchOS project. I would simply like to show an image while the call is happening, and hide the image when the call has been terminated. Is there any way to do this Using CallKit on WatchOS, or simulate something similar using the streaming audio? I've attempted to get around this with pure HTTP requests in an app which is recording audio, instead of web sockets and callkit, but the latency/behavior is not acceptable for voice calls.
Posted
by