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

Posts under CallKit tag

73 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

How to show VoIP calls on Apple Watch (WatchOS9) with CallKit?
Now my main app is already invoked voip callkit, I would want to invoke voip on iWatch app, but I have some issue: 1、How to deal audio data and network connect of iWatch voip ? can we depends on iPhone app? 2、How to use voip callkit on iWatch that only via bluetooth connect ? 3、If main app is already support voip callkit, how to support callkit for iwatch? Do we need to repeat and independently implement callkit, network, and audio on iWatch? 4、how to add support dial number on iWatch use by the thirdpart app? the case is the same with on the iPhone use, user can send dial by system call record . Any help is appreciated, thanks in advance.
0
0
62
7h
No local user-override for Live Caller Id Lookup?
If an app has a Live Caller ID Lookup extension and the lookup server indicates that a caller is identified and not blocked, then if the user wished to locally block that number they can do so either via the iPhone call block button, or via the app's Call Extension block list. However there's apparently no way for the user to do the inverse. i.e. if Live Caller Id Lookup indicated that a number should be blocked, then how could a user indicate they don't want that number blocked for them? If they added it to the Call Extension as an identified number, but live lookup is saying the number should be blocked, then what does the OS do? Give priority to the blocking instruction from the live lookup server, or give priority to the fact its in the Call Extension's Identified list?
0
0
78
4d
VoIP push notifications may not be received
Users of my app have reported that they are sometimes unable to receive Voice-over-IP (VoIP) push notifications when using a SIM. (There is no problem when using WiFi) VoIP push notifications were not received during the following period. Could you confirm diagnostic logs and could you please tell me why my app can't receive VoIP push? [diagnostic logs] https://drive.google.com/drive/folders/1gSAbr1Fy1SrjlmRXuAzoXqiaxnNbFhj8?usp=sharing [Problem period] 2024/06/17 05:34:59 - 2024/06/17 09:04:42 Number of times that the push server pushed and it received a normal APNs response: 31 Number of times that iPhone received pushes: 0 2024/06/17 23:05:03 - 2024/06/18 09:02:16 Number of times that the push server pushed and it received a normal APNs response: 192 Number of times that iPhone received pushes: 0 2024/06/15 00:35:56 - 2024/06/15 09:55:57 Number of times that the push server pushed and it received a normal APNs response: 138 Number of times that iPhone received pushes: 0
3
0
150
5d
Xcode provisioning profile doesn't include CallKit directory
I'm trying to use the callkit library on Xcode 15 but I'm getting the errors below. Error 1:Automatic signing failed Xcode failed to provision this target. Please file a bug report at https://feedbackassistant.apple.com and include the Update Signing report from the Report navigator. Error 2: Provisioning profile "iOS Team Provisioning Profile: me.liu.brian.Autocall.CallDirectoryHandler" doesn't include the Com.apple.developer.callkit.call-directory entitlement. I already generated the .entitlements file in both my main app and callDirectoryHandler. When I try to enable the CallKit capability in the Identifiers or Profiles section on apple developer.com, the CallKit Capability simply isn't listed under any of the sections, so I can't enable it. What can I do to use CallKit in my app?
0
0
112
1w
Call Blocking and Identification Not Working in iOS 18 Beta
We are experiencing an issue with the Call Blocking and Identification feature in iOS 18 Beta. This feature was functioning correctly in iOS 17, but after updating to the iOS 18 Beta, it no longer works as expected looks like iOS is blocking the number because we are getting notification but still we are getting the direct calls. We have attached the Kindly waiting for you replay. Thanks.
3
0
197
1w
iOS dosen't call didActivateAudioSession
PLATFORM AND VERSION iOS Development environment: Xcode 15.0, macOS 14.4.1, Objective-C Run-time configuration: iOS 17.2.1, DESCRIPTION OF PROBLEM I am developing an application that uses NetworkExtension (VoIP local push function). But iOS sometimes doesn't call didActivateAudioSession after following sequence. Would you tell me why iOS doesn't call didActivateAudioSession ? (I said "sometimes", but once it occurs, it will occur repeatedly) myApp --- CXStartCallAction --->iOS myApp <-- performStartCallAction callback --- iOS myApp --- AVAudioSession setCategory: AVAudioSessionCategoryPlayAndRecord --->iOS myApp --- AVAudioSession setMode: AVAudioSessionModeVoiceChat --->iOS myApp <-- didActivateAudioSession callback ----iOS I suspect that myApp cannot acquire an AVAudioSession if another app is already using AVAudioSession. [QUESTION1] Is my guess correct? Should I consider another cause? [QUESTION2] If my guess is correct, how can I prove if another app is already using an AVAudioSession? This issue is based on a customer complaint, but the customer said they don't use any other apps. Best Regards,
5
0
282
1w
Call directory extension is giving 102 error
Currently i am working on one app and it's include call directory extension and when i am trying to reload call directory extension i am getting error: Error Domain=com.apple.CallKit.error.calldirectorymanager Code=102 "(null)" and as per the apple documentation apple didn't mention about this error code. https://developer.apple.com/documentation/callkit/cxerrorcodecalldirectorymanagererror/code
1
0
214
Jun ’24
"Error: Intent of type INStartCallIntent is not supported for this app category"
I am trying to make a voip car play app using siri let assistant = CPAssistantCellConfiguration(position: .top, visibility: .always, assistantAction: .startCall) let siriTmeplate = CPListTemplate(title: "Siri", sections: [sectionItems, loadingSection], assistantCellConfiguration: assistant) siriTmeplate.tabSystemItem = .recents siriTmeplate.showsTabBadge = false Using the above code gives me the error "Error: Intent of type INStartCallIntent is not supported for this app category" on app luanch I have INStartCallIntent in my apps info plist and I have all the entitlements and I have "business" as the app category, I can fine 0 help online with this. what does this error really mean and how can I fix it please
2
0
334
Jun ’24
AudioOutputUnitStart failed with OSStatus error -50
Let the device is in locked screen Get incoming APNS video request to start video recording we are reporting this APNS to Callkit Accept incoming APNS request We are trying to initialise audio unit. Initialisation is success but starting is failing. Note - This issue is reproduced only if we receive video pull request in locked screen, after accepting callkit call we should not unlock the phone. If we unlock phone everything works as expected.
0
0
306
Jun ’24
What am I missing in getting VOIP Push working in a test environment?
Setup and status: The app is under an Enterprise dev account. The app has Push Notifications, Remote Notifications and Voice over IP entitlements selected, among other, unrelated (I think) items. On launch, the app successfully registers via PushKit and gets back a valid device token. This token is copied from the Xcode console, and used to send VOIP pushes via the iCloud push console: https://developer.apple.com/notifications/push-notifications-console/ Results: For a debug build loaded onto a physical device, the push console reports successful delivery of the VOIP push to the device. However, VOIP pushes are only received by the app when it is in the foreground. If the app is in the background or not running, it is not woken/launched. The docs mention the need for a special VOIP push certificate, but my understanding is that is required between my server and Apple's servers. Since I am using the push console, I assume that removes the need for the certificate. So, what am I missing?
2
0
386
Jun ’24
How to open app and show persistent notification upon receiving push notification on iOS
Hello everyone, I am developing a feature in my app where, upon receiving a push notification, the app should open automatically if it is closed and the screen is locked. If the device is unlocked, a persistent notification should appear and only be removed with user interaction. We managed to implement this functionality on Android using some configurations and additional rules. With this, upon receiving a push notification, the app opens automatically or a permanent notification appears. I would like to know how I can implement this functionality on iOS using Swift. Is there any specific configuration or API that allows the app to open automatically upon receiving a push notification or to display a persistent notification on the unlocked screen? Thanks in advance for your help!
1
0
302
May ’24
Siri announces GenericHandle Value instead of custom caller Name
Hello fellow developers, I’ve been working with the CallKit framework in iOS, specifically handling incoming calls. One issue I’ve encountered is that Siri when "read caller name" is enabled announces the caller name/surname set via localizedCallerName and then reads the generic handle value (usually alphanumeric) too! Has anyone encountered a similar situation or if there’s a solution to prioritize the localizedCallerName over the generic handle value without using CXHandleType.emailAddress? Alternatively, any insights or workarounds you know would be greatly appreciated. TLDR: even when I correctly configure the localizedCallerName property, Siri persists in reading the CXHandleType.generic. The original Implementation with CXHandleType.generic: The issue arises when using CXHandleType.generic for alphanumeric IDs (or even URLs as stated by documentation https://developer.apple.com/documentation/callkit/cxhandle). Despite correctly setting the localizedCallerName, Siri continues to announce the generic handle value. Expected Behavior: Siri should read only the localizedCallerName when set and ignore the generic handle value when announcing incoming calls. Workaround: Currently, the only workaround is to use CXHandleType.emailAddress for alphanumeric IDs. However, this is not ideal since it repurposes an email-related handle type for a different purpose. Steps to Reproduce: Create a CallKit app that handles incoming calls (example app from documentation can be used too). On incoming call create CXCallUpdate object Create a CXHandle with CXHandleType.generic and an alphanumeric value (e.g., “ABC123”). Pass the CXHandle to the CXCallUpdate objects' remoteHandle. Set the localizedCallerName property of the CXCallUpdate object with a custom caller name/surname. Report the call with reportNewIncomingCallWithUUID Observe that Siri reads both the localizedCallerName and the generic handle value during call announcements. While we are here a Feature Request: Developers should be able to provide a user-friendly caller name without resorting to workarounds like using CXHandleType.emailAddress. I kindly request that Apple consider enhancing Siri’s behavior in the following ways: Allow developers to suppress the reading of generic handle values while still using the correct handle type. Introduce additional type options for call announcements that don't read the generic value. Both of the above. Thank you for your help! 🙌
1
0
277
May ’24
[CallKit] App crashed when get pendingTransactions
Description: The crash happens only when I end a call.And then get the pendingTransactions, then you know , the app crashed. Reproduce: Only happens once From the crash frame, it seems that the pointer has been released. Launch Time: 2024-04-21 21:45:32.8840 +0800 OS Version: iPhone OS 17.0.1 (21A340) Release Type: User Baseband Version: 5.00.00 Report Version: 104(?) Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS at 0x4000000000000000 -> 0x0000000000000000 (possible pointer authentication failure) Exception Codes: 0x0000000000000001, 0x4000000000000000 Exception Note: EXC_CORPSE_NOTIFY(?) VM Region Info: 0 is not in any region. Bytes before following region: 4306255872 REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL UNUSED SPACE AT START ---> __TEXT 100ac4000-1096dc000 [140.1M] r-x/r-x SM=COW ...e.rc.app/Glip Termination Reason: SIGNAL;[11] Segmentation fault: 11 Terminating Process: exc handler [892] Triggered by Thread: 0 Kernel Triage: None Thread 0 name: com.apple.callkit.callprovider Thread 0 Crashed: 0 None 0x0 0x0 + 0 1 CallKit 0x1bfd19978 -[CXTransaction updateCopy:withZone:] + 80 2 CallKit 0x1bfd19ab0 -[CXTransaction copyWithZone:] + 64 3 CoreFoundation 0x19f1b6dac -[NSArray initWithArray:range:copyItems:] + 276 4 CoreFoundation 0x19f1b6c68 -[__NSPlaceholderArray initWithArray:copyItems:] + 108 5 CallKit 0x1bfd181a8 __41-[CXAbstractProvider pendingTransactions]_block_invoke + 72 6 libdispatch.dylib 0x1a70a3300 _dispatch_client_callout + 20 7 libdispatch.dylib 0x1a70b26b4 _dispatch_lane_barrier_sync_invoke_and_complete + 56 8 CallKit 0x1bfd180e0 -[CXAbstractProvider pendingTransactions] + 180 9 CallKit 0x1bfd4b040 -[CXProvider pendingTransactions] + 32 10 Glip 0x103179a30 specialized AudioCallKitManager.isCallEndAndAccept(_:) + 51 11 Glip 0x1031760b4 AudioCallKitManager.isCallEndAndAccept(_:) + 27 (<compiler-generated>:0) [inlined] 12 Glip 0x1031760b4 AudioCallKitManager.provider(_:perform:) + 1227 (AudioCallKitManager+CXAction2InAppActions.swift:65) 13 Glip 0x103179068 @objc AudioCallKitManager.provider(_:perform:) + 87 14 Glip 0x1038bd04c thunk for @escaping @callee_guaranteed (@unowned CXProvider, @unowned CXEndCallAction) -> () + 19 (<compiler-generated>:0) [inlined] 15 Glip 0x1038bd04c CallKitController.provider(_:perform:) + 727 (CallKitController.swift:174) 16 Glip 0x1038bcd48 @objc CallKitController.provider(_:perform:) + 87 17 CallKit 0x1bfd4a4c4 -[CXProvider performAction:] + 440 18 CallKit 0x1bfd18e04 __49-[CXAbstractProvider provider:commitTransaction:]_block_invoke.7 + 452 19 libdispatch.dylib 0x1a70a16a8 _dispatch_call_block_and_release + 32 20 libdispatch.dylib 0x1a70a3300 _dispatch_client_callout + 20 21 libdispatch.dylib 0x1a70b1998 _dispatch_main_queue_drain + 984 22 libdispatch.dylib 0x1a70b15b0 _dispatch_main_queue_callback_4CF + 44 23 CoreFoundation 0x19f1ac9bc __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 24 CoreFoundation 0x19f1a96c8 __CFRunLoopRun + 1996 25 CoreFoundation 0x19f1a8e18 CFRunLoopRunSpecific + 608 26 GraphicsServices 0x1e1c695ec GSEventRunModal + 164 27 UIKitCore 0x1a15b7350 -[UIApplication _run] + 888 28 UIKitCore 0x1a15b698c UIApplicationMain + 340 29 Glip 0x100b61ec8 main + 203 (main.swift:13) 30 dyld 0x1c198fd44 start + 2104
0
0
239
Apr ’24
After initiating a call in the simulator, the CXEndCallAction of CallKit is called and the call is terminated.
Hello, I'm trying to test a call in the Simulator using CallKit. However, after the CXStartCallAction of CallKit is called, the CXEndCallAction is immediately invoked. I conducted the test using Xcode 15.2 and iOS 17.2 Simulator. When I searched because I couldn't test it on the Simulator, I found a similar issue on the following link. https://stackoverflow.com/questions/78291725/callkit-invokes-cxendcallaction-after-starting-the-call-resulting-in-hangup-on The person who asked the question in the link tested it with the previous version iOS 15.5 Simulator and it worked fine. Why isn't it working in the latest version? Is it a bug? Or has the policy been updated? If there are any documents available to check regarding this matter, please share them.
0
0
361
Apr ’24
CallKit invokes CXEndCallAction after starting the call, resulting in hangup on Simulator
I am using Xcode Version 15.3 (15E204a) and different versions of Simulator runtimes (17.x, 16.x, 15.0) The app makes outgoing calls and can respond to incoming calls. After starting the call, ~2s pass before a hangup occurs. In the Console logs I see that CXEndCallAction was invoked by CallKit and the last suspicious log before invoking the CXEndCallAction is callservicesd Disconnecting call because there wont be a UI to host the call: &lt;CSDProviderCall 0x107054300 type=PhoneNumber, value=sdsddsdds, stat=Sending tStat=0, model=&lt;TUCallModel 0x103f661e0 hold=1 grp=1 ungrp=1&gt; ... This used to work before, but since upgrading to Xcode 15 and iOS 17.x it happens constantly on simulator versions 17.x, and sometimes on 16.x, whereas I wasn't able to reproduce it on 15.0 version. Can someone help me understand why this happens and how to fix it? I provided some logs down below, and I don't see similar logs in the cases when the call is okay and CallKit doesn't hangup it. Also, this does not happen on real devices From the time CXStartCallAction is invoked until the CallKit invokes CXEndCallAction, these are some of the error or warn logs that appear: callservicesd -AVSystemController- +[AVSystemController sharedInstance]: Failed to allocate AVSystemController, numberOfAttempts=3 callservicesd [WARN] +[AVSystemController sharedAVSystemController] returned nil value callservicesd [WARN] Not allowing requested start call action because a call with same UUID already exists callWithUUID: (omitted) callservicesd Error while determining process action for callSource: (omitted) callservicesd Determined that callSource: &lt;CXXPCCallSource 0x103d060a0, ...&gt;, should process action: &lt;CXStartCallAction 0x107232760 UUID=8D34853F-55DD-4DEC-97A7-551BFD27C924, error: Error Domain=com.apple.CallKit.error.requesttransaction Code=5 "(null)" callservicesd [0x103e417a0] invalidated after the last release of the connection object callservicesd [WARN] No paired device, so unable to send message UpdateCallContext callservicesd FaceTime caller ID (null) is not a valid outgoing relay caller ID callservicesd Attempting to find a valid outgoing caller ID in set of available outgoing caller IDs {( )} callservicesd Could not automatically select an outgoing caller ID; multiple telephone numbers are listed in the set of available outgoing caller IDs {( )} callservicesd Adding call &lt;CSDProviderCall 0x107054300 ...&gt; to dirty calls pool callservicesd Entitlement check: ... entitlementCapabilities={( "access-call-providers", "modify-calls", "access-call-capabilities", "access-calls" )}&gt; lacks capability 'access-screen-calls' callservicesd [WARN] ... but no dynamic identifier could be found (1) or no handoff user info exists (1). Not broadcasting frontmost call error com.apple.CallKit.CallDirectoryUnable to initialize CXCallDirectoryStore for reading: Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “CallDirectory” in the folder “Library”." ... {Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied"}} The logs provided are in order in which they are logged, but some of them are recurring After these logs there is still a message that CXStartCallAction is fullfilled: callservicesd Start call action fulfilled: &lt;CXStartCallAction 0x107231fe0 UUID=8D34853F-55DD-4DEC-97A7-551BFD27C924 ...&gt; After which the last suspicious log is logged before CXEndCallAction is invoked by CallKit: Disconnecting call because there wont be a UI to host the call: &lt;CSDProviderCall 0x107054300 ...&gt;
0
1
517
Apr ’24
How to get the caller's phone number?
Hello, I am trying to develop an app , using Flutter. My app has its own database which it contains the customer info such as name, address and phone number. I need to get the caller's phone number then I use the phone number and search in my database and if the phone# exist in our DB , I extract customer info and show it on pop up screen. How can I get the phone number of the person who is calling? i tried this, it didnt work: let networkInfo = CTTelephonyNetworkInfo() guard let carrier = networkInfo.serviceSubscriberCellularProviders?.first?.value else { return nil } return carrier.mobileNetworkCode Is there any way to get caller's number while he/she is calling? Thanks P.
2
0
475
Apr ’24