Quick Reference for AI Agents & Developers
- Not code-only. iOS needs a VoIP
.p12certificate + a native PushKit/CallKit module; Android needs Firebase + a self-managedConnectionService - On iOS you must call
reportNewIncomingCallfor every VoIP push — the OS terminates an app that does not - Skipping the logout unregister leaves the next user on that device receiving the previous user’s calls
- Prerequisite → Ringing covers the foreground half
iOS VoIP Configuration
Enable VoIP Push Notifications
- In Xcode, select your target
- Go to Signing & Capabilities
- Add Push Notifications capability
- Add Background Modes capability
- Enable Voice over IP
Create VoIP Certificate
- Go to Apple Developer Portal
- Navigate to Certificates, Identifiers & Profiles
- Create a new VoIP Services Certificate
- Download and install the certificate
- Export the
.p12file for your server
Configure CometChat Dashboard
- Go to your CometChat Dashboard
- Navigate to Notifications > Push Notifications
- Upload your VoIP certificate (
.p12file) - Configure the certificate password
Implement CallKit
Create a native module to handle CallKit:Android VoIP Configuration
Add Firebase Cloud Messaging
- Add Firebase to your Android project
- Add the FCM dependency to
android/app/build.gradle:
Configure CometChat Dashboard
- Go to your CometChat Dashboard
- Navigate to Notifications > Push Notifications
- Upload your Firebase Server Key
Implement ConnectionService
Create a ConnectionService for incoming calls:Register ConnectionService
Add toAndroidManifest.xml:
Add Permissions
Register Push Token
Register the VoIP/FCM token with CometChat usingCometChatNotifications.registerPushToken. iOS VoIP is
its own platform — APNS_REACT_NATIVE_VOIP, distinct from the APNS_REACT_NATIVE_DEVICE used for ordinary
message notifications — so an app that both rings and notifies registers two tokens.
Register the token after the user logs in — a token registered with no logged-in user is attached to
nobody. Re-register when the token refreshes.
providerId is the Provider ID you configured in Dashboard → Notifications → Push Notifications
(for example APNS_PROVIDER_ID). Pass it so the token is bound to the right provider.Unregister on Logout
Release the token when the user logs out, or the next user on that device receives their calls:Handle Incoming VoIP Push
Related Documentation
- Ringing - Implement call notifications
- Background Handling - Keep calls active in background
- Setup - Initial SDK setup