performEndCallAction response to reportCallWithUUID can be slow

We are currently developing a VoIP application that supports Local Push extention.

We discovered an issue with this app where the performEndCallAction response to reportCallWithUUID is occasionally slow.(See below for detail)

It usually works without any issues, so we believe there is no problem with the app's processing flow.

This issue only occurs very rarely, but each time it does there is a delay of about 60 seconds, which leads us to suspect that there is some kind of problem on the iOS side, and that fail-safe processing is occurring after 60 seconds.

Do you know of a workaround for this issue?

This issue only occurs very rarely, but each time it does there is a delay of about 60 seconds, which leads us to suspect that there is some kind of problem on the iOS side, and that fail-safe processing is occurring after 60 seconds.

Are you calling "endedAt" immediately after reporting the call? The structure of the call reporting system is somewhat race condition prone and, in theory, if your reporting and ending calls very rapidly, it's possible you might be able to reenter endedAt in callservicesd before it's finished "making" the call. If that happens, I think your endedAt would basically be ignored and the call would end after ~60s (which is the ringing timeout).

Do you know of a workaround for this issue?

I can think of two things I'd try:

  • When ending newly reported calls, wait until reportingNewIncomingCall completes (or later) before ending the call. Keep in mind that the minimum ring time means that your call will always ring, so the timing of endedAt won't actually change how the interface behaves.

  • Consider using CXEndCallAction instead of endedAt. Note that Speakerbox never calls endedAt, so the function is not essential to CallKit.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

performEndCallAction response to reportCallWithUUID can be slow
 
 
Q