voip-calling

Implement iOS VoIP call reception with CallKit and PushKit.

31|9|Updated Mar 10, 2023
One-click install
npx skills add https://github.com/cometchat/calls-sdk-ios --skill voip-calling
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: voip-calling
Source: https://github.com/cometchat/calls-sdk-ios/tree/main/skills/voip-calling
Command: npx skills add https://github.com/cometchat/calls-sdk-ios --skill voip-calling

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It solves the challenge of receiving and managing real-time VoIP calls on iOS when your app is in the background or terminated, while still presenting the correct system-level call UI.

Core Features & Use Cases

  • PushKit VoIP push handling: Receive VoIP push notifications, extract call metadata (like session ID and caller name), and ensure the app can react promptly.
  • CallKit system call UI: Report incoming calls to the system using CXProvider and handle user actions (answer/end) via CXCallController and CXProviderDelegate.
  • Reliable background behavior: Support required iOS background modes (voip, audio) so users can interact with calls from the lock screen and killed state.

Use case: You need incoming calls to appear as a native iOS system call even when the app isn’t running, and when the user answers, the SDK accepts the correct CometChat call session.

Quick Start

Use the voip-calling skill to implement PushKit registration in AppDelegate, then report incoming calls to CallKit and wire Answer/End actions to CometChat accept/reject calls.

Frequently Asked Questions about voip-calling

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

FAQPage Schema
How do I receive VoIP calls on iOS when the app is in the background or killed state?

To receive VoIP calls on iOS in the background or killed state, you must use PushKit for VoIP push notifications and CallKit to report the incoming call to the system, ensuring the correct background modes are enabled.

How does CallKit integration work with VoIP push payloads?

CallKit integration maps VoIP push payloads containing session identifiers and call metadata to a system-level call UI using CXProvider, reporting the incoming call and fulfilling user actions like answer or end via CXProviderDelegate.

Do I need specific background modes enabled for iOS VoIP call reception?

Yes, you need to configure the required iOS background modes, specifically voip and audio, in your Info.plist to ensure users can interact with calls from the lock screen and when the app is terminated.

What's the best way to handle CallKit answer and end actions for incoming calls?

The best way to handle CallKit answer and end actions is by implementing CXProviderDelegate to fulfill or fail CXCallController actions, wiring those user interactions directly to your CometChat accept or reject call sessions.

Why does my iOS VoIP call fail to surface the native system call UI?

Your iOS VoIP call fails to surface the system call UI if CXProvider is not properly reporting the incoming call from the PushKit payload, or if required background modes are missing from your Info.plist configuration.