Clarification on Allowed Uses of VoIP Push Notifications for Ending/Updating CallKit State

Hello,

I’m implementing VoIP calling in an iOS application using PushKit (VoIP pushes) together with CallKit.

The standard call flow works correctly:

Happy scenario

  1. User A initiates a call.
  2. Server sends a VoIP push to User B.
  3. User B’s device receives the push and reports the incoming call using CallKit.
  4. User B answers the call.

However, I would like clarification about non-happy scenarios and when it is acceptable to use VoIP pushes to update or stop a CallKit ringing state.

Apple documentation warns that VoIP pushes must be used only when they result in a call-related action, so I want to ensure the following cases are compliant.

Scenario A — Caller Cancels Before Answer

  1. User A calls User B.
  2. Server sends a VoIP push to User B.
  3. User B’s device starts ringing via CallKit.
  4. Before User B answers, User A cancels the call.

Question:

Is it acceptable to send another VoIP push to User B indicating that the call has been cancelled so the device can:

    1. stop the CallKit ringing UI
    1. end the call
    1. optionally mark it as missed or cancelled

Or should this state change be handled using a regular remote push or another signaling mechanism instead of VoIP push?

Scenario B — Callee Rejects the Call

User B rejects the call from CallKit.

The server must inform User A that the call was rejected.

Question: Is it acceptable to send a VoIP push to User A to update the CallKit state and terminate the outgoing call UI?

Scenario C — Multiple Devices per User

User B may be logged in on multiple devices. User A calls User B. VoIP push is sent to all devices of User B. One device answers.

Question:

Is it acceptable to send a VoIP push to the remaining devices instructing them to:

  • stop ringing
  • end the CallKit incoming call UI
  • Or is there a recommended alternative pattern for this case?

Main Question

Aside from the initial incoming call VoIP push, in which situations is it considered acceptable to send additional VoIP pushes to terminate or update CallKit state (cancelled, rejected, answered on another device)?

The goal is to remain compliant with PushKit policies, particularly the guidance that VoIP pushes should only be used when they result in a call-related user action.

Any guidance on the recommended architecture for these cases would be greatly appreciated.

Thank you.

Clarification on Allowed Uses of VoIP Push Notifications for Ending/Updating CallKit State
 
 
Q