React-Native-Twilio-Programmable-Voice initWithToken () и addEventListener ('deviceReady') не работают - PullRequest
1 голос
/ 14 июля 2020

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, работающее на переднем плане

Шаг для воспроизведения: Работает нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...