TwilioVoice.initWithToken () возвращает, что он был инициализирован, но не готово устройство для входящих / исходящих вызовов. Даже при передаче случайного токена в TwilioVoice.initWithToken () он все равно возвращает истину.
Вот код, который я использовал:
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',
}
});
Выполнял все инструкции, указанные в репозитории Twilio Quickstart. Использование RN версии 0.63. Использование RN-Twilio-Programmable-Voice версии 3.0.0 Использование iOS 12.4 на iPhone Приложение XR, работающее на переднем плане
Шаг для воспроизведения: Работает нормально