Hi everyone, on iOS, when a VoIP call arrives and the user accepts it from the lock screen (after unlocking with Face ID/Touch ID), is there any way to automatically bring my app to the foreground and show the in-app call screen, instead of staying in the system CallKit UI?
CallKit: Can an app auto-open after answering a VoIP call on lock screen?
Hi everyone, on iOS, when a VoIP call arrives and the user accepts it from the lock screen (after unlocking with Face ID/Touch ID), is there any way to automatically bring my app to the foreground and show the in-app call screen, instead of staying in the system CallKit UI?
Your app doesn't have any direct control over the call UIs behavior; however, the default behavior for incoming video calls on the lock screen is that the system tries to authenticate the user (to unlock the device) and launches into the app if it's able to unlock. If the device can't be unlocked, then the call will be answered and stay in the lock screen UI.
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware
hi Kevin, let me clarify, my question is about audio-only VoIP calls.
Scenario:
• The app is not running (App state is not started).
• An incoming call arrives via CallKit.
• The user slides to answer on the lock screen.
Question:
- After the call is connected from the lock screen, is there any supported way for iOS to bring my app to the foreground automatically when the user later unlocks the device - without requiring the user to manually open the app or tap a notification?
If this is not supported, is there any recommended pattern (e.g., specific CallKit/PushKit APIs or entitlements) beyond using a time-sensitive local notification with a deep link?
- For audio VoIP calls, instead of "answer on lock screen and stay there"? Can we choose the "unlock → open app"?
After the call is connected from the lock screen, is there any supported way for iOS to bring my app to the foreground automatically when the user later unlocks the device - without requiring the user to manually open the app or tap a notification?
No, aside from the obvious option of making it a video call*.
*As one small clarification here, I think that, in the context of CallKit, the term "video call" should be understood as the very broad concept of "the call involves visual content the user might want to see", not just "one or more users talking into their camera". Content like virtual whiteboards, shared documents, or broadcast video can all be considered valid "video calls". Most critically, this is primarily about what the user can see, NOT what their "sending"- a video call is still a video call, even if the user’s camera isn't or even can't be turned on.
If this is not supported, is there any recommended pattern (e.g., specific CallKit/PushKit APIs or entitlements) beyond using a time-sensitive local notification with a deep link?
No. More specifically:
-
The broad behavior of iOS is that apps only enter the foreground because the user "told them to"*.
-
The notification system is basically the only way for a background app to "manually" put any kind of interface in front of the user.
...which is why you see apps using the notification system to do this. There simply isn't any other way.
*Note that CallKit's handling of video calls does NOT violate this requirement. The user has to unlock the device (that's the action) and the interface on the screen tells them what to do.
For audio VoIP calls, instead of "answer on lock screen and stay there"? Can we choose the "unlock → open app"?
No, but I'm also a bit confused by the question. More specifically, what's the scenario where:
-
The call includes visual content the user would want to look at during the call.
-
The call isn't/can't be called "a video call".
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware
hi Kevin, actually my question is all about the audio call only. So basically my concern is there anyway when user slide to answer the audio call, then they unlock phone, can we open the app to foreground? Even the app is not started yet.
So, let me start here and correct a basic misunderstanding:
Even the app is not started yet.
Fundamentally, CallKit is an interface framework, albiet a very specialized on, not a "calling" framework. In other words, the ONLY reason the user app ever sees the incoming call UI from your app is because your app told the system to show it. By definition, anytime CallKit is active, your app is running.
hi Kevin, actually my question is all about the audio call only. So basically my concern is there anyway when user slide to answer the audio call, then they unlock phone, can we open the app to foreground?
Why? Why do you want to this? The direct answer here is "no, that's not possible", however, that's basically because "video call" is the call metadata CallKit uses to determine what should happen when the user unlocks the phone.
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware