Javascript React Native Twilio Programmable Voice initWithToken()和addEventListener(';deviceReady';)不工作
TwilioVoice.initWithToken()返回它已初始化,但未为设备准备好传入/传出呼叫。即使将随机令牌传递到TwilioVoice.initWithToken()中,它仍然返回true 以下是我一直使用的代码:Javascript React Native Twilio Programmable Voice initWithToken()和addEventListener(';deviceReady';)不工作,javascript,ios,reactjs,react-native,twilio,Javascript,Ios,Reactjs,React Native,Twilio,TwilioVoice.initWithToken()返回它已初始化,但未为设备准备好传入/传出呼叫。即使将随机令牌传递到TwilioVoice.initWithToken()中,它仍然返回true 以下是我一直使用的代码: import React, {Component} from 'react'; import { SafeAreaView, StyleSheet, ScrollView, View, Text, StatusBar, TouchableOpac
import React, {Component} from 'react';
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
TouchableOpacity,
} from 'react-native';
import {
Header,
LearnMoreLinks,
Colors,
DebugInstructions,
ReloadInstructions,
} from 'react-native/Libraries/NewAppScreen';
import TwilioVoice from 'react-native-twilio-programmable-voice';
export default class App extends Component {
state = {
twilioInited: false
};
getAuthToken = () => {
return fetch('serverurl', {
method: 'get',
})
.then(response => response.text())
.catch((error) => console.error(error));
}
getMicrophonePermission = () => {
const audioPermission = PermissionsAndroid.PERMISSIONS.RECORD_AUDIO;
return PermissionsAndroid.check(audioPermission).then(async result => {
if (!result) {
const granted = await PermissionsAndroid.request(audioPermission, {
title: 'Microphone Permission',
message: 'App needs access to you microphone ' + 'so you can talk with other users.',
});
}
});
}
initTwilio = async () => {
const token = await this.getAuthToken();
console.log ('Got auth token: ' + token);
if (Platform.OS === 'android') {
await this.getMicrophonePermission();
}
let success = await TwilioVoice.initWithToken(token);
console.log(isuccess);
TwilioVoice.addEventListener('deviceReady', () => {
this.setState({ twilioInited: true });
console.log('Device has been configured.');
});
TwilioVoice.addEventListener('deviceNotReady', () => {
console.log('Device not ready.');
});
if (Platform.OS === 'ios') { //required for ios
TwilioVoice.configureCallKit({
appName: 'callerid',
});
console.log('CallKit Configured');
}
};
makeCall = () => TwilioVoice.connect({ To: 'Alice' });
render() {
return (
<View style={styles.container}>
<TouchableOpacity onPress={() => this.initTwilio()}>
<View>
<Text>Init Twilio!!</Text>
</View>
</TouchableOpacity>
<TouchableOpacity disabled={!this.state.twilioInited} onPress={() => this.makeCall()}>
<View>
<Text style={styles.highlight}>Ready to recieve calls: ({this.state.twilioInited ? 'ready' : 'not ready'})</Text>
</View>
</TouchableOpacity>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
highlight:{
fontWeight:'700',
}
});
import React,{Component}来自'React';
进口{
安全区域视图,
样式表,
滚动视图,
看法
文本,
状态栏,
可触摸不透明度,
}从“反应本机”;
进口{
标题,
学习重新链接,
颜色,
调试说明,
重新加载指令,
}来自“react native/Libraries/NewAppScreen”;
从“react native twilio programmable voice”导入twilio语音;
导出默认类应用程序扩展组件{
状态={
斜纹:假
};
getAuthToken=()=>{
返回fetch('serverurl',{
方法:“get”,
})
.then(response=>response.text())
.catch((错误)=>console.error(错误));
}
getMicrophonePermission=()=>{
const audioPermission=PermissionsAndroid.PERMISSIONS.RECORD_AUDIO;
返回PermissionsAndroid.check(audioPermission)。然后(异步结果=>{
如果(!结果){
授予常数=等待许可和ROID.请求(音频许可{
标题:“麦克风权限”,
消息:“应用程序需要访问您的麦克风”+,以便您可以与其他用户通话。”,
});
}
});
}
initTwilio=async()=>{
const token=wait this.getAuthToken();
console.log('Got auth token:'+token);
如果(Platform.OS==='android'){
等待此消息。getMicrophonePermission();
}
让成功=等待TwilioVoice.initWithToken(令牌);
console.log(isuccess);
TwilioVoice.addEventListener('DeviceRady',()=>{
this.setState({twilioInited:true});
log('设备已配置');
});
TwilioVoice.addEventListener('DeviceTready',()=>{
console.log('设备未就绪');
});
如果(Platform.OS==='ios'){//ios需要
TwilioVoice.configureCallKit({
appName:“callerid”,
});
log('CallKit Configured');
}
};
makeCall=()=>twilliovoice.connect({To:'Alice'});
render(){
返回(
this.initTwilio()}>
初始斜纹!!
this.makeCall()}>
准备好接收调用:({this.state.twilioInited?'Ready':'notready'})
);
}
}
const styles=StyleSheet.create({
容器:{
弹性:1,
为内容辩护:“中心”,
对齐项目:“居中”,
背景颜色:“#F5FCFF”,
},
亮点:{
重量:'700',
}
});
遵循Twilio Quickstart存储库中指定的所有说明。
使用RN版本0.63。
使用RN Twilio可编程语音版本3.0.0
在iPhone XR上使用iOS 12.4
应用程序在前台运行
复制步骤:正常运行Hi@V.viswana您能解决这个问题吗?我得到了确切的错误hi@V.viswana你能解决这个问题吗?我得到了确切的错误