Delivery of expired voip notifications

Hello,

We are facing issue that sometimes a voip notification gets delivered after it is expired. The issue can be simply demonstrated we set the device to flight mode, and after 20s we disable flight mode. We still receive the voip notification.

We are setting the expiration header as following apns-expiry=0, so from my understanding it should not be delivered if the device was not able to receive the notification in the fist attempt.

I have read following thread https://developer.apple.com/forums/thread/778512, from which I understand this is a long standing issue.

Hence my question is, is there any way how we can notify the call kit that the call is actually no longer valid, and do not display the call to the user at all?

Currently we are forced to always display CallKit call when the notification comes, and some of our users are confused that they see a missed call which they did not have any chance to pick up.

Please let me know if you need any more information.

Best Regards, Adam Chlupacek

We are setting the expiration header as following apns-expiry=0, so from my understanding it should not be delivered if the device was not able to receive the notification in the first attempt.

Theoretically, yes, it does that and it certainly does better than setting a longer expiration. However...

I have read the following thread https://developer.apple.com/forums/thread/778512, from which I understand this is a long-standing issue.

Yes, it is. If you haven't already, please file a bug on this and then post the bug number back here. As part of that bug, please note how long you think a push submission should "last" after our server receives it before being discarded. For example, is 15s too long?

I'd like to get this fixed this year and additional bug reports help drive that process.

Hence my question is, is there any way we can notify the call kit that the call is actually no longer valid, and do not display the call to the user at all?

No, there is not*. You can report the call and immediately end it, but that will still result in a brief ring before the call terminates.

*One minor exception to that- if you already have an active call, you can report the new call using the same UUID of the existing call. The call will then fail with a duplicate UUID error and no other impact. This is actually our recommended flow for apps which have a call active and don't want to report a second call.

Currently we are forced to always display CallKit call when the notification comes, and some of our users are confused that they see a missed call which they did not have any chance to pick up.

Yes, I'm afraid that’s what you'll need to do.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Delivery of expired voip notifications
 
 
Q