You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native能否实现Twilio浏览器呼叫?WebRTC支持报错如何解决?

React Native 实现Twilio语音呼叫及报错解决

首先明确:可以在React Native中实现Twilio语音呼叫,但不能使用浏览器端的twilio-client SDK,你遇到的报错原因是twilio-client(基于twilio.js 1.3+)依赖浏览器原生的WebRTC支持,而React Native的JavaScript运行环境(JSC/Hermes)并不具备浏览器的WebRTC API及相关环境,因此触发该错误。

解决步骤(使用Twilio官方React Native语音SDK)

  1. 替换SDK
    改用Twilio专为React Native打造的语音SDK:@twilio/voice-react-native,这是官方支持的原生实现,无需依赖浏览器WebRTC。

  2. 安装依赖
    执行安装命令:

    npm install @twilio/voice-react-native --save
    # 或使用yarn
    yarn add @twilio/voice-react-native
    
  3. 原生端配置

    • iOS端:
      • 在Info.plist中添加麦克风权限声明:
        <key>NSMicrophoneUsageDescription</key>
        <string>需要使用麦克风进行语音通话</string>
        
      • 启用VoIP权限:在Xcode项目的"Signing & Capabilities"中添加"Push Notifications"和"Voice over IP"权限。
      • 配置APNs推送证书(用于接收来电通知),并在Twilio控制台关联证书。
    • Android端:
      • 在AndroidManifest.xml中添加权限:
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        
      • 配置FCM推送服务,获取服务器密钥并在Twilio控制台配置,用于接收来电推送。
  4. 核心代码实现示例

    • 初始化Voice客户端并获取令牌(令牌需由你的后端生成,逻辑和浏览器端一致):
      import { Voice } from '@twilio/voice-react-native';
      
      // 初始化客户端
      const accessToken = '你的Twilio Access Token';
      await Voice.initialize({ accessToken });
      
      // 注册推送设备令牌(接收来电用)
      const deviceToken = '从推送服务获取的设备令牌';
      await Voice.register(deviceToken);
      
    • 发起呼叫:
      const call = await Voice.connect({
        params: { To: '目标号码' }
      });
      
    • 监听来电:
      Voice.addListener('IncomingCall', (call) => {
        // 处理来电逻辑,比如显示接听界面
        call.accept(); // 接听
        // call.reject(); // 拒接
      });
      

内容的提问来源于stack exchange,提问作者ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:47:13