Issues Handling Multiple Incoming Calls in CallKit

Certainly! Here's a concise version of your forum post:


Title: Issues Handling Multiple Incoming Calls in CallKit

Body:

Hello,

I'm using CallKit and I am encountering challenges with handling multiple incoming calls.

  • Current Configuration:

    configuration.maximumCallsPerCallGroup = 5
    configuration.maximumCallGroups = 3
    

    This setup aims to allow up to 5 calls per group.

  • Observed Behavior: Despite the configuration, the system UI seems to limit the number of calls per group, often defaulting to "End & Accept" instead of "Hold & Accept" when a third call comes in.

Questions:

  1. Is there a documented system-imposed limit on the number of calls per group or total calls, even if maximumCallGroups and maximumCallsPerCallGroup are set higher?
  2. How does the system UI behave when these limits are exceeded? Are there known UI constraints or fallback behaviors?
  3. Are there best practices for handling scenarios where the system UI cannot display all calls, such as gracefully managing incoming calls or providing alternative UI solutions?

Any insights or experiences with similar configurations would be greatly appreciated.

Thank you.


Feel free to copy and paste this directly into the Apple Developer Forums. If you need further assistance or adjustments, let me know!

  1. Is there a documented system-imposed limit on the number of calls per group or total calls, even if maximumCallGroups and maximumCallsPerCallGroup are set higher?

There is not, however, you're also not really close to any limit. If you directly create a CXProviderConfiguration, you'll find that its default configuration is actually:

configuration.maximumCallsPerCallGroup = 5
configuration.maximumCallGroups = 2

...and the internal unit tests for CXProviderConfiguration itself (not the call UI) are much higher than that.

Moving to here:

Observed Behavior: Despite the configuration, the system UI seems to limit the number of calls per group, often defaulting to "End & Accept" instead of "Hold & Accept" when a third call comes in.

After playing around with this in Speakerbox, I think this is actually a quirk/bug in the call UI itself, not with CallKit's larger infrastructure. CallKit will happily let you have more than two live calls, but you need to put the "current" call on hold before you report the new call. If you haven't already, please file a bug on this, then post the bug number back here.

  1. How does the system UI behave when these limits are exceeded? Are there known UI constraints or fallback behaviors?
  2. Are there best practices for handling scenarios where the system UI cannot display all calls, such as gracefully managing incoming calls or providing alternative UI solutions?

My main suggestion here is to try it out for yourself. Speakerbox is perfect for this, since it lets you mock up and experiment with things without dealing with multiple devices/networking/etc.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Issues Handling Multiple Incoming Calls in CallKit
 
 
Q