callkit

Implement native iOS VoIP call handling with CallKit and PushKit.

Updated May 10, 2026
One-click install
npx skills add https://github.com/FelixRauch/medat-figuren --skill callkit-felixrauch
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: callkit
Source: https://github.com/FelixRauch/medat-figuren/tree/main/.agents/skills/callkit
Command: npx skills add https://github.com/FelixRauch/medat-figuren --skill callkit-felixrauch

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Build reliable VoIP calling flows on iOS that integrate with the native call UI using CallKit and PushKit, so incoming/outgoing calls appear and behave correctly instead of failing or ending unexpectedly.

Core Features & Use Cases

  • Incoming call handling (PushKit → CallKit): Report VoIP pushes as incoming calls and ensure the call is reported before the PushKit completion handler returns to avoid termination.
  • Outgoing call handling (CallKit → your networking/audio): Use CXCallController and CXProviderDelegate to request and respond to call actions.
  • Audio session coordination: Configure and start/stop audio only when CallKit activates/deactivates the audio session to prevent silence or forced deactivation.
  • Call Directory extension (caller ID/blocking): Provide identified caller labels and block lists via a CXCallDirectoryProvider and reload the extension after data changes.
  • Use case: Implement a VoIP app where users can receive calls with the standard iOS call screen, manage hold/mute/answer/end events, and optionally control caller ID and blocking.

Quick Start

Ask the AI to "Set up CallKit + PushKit for incoming and outgoing VoIP calls on iOS 26+ using CXProvider, CXCallController, and PKPushRegistry, including correct audio session handling and a Call Directory extension."

Frequently Asked Questions about callkit

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I report VoIP pushes as incoming calls using CallKit and PushKit?

To report VoIP pushes as incoming calls, you must call reportNewIncomingCall on your CXProvider before the PushKit completion handler returns, ensuring iOS displays the native call UI and avoids app termination.

Why does my iOS VoIP app have no audio during a CallKit call?

iOS VoIP calls have no audio if AVAudioSession is configured prematurely; you must activate audio only after the CXProviderDelegate didActivate callback fires to prevent silence or forced deactivation.

How do I set up a Call Directory extension for caller ID and blocking on iOS?

Set up a Call Directory extension using CXCallDirectoryProvider to supply identified caller labels and block lists, then reload the extension after data changes to apply updates.

How do I handle outgoing VoIP call actions with CallKit?

Handle outgoing VoIP call actions using CXCallController to request actions and CXProviderDelegate to respond, bridging CallKit requests to your networking and audio layers.

Can I use CallKit to manage hold, mute, answer, and end events for VoIP calls?

Yes, CallKit manages hold, mute, answer, and end events by requiring correct CXProviderDelegate action fulfillment so your app responds properly to standard iOS call screen interactions.

Do I need a persistent CXProvider for iOS VoIP call handling?

Yes, a persistent CXProvider is required for reliable iOS VoIP call handling, serving as the central interface for reporting incoming calls and coordinating audio lifecycle and actions.