How react-native-webrtc/react-native-callkeep works
React Native CallKeep bridges a VoIP app to iOS CallKit and Android Telecom, letting the operating system present and manage calls while call actions and audio events return to JavaScript. The main path is app API → native module → platform call framework, with events dispatched back through the bridge. README capabilities include self-managed Android calls, conferencing, PushKit incoming calls, and foreground operation. Android excerpts support service/connection dispatch details; iOS implementation and several documented branches are represented only at their documented boundary.
Main entry points: VoiceConnectionService.java Connection service · RNCallKeep.m iOS bridge · RNCallKeepModule.java Android bridge · index.js CallKeep API
Components 15
JavaScript API
- CallKeep API
index.js - Event adapters
actions.js
Android runtime
- Android bridge
android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java - Connection service
android/src/main/java/io/wazo/callkeep/VoiceConnectionService.java - Call connection
android/src/main/java/io/wazo/callkeep/VoiceConnection.java - Call conference
android/src/main/java/io/wazo/callkeep/VoiceConference.java - Headless handler
android/src/main/java/io/wazo/callkeep/RNCallKeepBackgroundMessagingService.java
iOS runtime
- iOS bridge
ios/RNCallKeep/RNCallKeep.m - CallKit interface
ios/RNCallKeep/RNCallKeep.h
Call integrations
- Android Telecom
- Apple CallKit
- PushKit provider
- Native audio session
- Phone account settings
Other components
- VoIP application
Connections 19
- VoIP application → CallKeep API: calls
- CallKeep API → Android bridge: invokes native
- CallKeep API → iOS bridge: invokes native
- CallKeep API → Event adapters: registers listeners
- Android bridge → Connection service: configures calls
- Android Telecom → Connection service: requests connections
- Connection service → Call connection: creates connection
- Connection service → Call conference: creates conference
- Call connection → Connection service: broadcasts actions
- Connection service → Android bridge: dispatches events
- Android bridge → Event adapters: emits events
- Connection service → Headless handler: starts headless task
- Android bridge → Phone account settings: opens settings
- iOS bridge → Apple CallKit: controls calls
- CallKit interface → iOS bridge: declares interface
- Apple CallKit → iOS bridge: delivers call actions
- iOS bridge → Event adapters: emits events
- PushKit provider → iOS bridge: reports incoming call
- Apple CallKit → Native audio session: activates audio