I am working on integrating Twilio Voice SDK into my React Native application, and I keep encountering the following error when trying to initialize Twilio:
'com.twilivoicereactnative.JSEventEmitter
com.twilivoicereactnative.VoiceApplicationProxy.jsEventEmitter'
on a null object reference
at com.twilivoicereactnative.JSEventEmitter
com.twilivoicereactnative.VoiceApplicationProxy.getJSEventEmitter()
getJSEventEmitter
VoiceApplicationProxy.java:100
What I Have Tried:
npm install @twilio/voice-react-native-sdk
Checked my MainApplication.kt for Kotlin
import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader
import com.twilivoicereactnative.VoiceApplicationProxy // Import Twilio Voice
class MainApplication : Application(), ReactApplication {
private val voiceApplicationProxy = VoiceApplicationProxy(this) // Twilio Voice Proxy
override val reactNativeHost: ReactNativeHost =
object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
// Add any manual packages here if necessary
}
override fun getJSMainModuleName(): String = "index"
override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
}
override val reactHost: ReactHost
get() = getDefaultReactHost(applicationContext, reactNativeHost)
override fun onCreate() {
super.onCreate()
SoLoader.init(this, OpenSourceMergedSoMapping)
// Initialize Twilio Voice SDK
voiceApplicationProxy.onCreate()
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
load()
}
}
override fun onTerminate() {
super.onTerminate()
// Terminate Twilio Voice SDK
voiceApplicationProxy.onTerminate()
}
}
Also checked MainActivity.kt
import android.content.Intent
import android.os.Bundle
import com.facebook.react.ReactActivity
import com.twilivoicereactnative.VoiceActivityProxy // Import Twilio Voice Proxy
class MainActivity : ReactActivity() {
private val voiceActivityProxy = VoiceActivityProxy(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
voiceActivityProxy.onCreate(savedInstanceState)
}
override fun onDestroy() {
super.onDestroy()
voiceActivityProxy.onDestroy()
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
voiceActivityProxy.onNewIntent(intent)
}
}
Verified Permissions in AndroidManifest.xml
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
Also Tried cleaning and rebuilding the project
cd android
./gradlew clean
cd ..
npx react-native run-android
Another thing is I tried to add in my react component:
import { StyleSheet, Text, View, TouchableOpacity, Alert } from 'react-native';
import Icon from 'react-native-vector-icons/FontAwesome';
import { TwilioVoice } from '@twilio/voice-react-native-sdk';
export default function DialScreen() {
!.... my code...!
}
Expected Behavior
I expect Twilio Voice SDK to initialize correctly and allow me to make and receive calls
I had tested on both Emulator and on Real Device.
I want to integrate voice calling into my React Native android application. I have obtained the Twilio Voice token and started configuring the voice functionality, but it is not working. Any help would be greatly appreciated.