Definition

A call is considered “ended” when the communication session and CallKit lifecycle are terminated and all related resources are cleaned up.

In CallKit, ending a call is handled using:

CXEndCallAction

Core Concept

Call termination can happen because:

Regardless of the reason, CallKit models termination through:

CXEndCallAction


Basic Flow

User taps End
        ↓
CXEndCallAction created
        ↓
Transaction sent to CallKit
        ↓
System validates request
        ↓
CXProviderDelegate fires
        ↓
App cleans up call state
        ↓
action.fulfill()

Ending an Outgoing Call

Step 1 — Create Action