← ClaudeAtlas

callkitlisted

Implement VoIP calling with CallKit and PushKit. Use when building incoming/outgoing call flows, registering for VoIP push notifications, configuring CXProvider and CXCallController, handling call actions, coordinating audio sessions, or creating Call Directory extensions for caller ID and call blocking.
dpearson2699/swift-ios-skills · ★ 730 · AI & Automation · score 80
Install: claude install-skill dpearson2699/swift-ios-skills
# CallKit Build VoIP calling features that integrate with the native iOS call UI using CallKit and PushKit. Covers incoming/outgoing call flows, VoIP push registration, audio session coordination, and call directory extensions. Targets Swift 6.3 / iOS 26+. ## Contents - [Setup](#setup) - [Provider Configuration](#provider-configuration) - [Incoming Call Flow](#incoming-call-flow) - [Outgoing Call Flow](#outgoing-call-flow) - [PushKit VoIP Registration](#pushkit-voip-registration) - [Audio Session Coordination](#audio-session-coordination) - [Call Directory Extension](#call-directory-extension) - [Common Mistakes](#common-mistakes) - [Review Checklist](#review-checklist) - [References](#references) ## Setup ### Project Configuration 1. Enable the **Voice over IP** background mode in Signing & Capabilities 2. Add the **Push Notifications** capability 3. For call directory extensions, add a **Call Directory Extension** target ### Key Types | Type | Role | |---|---| | `CXProvider` | Reports calls to the system, receives call actions | | `CXCallController` | Requests call actions (start, end, hold, mute) | | `CXCallUpdate` | Describes call metadata (caller name, video, handle) | | `CXProviderDelegate` | Handles system call actions and audio session events | | `PKPushRegistry` | Registers for and receives VoIP push notifications | ## Provider Configuration Create a single `CXProvider` at app launch and keep it alive for the app lifetime. Configure it with a `CXProviderCon