Post not yet marked as solved
If the device is locked the provider callback for - (void)provider:(CXProvider *)provider didActivateAudioSession:(AVAudioSession *)audioSession is never called when trying to answer a call using CallKit (bug 28549610). This happens when the app state is backgrounded or force closed. However, if the device is not locked CallKit works perfectly in both app states. I've also noticed that any attempts to answer incoming calls after the initial "failure" (failure is in quotes because there are no errors given to my application) will succeed. To rule out exceptions, back audio unit/session management and anything my code may be doing wrong, I've disabled all my business logic and have still reproduced the issue.Has anyone run into similar issues?
Post not yet marked as solved
We received the following message after an app rejection asking us to remove callkit integration due to some ruling on China."From Apple 5. Legal: PreambleGuideline 5.0 - LegalRecently, the Chinese Ministry of Industry and Information Technology (MIIT) requested that CallKit functionality be deactivated in all apps available on the China App Store. During our review, we found that your app currently includes CallKit functionality and has China listed as an available territory in iTunes Connect. Next Steps This app cannot be approved with CallKit functionality active in China. Please make the appropriate changes and resubmit this app for review. If you have already ensured that CallKit functionality is not active in China, you may reply to this message in Resolution Center to confirm. Voice over Internet Protocol (VoIP) call functionality continues to be allowed but can no longer take advantage of CallKit’s intuitive look and feel. CallKit can continue to be used in apps outside of China."The app is currently deployed to multiple countries including China.Removing China from deployed app store or totally removing Callkit is currently out of the option. We are currently apprehensive on the proper implementation on how to disable the feature specifically just for the Chinese region without violating yet another guideline. Does anybody have the same problem or knows an acceptable approach for this?
Post not yet marked as solved
We have a iOS app in which we have integrated video calling using WebRTC sdk. Now we would like to use the Call Kit https://developer.apple.com/documentation/callkitin the app to display the call UI. When i am chekcing in docuemntation of the call kit it says that it can be used for voip app. Therefore we would like to know if as per the apple developer guidelines is it allowed to use the call kit features in a app providing voice and video calling using webrtc.
Post not yet marked as solved
Hi there,
The Call Directory Extension in Settings wasn't localized since iOS 13, and getting even worse in iOS 14 beta.
In iOS 13, though not localized, the custom extension name was display as expected. In iOS 14, it showed only the bundle name which made no sense to general users.
This is important to us to introduce our app to foreign countries. I also fired a feedback in Feedback Assistance but don't know when it will get fixed, so just raise the attention here.
Post not yet marked as solved
Good evening everyone!
After using CarPlay, my Apple Watch (5) no longer rings when someone calls.
My iPhone 📱 11 Pro Max rings normally.
Other devices (iPad and MacBook) do not ring either.
After a restart, it works again on all devices or, alternatively, when I manually disconnect CarPlay.
I use Wireless CarPlay.
Does anyone else have the problem?
Post not yet marked as solved
Hello,
I developer voip functionality for my clients app.
It uses googles WebRTC sdk + callkit.
The problem is when I put app into background (.voice and .voip modes enabled in pList) while on call I get red Recording status bar. My clients would like it to be Green like WhatsApp, Skype and native calls app.
I can not find any documentation how it is done. All I found is some comments that say Red Recording bar is because I'm running AVAudioSession on .playAndRecord category ( .voiceChat mode) in background.
Can anyone instruct me/point me to documentation/example on how can I enter In-Call background state with green status bar?
Sincerely,
Martynas
Post not yet marked as solved
Hi ,
I have a problem with observing call status in iPadOS 14.
callObserver:callChanged:
method not invoked when I initiate a cellular call from iPad ( using url as tel://). But same code working fine in iPhone - iOS 14.
My Code ,
import UIKit
import CallKit
class ViewController: UIViewController, CXCallObserverDelegate {
private lazy var callObserver = CXCallObserver()
override func viewDidLoad() {
super.viewDidLoad()
configureCallButton()
view.backgroundColor = .gray
self.callObserver.setDelegate(self, queue: nil)
// Do any additional setup after loading the view.
}
func configureCallButton() {
let button = UIButton(type: .system)
button.setTitle("Call", for: .normal)
let attStr = NSMutableAttributedString(string: "Call", attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 25), NSAttributedString.Key.foregroundColor: UIColor.blue]);
button.setAttributedTitle(attStr, for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(button)
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
button.addTarget(self, action: #selector(initiateCall), for: .touchUpInside)
}
@objc func initiateCall() {
if let url = URL(string: "tel://*********") {
UIApplication.shared.openURL(url)
}
}
func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
if call.isOutgoing {
print("Call outgoing")
}
else if call.hasConnected {
print("Call has connected")
}
else if call.hasEnded {
print("Call has ended")
}
}
}
Note: Observer method invoked for FaceTime calls in iPadOS 14.( using url as facetime:// )
Post not yet marked as solved
Hi
I have a peer to peer VoIP application supposed to work without Internet access. Everything works fine except incoming calls reception while in background. I know that the recommended approach for VoIP applications is to use push notifications, but this is not an option for this application. Are there other options to receive incoming calls while in background ?
thank you
Bogdan
Post not yet marked as solved
In iOS15 beta3 I get an incoming call. The text that I send as the caller is
Brad Smith (PBX:142}
When the incoming call screen appears it shows
142}
as the caller
If I look at the recent calls in the native phone App it shows it correctly as
Brad Smith (PBX:142}
I setup the caller CXHandle as follows...
locHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:numToCall];
Note 1: Everything works fine on iOS14
Note 2: Just for info... I use this format for special internal calls so as when return a recent call from the Native phone App then it can figure out the number to dial by searching for {PBX: and using the digits after it.
Post not yet marked as solved
From iOS 14.3, WKWebView has full support for WebRTC. I was able to get the voice call to work. Unfortunately, I ran into a blocking issue when integrating CallKit. Basically CallKit breaks getUserMedia JavaScript call. I believe it's because CallKit gives the calling process exclusive access to the microphone, but WKWebView renderer runs in a separate process. Is there a solution to this problem?
The reason I'm implementing the feature on top of webview instead of native WebRTC SDK is due to the size of the SDK. It adds 10M to the app size and our app is already too big.
Post not yet marked as solved
I took delivery of my first M1 Mac (iMac running Big Sur 11.4) and with great anticipation installed my iOS VoIP App from the AppStore.
I was greatly disappointed to see that
There were no VoIP Pushes to start an incoming call
Callkit does not seem to work so I get no Audio.
Am I missing something? Is there some permissions or configuration I might need to set?
Or is it just that Callkit and Pushkit don't work even though it states on developer.apple.com that they are supported on macOS 10.15+
Any advice or guidance greatly appreciated.
Very disappointed :-(
Post not yet marked as solved
I am working on an iOS app that uses push notifications to wake up the app so I can receive SIP calls when app is not in foreground. When all is working, app gets a VOIP push notification while in background which wakes up the app and within 5 seconds I get a SIP invite to process the call. We are using a timer for 5 seconds to wait for SIP after getting VOIP push. The issue I am having is after a certain period of running sip calls test, app stopped receiving SIP invites if it is in background. This happened on our multiple test devices. Restarting the app and rebooting the device didn’t help but uninstalling & installing the same version of app did the trick.
What could be the reasons behind this and how can we fix this?
Have anyone else experienced the similar thing? Any suggestions .
TIA.
Post not yet marked as solved
How to enable the message options on Callkit? Currently, I only see settings for Remind me.
Thank you
Post not yet marked as solved
Later than ios 14.5 Callkit Video call. Timing is not displayed。The audio is normal
Post not yet marked as solved
I want to connect to my own Asterisk server. I'm using CallKit. Is this possible with CallKit? Or if you know another way, please let me know
Post not yet marked as solved
According the the documentation CallKit in the Topic Receiving incoming call it mentions about identifying call and caller and passing that information to a corresponding method.
I tried the same but am not able to get the caller details. Is there any definitive solution for the getting the caller information.
Post not yet marked as solved
Hi! I am looking for a UIAccessibility or other API to indicate if the Auto-Answer Calls accessibility feature is enabled. Does such an API exist?
Post not yet marked as solved
I am a fresher in the IOS app. I have some questions. Can CallKit support connect the SIP server and handle VoIP? Is another library CallKit needed to solve the above case?
Many thanks.
Post not yet marked as solved
Hey,
I would like to ask when we should call completion handler for didReceiveIncomingPushWithPayload delegate method if we have some async code fired inside.
Let's have following examples:
(completion called already in same runloop cycle)
private let provider: CXProvider
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
/// code to get call info
provider.reportNewIncomingCall(with: uuid, update: update) { error in
/// some code here
}
completion()
}
(completion called at "future" when we "finish" handling voip notification, potentially future runloop cycle)
private let provider: CXProvider
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
/// code to get call info
provider.reportNewIncomingCall(with: uuid, update: update) { error in
/// some code here
completion()
}
}
(error cases in both examples were omitted but i'm aware I should handle them too)
Which one is more correct?
Post not yet marked as solved
What method is called when call is blocked by call directory extension. And is there any way to call a completion handler after a call has been blocked.