如需快速实现语音通话功能,您可以直接基于我们提供的 Demo 进行修改适配,也可以使用我们提供的 TRTCCalling 组件并实现自定义 UI 界面。
TestAudioCall
,单击创建。注意:本功能同时使用了腾讯云 实时音视频 TRTC 和 即时通信 IM 两个基础 PaaS 服务,开通实时音视频后会同步开通即时通信 IM 服务。 即时通信 IM 属于增值服务,详细计费规则请参见 即时通信 IM 价格说明。
/example/lib/debug/GenerateTestUserSig.dart
文件。GenerateTestUserSig.dart
文件中的相关参数:注意:
- 本文提到的生成 UserSig 的方案是在客户端代码中配置 SECRETKEY,该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此该方法仅适合本地跑通 Demo 和功能调试。
- 正确的 UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向 App 的接口,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig。更多详情请参见 服务端生成 UserSig。
注意:Android 端需要在真机下运行,不支持模拟器调试。
flutter pub get
。源码 文件夹 TRTCCallingDemo
中包含两个子文件夹 ui 和 model,其中 ui 文件夹中均为界面代码:
文件或文件夹 | 功能描述 |
---|---|
TRTCCallingVideo.dart | 展示音视频通话的主界面,通话的接听和拒绝就是在这个界面中完成的 |
TRTCCallingContact.dart | 用于展示选择联系人的界面,可以通过此界面搜索已注册用户,发起通话 |
源码 文件夹 TRTCCallingDemo
中包含两个子文件夹 ui 和 model,其中 model 文件夹中包含了我们实现的可重用开源组件 TRTCCalling,您可以在 TRTCCalling.dart
文件中看到该组件提供的接口函数。
您可以使用开源组件 TRTCCalling 实现自己的 UI 界面,即只复用 model 部分,自行实现 UI 部分。
音视频通话组件 TRTCCalling 依赖 TRTC SDK 和 IM SDK,您可以通过配置 pubspec.yaml
自动下载更新。
在项目的 pubspec.yaml
中写如下依赖:
dependencies:
tencent_trtc_cloud: 最新版本号
tencent_im_sdk_plugin: 最新版本号
需要在 Info.plist
中加入对相机和麦克风的权限申请:
<key>NSMicrophoneUsageDescription</key>
<string>授权麦克风权限才能正常语音通话</string>
拷贝 model 目录中的所有文件到您的项目中:
/lib/TRTCCallingDemo/model
TRTCCalling.sharedInstance()
获取组件实例。login(SDKAppID, userId, userSig)
完成组件的登录,其中几个关键参数的填写请参考下表:参数名 | 作用 |
---|---|
SDKAppID | 您可以在 实时音视频控制台 中查看 SDKAppID。 |
userId | 当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(_)。建议结合业务实际账号体系自行设置。 |
userSig | 腾讯云设计的一种安全保护签名,计算方式请参考 如何计算及使用 UserSig。 |
// 初始化
sCall = await TRTCCalling.sharedInstance();
sCall.login(1400000123, "userA", "xxxx");
TRTCCalling
的 call()
方法发起通话的请求, 并传入用户 ID(userid)和通话类型(type),通话类型参数传入 TRTCCalling.typeAudioCall
。onInvited()
的事件通知,回调中 callType
的参数是发起方填写的通话类型,您可以通过此参数启动相应的界面。accept()
函数,并同时调用 openCamera()
函数打开自己本地的摄像头。接收方也可以调用 reject()
拒绝此次通话。onUserVideoAvailable()
的事件通知,表示对方的视频画面已经拿到。此时双方用户均可以调用 startRemoteView()
展示远端的视频画面。远端的声音默认是自动播放的。TRTCCalling 组件的 API 接口列表如下:
接口函数 | 接口功能 |
---|---|
registerListener | 增加 TRTCCalling 监听器,用户可以通过该监听器获取状态通知 |
unRegisterListener | 移除监听器 |
destroy | 销毁实例 |
login | 登录 IM,所有功能需要先进行登录后才能使用 |
logout | 登出 IM,登出后无法再进行拨打操作 |
call | C2C 邀请通话,被邀请方会收到 onInvited 的事件通知 |
accept | 作为被邀请方接听来电 |
reject | 作为被邀请方拒绝来电 |
hangup | 结束通话 |
setMicMute | 是否静音 mic |
setHandsFree | 是否开启免提 |
本页内容是否解决了您的问题?