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."