watchOS VoIP App: Incoming Calls?

Hello!

I’m building a VoIP app for iPhone and Apple Watch using PushKit and CallKit.

I’m trying to understand the recommended watchOS architecture for this kind of setup. What we would like is for the watch to behave as an endpoint for incoming calls, so that when a call comes in the user can answer on either the iPhone or the watch.

My understanding is that VoIP notifications are not supported on watchOS, so for incoming calls what we ended up having to do was send the watch a regular APNs alert notification and only start the actual call setup after the user interacts with it.

This isn’t ideal, and the notification often appears a few seconds late. What we would like to be able to do is present the incoming call on the watch more like how FaceTime calls appear on Apple Watch.

So I wanted to ask whether this is the intended pattern for a companion watchOS VoIP app. Is using a regular APNs alert notification the correct way to surface an incoming call on the watch, or is there a better supported approach?

Thanks!

Answered by DTS Engineer in 884467022

My understanding is that VoIP notifications are not supported on watchOS.

That's incorrect. VoIP notification support was added in watchOS 9 at the same time CallKit support was introduced. Our Speakerbox sample project actually includes a watchOS target, including PushKit support.

Having said that, I did want to clarify something on this point:

the notification often appears a few seconds late.

Many developers assume/believe that VoIP pushes are faster and/or more reliable than standard pushes, but that assumption is largely false. More specifically, a high priority alert push has EXACTLY the same delivery behavior as a VoIP push— basically "deliver this push at the first possible chance". You can actually see this in "Sending End-to-End Encrypted VoIP Calls" architecture, which doesn't use VoIP pushes at all.

The kind of delay you're seeing is typically caused by the combination of:

  • Using lower priority standard push.

  • Delays in notification processing and presentation.

  • The devices being in significantly different network configurations.

...not any difference between standard and VoIP pushes.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Thank you for your post, I was very interested on your post as you are using a regular APNs alert notification for a VoIP calls I’m sure it does introduces delays and requires the user to tap a notification before the app can even begin setting up the call or you sending those notifications with the voice?

Since watchOS 9, I believe that CallKit and PushKit support directly for Apple Watch. You can now build an experience that perfectly mimics native FaceTime or Phone calls, where the watch rings immediately with a full-screen incoming call UI.

I believe your post talked about callkit. I’m more interested in how are you using that framework.

https://developer.apple.com/documentation/callkit/voip-calling-with-callkit

There is a WWDC 2016 talking about that platform https://developer.apple.com/videos/play/wwdc2016/230/

There are many watchOS experts here, so if you get into any troubles using that framework, they'll be able to help you better.

Albert
  Worldwide Developer Relations.

My understanding is that VoIP notifications are not supported on watchOS.

That's incorrect. VoIP notification support was added in watchOS 9 at the same time CallKit support was introduced. Our Speakerbox sample project actually includes a watchOS target, including PushKit support.

Having said that, I did want to clarify something on this point:

the notification often appears a few seconds late.

Many developers assume/believe that VoIP pushes are faster and/or more reliable than standard pushes, but that assumption is largely false. More specifically, a high priority alert push has EXACTLY the same delivery behavior as a VoIP push— basically "deliver this push at the first possible chance". You can actually see this in "Sending End-to-End Encrypted VoIP Calls" architecture, which doesn't use VoIP pushes at all.

The kind of delay you're seeing is typically caused by the combination of:

  • Using lower priority standard push.

  • Delays in notification processing and presentation.

  • The devices being in significantly different network configurations.

...not any difference between standard and VoIP pushes.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

watchOS VoIP App: Incoming Calls?
 
 
Q