LiveCommunicationKit on watchOS: Displaying visual content during active call?

Our watchOS app is exploring adding audio VOIP calling capability using our in-home platform. We are using LiveCommunicationKit for this and have that all hooked up nicely in a proof of concept implementation.

Our use case is primarily based around supporting end-users through various tasks with assistance from a remotely based expert. We would like for our platform to be able to display visual content on the watch's screen during the call – in other words, we would like to be able to treat this as a video call.

LiveCommunicationKit fully supports all video-related flags on watchOS and doesn't appear to have any different symbol availability versus its iOS version. This high-quality thread (https://developer.apple.com/forums/thread/798090) from a DTS engineer suggests that our use case should be valid (i.e. whiteboarding apps) and that the system's response to an accepted income video call is to dismiss the LCK's incoming call screen and bring the target app to the foreground, allowing it to render its custom content. Unfortunately, on watchOS the system doesn't seem to treat a video call any differently from an audio call, and won't dismiss the system UI once it's answered.

We fully realize that Apple Watch doesn't have a camera for outbound video, doesn't support VideoToolbox or other low-level video convenience libraries for simplified rendering and decoding, etc. That's not what we're worried about (yet). The documentation is at best unclear about whether LCK (or CallKit, for that matter) can hand off calls flagged as video-compatible according to how we think they should, which is passing foreground UI over to the app once the call has been accepted by the user.

Can any Apple people shed some light on this? I recognize we are probably trying to do something not many people have before.

Answered by DTS Engineer in 878990022

Unfortunately, on watchOS, the system doesn't seem to treat a video call any differently from an audio call and won't dismiss the system UI once it's answered.

Basically... yes, that's what it does. watchOS VoIP support has a very narrow focus, which basically "locks" the screen into the CallUI in exactly the way you're describing. If you'd like this support to be expanded, please file a bug and post the bug number back here.

We would like for our platform to be able to display visual content on the watch's screen during the call – in other words, we would like to be able to treat this as a video call.

I believe the only way to do this at the moment is to stream the incoming video like any other video feed while using a PlayAndRecord audio session to capture audio from the user.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Accepted Answer

Unfortunately, on watchOS, the system doesn't seem to treat a video call any differently from an audio call and won't dismiss the system UI once it's answered.

Basically... yes, that's what it does. watchOS VoIP support has a very narrow focus, which basically "locks" the screen into the CallUI in exactly the way you're describing. If you'd like this support to be expanded, please file a bug and post the bug number back here.

We would like for our platform to be able to display visual content on the watch's screen during the call – in other words, we would like to be able to treat this as a video call.

I believe the only way to do this at the moment is to stream the incoming video like any other video feed while using a PlayAndRecord audio session to capture audio from the user.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Thanks for chiming in here as well as on the other thread, Kevin! I appreciate the precision and promptness.

I believe the only way to do this at the moment is to stream the incoming video like any other video feed while using a PlayAndRecord audio session to capture audio from the user.

This is exactly what we switched to trying after I posted. Hats off to the AI bots for being able to help us prototype this approach quickly. Our preliminary results indicate that we will still be able to use some LCK call signaling with this approach, which is nice since we want users to have a native-feeling experience. Once we finalize our approach here I might take you up on submitting a feedback (although tbh I think the watchOS team is getting sick of us submitting demanding Feedbacks).

LiveCommunicationKit on watchOS: Displaying visual content during active call?
 
 
Q