@zyratalk1/zyra-twilio-wrapper
v1.3.0
Published
React Native VOIP SDK bridge wrapper for Android and iOS
Maintainers
Readme
React Native VOIP SDK
React Native VOIP SDK architecture with:
- JS public API layer
- RN bridge layer
- Twilio native Voice SDK adapter for Android and iOS
- Core auth/call/conference/retry/config modules
Technical Design
react-native-voip-sdk-design.mdreact-native-voip-sdk-design.docxreact-native-voip-sdk-design.pdf
Consumer Initialization
Consumer app must provide sdkToken.accessToken is optional at constructor time and can be supplied later in authenticate.
const sdk = new ZyraTwilioWrapper({
serverUrl: "https://your-backend.com",
identity: "user_123",
sdkToken: "YOUR_SDK_TOKEN",
// optional:
// accessToken: "TWILIO_ACCESS_TOKEN",
});
// Optional: provide access token during authenticate
await sdk.authenticate({ accessToken: "TWILIO_ACCESS_TOKEN" });Android App Setup (Consumer App)
Update MainActivity.kt with VoiceActivityProxy hooks:
private val activityProxy = VoiceActivityProxy(this) { permission -> /* optional UX */ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityProxy.onCreate(savedInstanceState)
}
override fun onStart() { super.onStart(); activityProxy.onStart() }
override fun onStop() { activityProxy.onStop(); super.onStop() }
override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent); activityProxy.onNewIntent(intent) }
override fun onDestroy() { activityProxy.onDestroy(); super.onDestroy() }Update MainApplication.kt with VoiceApplicationProxy hooks:
private val voiceApplicationProxy = VoiceApplicationProxy(this)
override fun onCreate() {
super.onCreate()
voiceApplicationProxy.onCreate()
}
override fun onTerminate() {
voiceApplicationProxy.onTerminate()
super.onTerminate()
}iOS App Setup (Consumer App)
Enable the following Xcode capabilities for the app target:
- Background Modes:
- Audio, AirPlay, and Picture in Picture
- Voice over IP
- Push Notifications
Use physical iOS devices for end-to-end call testing.
