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
0 Replies
39 Views
So i’ve been testing voip calls of my app. One weird issue i noticed is that after few calls iphone stops receiving voip notifications. actually not just voip notifications but notifications from every other apps. i have two wifi networks at my home. when i switch from one network to other then suddenly voip notifications starts working and if there were any pending notification from other apps then those arrives too as soon as i change the network. Again i test calls few times and it works. then again same issue. if voip notifications doesn’t works then i just switch the network and notifications works. wondering if its iphone issue or ios or the router configuration thats delaying or preventing the notification from coming in.
Posted
by
Post not yet marked as solved
0 Replies
32 Views
i have an app with video call integrated and call kit integrated totally fine. when i cold launch the app launch time is absolutely normal. Now if my app is terminated and i recieve voip notification and see call kit banner and i accept the call from there, it launches my app. But it freezes like for 5 to 10 secs on a white screen. it happens everytime when i receive call and pick it up while app is in terminated state. i also loose the audio in these scenario. Need help to figure out if app launching from call kit answer call action and from normal tap on icon is any different?
Posted
by
Post not yet marked as solved
2 Replies
76 Views
Hallo there, We are using PUSHKIT and CALLKIT for waking up and showing the calls. But I ask for something like a voip background mode here, because a lot of features of our telephone system requiring an instant answer on SIP level. Sometimes with delay for example, so its not possible to use PUSHKIT here. So my question is: "How can we run a VOIP App in background, so that we can receive and show an incoming call WITHOUT push notifications?"
Posted
by
Post not yet marked as solved
0 Replies
94 Views
In my VoIP application, users can start a VoIP call with Siri. In my app extension, I have a class conforming to INStartCallIntentHandling, which resolves the contacts, call destination, and call capability of the intent. When the user attempts to start a VoIP call while the device is locked, my app extension is called, and Siri launches my app, starting the VoIP call while the device is still locked. According to the documentation, adding INStartCallIntent to the IntentsRestrictedWhileProtectedDataUnavailable key of my extension's Info.plist should require the user to unlock the device before Siri launches my app and passes it the user activity. This is not working, and I haven't found any way to enforce this behavior. I downloaded Google Voice and WhatsApp, and they require the user to unlock the device when starting a VoIP call with Siri from a locked device. Is there something more I need to do? Here is my Info.plist: <key>NSExtension</key> <dict> <key>NSExtensionAttributes</key> <dict> <key>IntentsRestrictedWhileLocked</key> <array/> <key>IntentsRestrictedWhileProtectedDataUnavailable</key> <array> <string>OpenDialerTabAudioIntent</string> <string>OpenDialerTabVideoIntent</string> <string>OpenFaxTabIntent</string> <string>OpenNewsfeedTabIntent</string> <string>OpenSearchTabIntent</string> <string>INStartCallIntent</string> </array> <key>IntentsSupported</key> <array> <string>OpenDialerTabAudioIntent</string> <string>OpenDialerTabVideoIntent</string> <string>OpenFaxTabIntent</string> <string>OpenNewsfeedTabIntent</string> <string>OpenSearchTabIntent</string> <string>INStartCallIntent</string> </array> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string> </dict> I've read that WhatsApp isn't using CallKit, but I don't know if that is true. Any Help would be appreciated.
Posted
by
Post not yet marked as solved
1 Replies
119 Views
I would like to know whether the following items can be implemented with swift and whether there are any restrictions on passing the Apple side inspection. Almost all of them are DND-related, but the part I understood is written in parentheses next to the function or function, and I want to know if it is possible if that function is used. I'm a beginner in swift development, so I can't find a solution with a search, so I'm writing this. Don't ring the phone Event catch O (CallKit) when making a call or during a call Turn off all notifications except for allowed first-party apps Send a notification when the company's app is in the background (shoot API communication) O Check whether the current phone is sound, vibration, or silent O (AVAudioSession) Forced switching of sound, vibration, and silence O (AVAudioSession) Turn off SMS notifications
Posted
by
Post not yet marked as solved
0 Replies
83 Views
In my VoIP app that uses CallKit, while I'm in a connected call and report to the CXProvider a new incoming one only the CallKit UI is displayed (the screen with End&Accept, Decline and Hold&Accept). There's no sound indication whatsoever of the newly reported call. Shouldn't there be a knock sound on top of the current call's audio? Am I missing some required configuration for that? Thanks in advance.
Posted
by
Post marked as solved
2 Replies
189 Views
WWDC 2022 announced CallKit for WatchOS 9, but didn't explain how to use it. I was able to convert SpeakerBox sample from iOS to WatchOS. The CallKit itself seems works fine, but I stuck with networking issue. I cannot understand how to stream RTP audio. I have background audio enabled. If I configure audio session for CallKit with .playAndRecord category, I cannot specify .longFormAudio policy, as it's not applicable for this category. Without .longFormAudio low lever API is denied ("Path was denied by NECP policy").
Posted
by
Post not yet marked as solved
0 Replies
128 Views
Does anybody knows how to show or enable message button in CallKit screen when user receives incoming call? I tried to search multiple sources but I couldn't find any information about this topic. It never appears in my CallKit app. I can only see Remind Me button.
Posted
by
Post not yet marked as solved
0 Replies
130 Views
Hi, I've recently faced with an issue while dealing with PushKit and CallKit. Everything was working fine before adding a socket connection method to my code. I want to be connected to the socket before calling reportNewIncomingCall so I adjusted my code accordingly. Then I realized that completion block of reportNewIncomingCall is not being called. I don't understand why, any thoughts? The part of didReceiveIncomingPushWith delegate method, mentioned above: func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) { . . .             Log.addedCallInfotoAppDelegate.add("callID: \(String(describing: callID!)) callerName: \(callerName) uuID: \(String(describing: self.uuID!))")   let semaphore = DispatchSemaphore(value: 0)                 self.connectSocket { success in                     if success {                         Log.socketSuccessfullyConnected.add()                     } else {                         Log.errorWhileConnectingSocket.add()                     }                     self.update.remoteHandle = CXHandle(type: .phoneNumber, value: callerName)                     self.update.hasVideo = false                     self.update.localizedCallerName = callerName                     self.update.supportsGrouping = false                     self.update.supportsUngrouping = false                     self.update.supportsHolding = false                     self.provider.reportNewIncomingCall(with: self.uuID!, update: self.update) { error in                         Log.doneReporting.add()                         if error == nil {                             Log.didReportIncomingCall.add()                             if !stateCheck {                                 self.provider.reportCall(with: self.uuID!, endedAt: Date(), reason: .answeredElsewhere)                                 Log.reportedEndedCall.add()                                 self.uuID = nil                                 self.callID = nil                                 Log.deletedCallInfoFromAppDelegate.add()                             }                             semaphore.signal()                         } else {                             Log.errorWhileReportingIncomingCall.add(String(describing: error))                             semaphore.signal()                         }                     }         } else {             semaphore.signal()         }         semaphore.wait()         completion() }
Posted
by
Post not yet marked as solved
1 Replies
129 Views
As the title, I just want to receive a VoIP message, then do something. But it seems to be necessary to do reportNewIncomingCall in didReceiveIncomingPushWith, and it will make the call shows up. Can I cancel the call before it shows up ?
Posted
by
Post not yet marked as solved
1 Replies
164 Views
On iOS, when app is in background or killed state, and receive and pickup the incoming VoIP call. After if I tap on "Mute" button to mute the call, it gets selected for few seconds and then it gets automatically deselected on System-calling native iOS callkit dialer(UI) . There are no code written for mute/unmute part on my CXProviderDelegate or any other place in my app. So not sure what could be the reason of this behavior. Any idea?
Posted
by
Post not yet marked as solved
0 Replies
142 Views
I am using push kit and call kit to send VOIP notificatin from my server to my app. The notification's working fine, however it remains there for infinite time unless the user rejects or accepts the call. Is there any way to handle this? Like it automatically expires after 20 seconds.
Posted
by
Post not yet marked as solved
0 Replies
120 Views
I want to get a notification to my this particular iOS app when my system (iPhone) get an incoming call. Or how my app can know there is an incoming call and from which phone number it is. As True Caller App can say when I have an incoming call. I am currently using iOS 10, Xcode 8 and swift 3. Some blogs say it is possible by using callkit framework, but till now I con't find out the solution how exactly it is possible. Can any one help me to find out this solution. If some one can share code it will be more helpful.
Posted
by
Post not yet marked as solved
0 Replies
168 Views
I am doing some iPhone automation and want to observe call states of ongoing calls. I implemented a listener to read the idevicesyslog and fetch log output of com.apple.accessibility.heard, which is printing each state change similar to the following lines (stat=Sending and stat=Active): ay 13 02:14:02 heard(HearingUtilities)[11392] <Notice>: -[HUComfortSoundsController callStatusDidChange:]:415 Phone call holding 0 [pending = 1, active = 0, avc = 0, endpoint = 1] - NSConcreteNotification 0x102f173f0 {name = TUCallCenterCallStatusChangedNotification: object = <TUProxyCall 0x102f47080 p=com.apple.coretelephony aPI=(null) svc=Telephony hdl=<TUHandle 0x103407870 type=PhoneNumber, value=+4912345, normalizedValue=+4912345, isoCountryCode=de> isoCC=de stat=Sending tStat=0 dR=0 fR=0 supportsR=1 uPI=57FCA1D2-D09F-4E23-A08A-3AD4B18B570D grp=(null) lSIUUID=00000000-0000-0000-0000-000000000001 lSIAccountUUID=AA1FC9E6-068E-4D86-B3B9-C1074658AFB2 hosted=1 endpt=1 callerNFN=(null) srcID=(null) aC=(null) aM=(null) iUB=1 vm=0 connStat=00 nMICS=0 sR=0 iSA=0 iSV=0 iSS=0 wHM=0 hSI=0 vST=0 iapST=0 oapST=0 vCA=<TUVideoCallAttributes 0x102f17330 remoteCameraOrientation=0 localVideoContextSlotIdentifier=0 remoteVideoContextSlotIdentifier=0> model=<TUCallModel 0x102f3e380 hold=1 grp=1 ungrp=1 DTMF=1 uMPS=1 aC=1 sTV=0> em=0 iFE=0 sos=0 sSR=1 sSUI=0 mX=0<\M-b\M^@\M-&> May 13 02:14:14 heard(HearingUtilities)[11392] <Notice>: -[HUComfortSoundsController callStatusDidChange:]:415 Phone call holding 0 [pending = 0, active = 1, avc = 1, endpoint = 1] - NSConcreteNotification 0x10321ab80 {name = TUCallCenterCallStatusChangedNotification: object = <TUProxyCall 0x102f47080 p=com.apple.coretelephony aPI=(null) svc=Telephony hdl=<TUHandle 0x103330670 type=PhoneNumber, value=+4912345, normalizedValue=+4912345, isoCountryCode=de> isoCC=de stat=Active tStat=0 dR=0 fR=0 supportsR=1 uPI=57FCA1D2-D09F-4E23-A08A-3AD4B18B570D grp=(null) lSIUUID=00000000-0000-0000-0000-000000000001 lSIAccountUUID=AA1FC9E6-068E-4D86-B3B9-C1074658AFB2 hosted=1 endpt=1 callerNFN=(null) srcID=(null) aC=AVAudioSessionCategoryPhoneCall aM=(null) iUB=1 vm=0 connStat=11 nMICS=0 sR=0 iSA=0 iSV=0 iSS=0 wHM=0 hSI=1 vST=0 iapST=0 oapST=0 vCA=<TUVideoCallAttributes 0x102f17330 remoteCameraOrientation=0 localVideoContextSlotIdentifier=0 remoteVideoContextSlotIdentifier=0> model=<TUCallModel 0x1032596b0 hold=1 grp=1 ungrp=1 DTMF=1 uMPS=1 aC=1 sTV=1> em=0 iFE=0<\M-b\M^@\M-&> Unfortunately, starting from newer iOS versions (maybe 15.4 or 15.x already, don't know exactly), the heard service is killing itself after 3 minutes: May 13 02:28:03 heard(Accounts)[11501] <Notice>: "The connection to ACDAccountStore was invalidated." May 13 02:28:03 heard(Accounts)[11501] <Notice>: "The connection to ACDAccountStore was invalidated." May 13 02:30:21 heard(HearingUtilities)[11501] <Notice>: -[AXHeardController shutdownIfPossible]:355 heard still shouldn't be running. Shutting down. It is restarting after i am opening the settings-> accessibility settings via phone menu. Does anybody have an idea what I can do about this? I thought about following things: Include heard service / accessibility in an own app, so that it will stay online when app is active Get call states in another way? I tried an observer inside an app, but when it is running in background, it will not react anymore. Some iOS setting to enable it permanently Will this be fixed in an upcoming version? The com.apple.accessibility.heard seems to be an internal service, does anybody know how to deal with it now?
Posted
by
Post not yet marked as solved
0 Replies
109 Views
I want to get a notification to my this particular iOS app when my system (iPhone) get an incoming call. Or how my app can know there is an incoming call and from which phone number it is. As True Caller App can say when I have an incoming call. Some blogs say it is possible by using callkit framework, but till now I con't find out the solution how exactly it is possible. Can any one help me to find out this solution.
Posted
by
Post not yet marked as solved
1 Replies
161 Views
I’m looking for ideas here. Is there anyway I can access the record of which calls a user has made. I would like to figure out a way to know which numbers a user uses most. I want to be able to set a default number for each contact in my app that the user uses. Is there so way I can determine what default phone number user would normally call for a contact?
Posted
by
Post not yet marked as solved
0 Replies
125 Views
i have one doubt need to clarify , i am working on calling functionality and in locked state need to ask open locked screen before answer, to run the app , so what is the api to ask the user open locked screen before answering ?
Posted
by
Post not yet marked as solved
0 Replies
165 Views
I am working on a Siri integration for a VoIP application. I've added values for both INAlternativeAppName and INAlternativeAppNamePronunciationHint under INAlternativeAppNames in the app target's info.plist. On iOS 14, the phrase "Call [number] using [alternate app name]" launches my app and initiates a VoIP call. on iOS 15, Siri responds with "I don't see an app for that. You'll need to download one." to the same phrase. Is this functionality broken in iOS 15? Here is INAlternativeAppName in my info.plist: <key>INAlternativeAppNames</key> <array> <dict> <key>INAlternativeAppName</key> <string>dialer</string> <key>INAlternativeAppNamePronunciationHint</key> <string>dial er</string> </dict> </array>
Posted
by
Post not yet marked as solved
4 Replies
289 Views
I set the project's background mode as above. I'm using the timer with the mic on. The timer currently works in the background, but the timer is paused during a phone call. Do you want to run a timer while on a call, but there is no way? I am using timer as below. playTimer = Timer.scheduledTimer(withTimeInterval: 0.03, repeats: true, block: { [weak self] _ in       self?.sendBuffer()     })
Posted
by