I am creating a voip app, I am trying to use call kit to answer calls, however audio doesn't seem to work when using callKit when looking at the systems logs I see
no server connection when checking background audio state, won't allow background audio!
background audio processAllowed = 0 for displayID com.apple.TelephonyUtilities
no server connection when checking background audio state, won't allow background audio!
background audio processAllowed = 0 for displayID {my app id}
I have the plist entries for background ui modes for voip, audio, fetch and background notifications along with the backgrounds modes for Voip, Audio, AirPlay, and Picture in Picture, Background notifications. I am unsure what to do about this, like my reading of the error is I can't use audio cause I am not connected to a server, but like is it any server, Am I suppose to connect to the voip call before setting up audio, I am not sure how to do that.
CallKit
RSS for tagDisplay 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
150 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
When using CallKit in my flutter app audio(both mic and speaker) stop working. When not using call kit to answer calls the app work fine. I am using the flutter flutter_callkit_incoming to use callkit and flutter_webrtc for the telephony. Flutter_callkit_incoming has some boilerplate code code include sections to uncomment when using webrtc and I have seen multiple fixes to suggest to make sure the to configure sharedAudioSession before the callkit is sent. Neither of this approaches seemed to have worked.
The App has the ability to use WebKit and display web pages and the ability to add phone numbers to CallDirectory at specific timing.
In this App, when the App is launched or when the Add Contact button on the web page is pressed,
CallDirectoryExtention is reloaded from the host app (WebKit-viewController), the phone number is retrieved from the server, and the entry is updated.
I would like to add a process to remove the already added phone number entry when a specific value is retrieved from the application server.
The specific process we wish to implement is as follows.
Step 1: Use URLsession to retrieve values from the application server. (ViewController)
Step 2: If the value is a specific value, call a Function that deletes the CallDirectoryExtention entry. (ViewController)
Step 3: Delete all entries for the registered phone numbers.
However, I am aware that I have to use reloadExtension() to call the CallDirectoryExtention process from ViewController on Step2.
if I do so, CallDirectoryHandler.beginRequest() will be processed, and I am wondering if it is not possible to execute only the Function that deletes the entry.
Is there a way to run only the Function that deletes the CallDirectoryExtention entry from the host app(viewController)?
Hi everyone,
I am developing a VoIP calling feature in my Flutter app, using:
Agora RTC Engine for real-time calls.
CallKit & PushKit (VoIP notifications) for iOS call handling.
Firebase Cloud Messaging (FCM) for notifications.
Problem: CallKit UI Stays on Screen When Caller Hangs Up (Background/Terminated)
I am using Firebase notifications to notify the receiver that the call should be dismissed, but it doesn’t work in the following cases:
App is in the background – CallKit UI remains stuck even after receiving the Firebase notification.
App is terminated – The Firebase notification does not trigger any background execution, so CallKit UI stays forever.
Current Implementation
I send an FCM notification to inform the receiver to dismiss CallKit UI.
When received in the foreground, it works fine (callEnded method is triggered).
But in background or terminated state, the notification is not received or doesn’t execute the code.
I am developing an app where the primary feature is to notify users.
To deliver notifications more effectively, I am considering using PushKit and CallKit.
Would it be acceptable under the guidelines to use PushKit and CallKit as an optional feature for an AI agent to notify users via a phone call?
Is there any way to limit use of the iOS 18 Live Caller ID extension to subscribed users? My team has been trying to figure out a workable approach to only allow full call blocking / identification via this feature for users with an active subscription and so far we have not found a workable approach.
One solution we’ve looked into is invalidating access tokens on the backend and only calling refreshPIRParameters(forExtensionWithIdentifier:) for users with a current valid subscription but it seems that this won’t work since the device will attempt to refresh on its own eventually.
We’ve also looked into swapping out the userTierToken in the extension based on subscription status but this also does not seem to be possible.
Is limiting/modifying this feature's functionality based on subscription status just not possible, likely by design due to the privacy-focused nature of it, or is there some other approach we’re overlooking?
Prior to iOS18, the incoming/outgoing call history display in the Phone app matched the CallDirectory content, but starting with iOS18, changing the information tied to the same number results in the incoming/outgoing call history not matching the CallDirectory content, as it remains unchanged before the change. Is this a strongly intended change? If not, we would like to have it reverted back to the way it worked before iOS18.
Befor iOS18
Register the target phone number and name1 to CallRirectory
Incoming call using the target phone number
The target phone number and name1 is recorded as an incoming call history
Register the target phone number and name2 to CallRirectory
Incoming call using the target phone number again
The target phone number and name2 is recorded as an incoming call history
Also 1st incoming call history’s name is changed to name2
After iOS18
Register the target phone number and name1 to CallRirectory
Incoming call using the target phone number
The target phone number and name1 is recorded as an incoming call history
Register the target phone number and name2 to CallRirectory
Incoming call using the target phone number again
The target phone number and name2 is recorded as an incoming call history
But 1st incoming call history’s name is still name1
Why does this difference occur?
Will the restrictions on callkit be lifted in China in 2025? If so, how can you legally use callkit in China?
I experimented a lot with Live Caller ID when it first appeared with iOS 18 Beta.
Now I'm starting to pick it up again and have immediately noticed some detrimental differences between the behavior observed when it was in beta status to how it currently behaves with iOS 18.3.
The main difference is caching - if a call is made and data from a live call id lookup displayed on the call screen, then if the call is made again immediately then that data is re-fetched from the server.
And it takes a long time too, about 5 or 6 seconds before the data is displayed in the call screen (with the beta it took about 3 seconds).
In the data set cache_expiry_minutes is set to 50, yet it's not being honored, there's no caching occurring at all. Yet this did used to occur several months ago when the feature was in beta.
What's happened to caching, why is it no longer working when it used to?
Another change is there used to be a notification displayed when a call was blocked, this no longer is displayed.
Is this an intentional change or a bug?
The app I'm making uses the CallDirectory extension to identify callers.
Where is the contact data added by "func addIdentificationEntry" in "CallDirectory Extension" stored?
The app calls "CXCallDirectoryManager.sharedInstance.reloadExtension" and adds contact data by processing "CXCallDirectoryExtensionContext.addIdentificationEntry" written in "func beginRequest" of "CallDirectory Extension".
I thought that if I uninstalled the app, I would lose the contact data that added by App.
However, when I uninstalled the app and reinstalled it, it seemed to retain contact data that added by App before I uninstalled the app,
even though the app hasn't added any contact data yet.
Will the contact data added to the "CallDirectory Extension" be retained on iPhone even after uninstalling the app?
---Note---
I found a similar post on the forum about contact data added by addIdentificationEntry.
・CallKit - addIdentificationEntry is it secure?
[https://developer.apple.com/forums/thread/662182]
Answer of this post that "the added data is cached in a SQLite database",
but I couldn't find any official Apple documentation on this, so I'm not sure if this is correct.
If contact data is cached in SQLite, will that data remain on the iPhone when uninstalled and not deleted?
●Development environment
Mac OS Sonoma 14.7.1
Xcode 16.0
Swift
●Test Device
iPhoneSE3
iOS:17.6.1