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

如何在Flutter应用中添加类似Swiggy/Uber的VoIP通话功能?

在Flutter应用中实现VoIP拨打手机号的方案

要实现类似Swiggy、Uber的应用内VoIP拨打手机号功能,核心是借助支持PSTN(公共交换电话网络)落地的VoIP SDK,以下是具体实现路径:

一、选择适配的VoIP SDK

市面上成熟的SDK均可支持该场景,推荐几个常用选项:

  • Agora:跨平台支持完善,PSTN功能需开通对应付费服务,可直接通过SDK发起呼叫至手机号
  • Twilio Programmable Voice:通过中转号码实现应用到手机号的呼叫,需要后台配合创建呼叫资源
  • Sinch:提供开箱即用的PSTN呼叫能力,集成步骤相对简洁

二、Flutter项目集成流程(以Agora为例)

  1. 添加依赖到pubspec.yaml:

    dependencies:
      agora_rtc_engine: ^6.2.0 # 替换为最新版本
    

    执行flutter pub get完成依赖安装

  2. 配置平台权限:

    • Android:在AndroidManifest.xml中添加权限
      <uses-permission android:name="android.permission.RECORD_AUDIO" />
      <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
      <uses-permission android:name="android.permission.INTERNET" />
      
    • iOS:在Info.plist中添加麦克风权限描述
      <key>NSMicrophoneUsageDescription</key>
      <string>需要访问麦克风进行语音通话</string>
      
  3. 实现核心呼叫逻辑:

    • 初始化SDK(需从Agora控制台获取APP ID):
      import 'package:agora_rtc_engine/agora_rtc_engine.dart';
      
      Future<void> initAgora() async {
        await AgoraRtcEngine.create(const AgoraRtcEngineConfig(appId: 'YOUR_APP_ID'));
        await AgoraRtcEngine.enableAudio();
      }
      
    • 发起PSTN呼叫(需后台生成的token,避免客户端暴露密钥):
      void makePstnCall(String phoneNumber) async {
        try {
          await AgoraRtcEngine.startCall(
            CallIdType.uuid,
            callee: phoneNumber,
            token: 'YOUR_BACKEND_GENERATED_TOKEN',
          );
        } catch (e) {
          // 处理呼叫失败逻辑
        }
      }
      
    • 监听呼叫状态:
      AgoraRtcEngine.registerEventHandler(
        RtcEngineEventHandler(
          onCallStateChanged: (String callId, int state, int reason) {
            // 根据state更新UI:呼叫中、已接通、已挂断等
          },
        ),
      );
      

三、关键后台配合

所有支持PSTN的VoIP SDK都要求后台生成授权token或创建呼叫资源,原因是:

  • 避免客户端暴露API密钥、APP密钥等敏感信息
  • 部分SDK(如Twilio)需要后台调用其REST API创建Call资源,再由客户端发起呼叫

四、注意事项

  • 合规要求:国内开展通讯业务需具备相应电信资质,若面向海外市场需遵循当地通讯法规
  • 成本控制:PSTN呼叫为按分钟计费模式,需提前了解SDK的定价策略
  • 用户体验:测试弱网、切换网络场景下的通话稳定性,确保权限申请流程友好
  • 隐私保护:遵循隐私法规,明确告知用户通话数据的处理方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:24