腾讯云音视频通话SDKFlutter_音视频解决方案_同尘科技

音视频通话SDK 2年前 (2023-08-29) 浏览 97

本文将介绍如何用最短的时间完成 TUICallKit 组件的接入,跟随本文档,您将在一个小时内完成如下几个关键步骤,并最终得到一个包含完备 UI 界面的视频通话功能。

环境准备

Flutter 3.0及更高版本。

步骤一:开通服务

在使用 TUICallKit 发起通话前,您需要开通 TUICallKit 专属的音视频通话服务,详细步骤如下:1. 登录 腾讯云视立方控制台,单击创建项目后,您可以根据自己的业务情况,选择合适的接入场景和集成方式,这里我们推荐“含 UI 快速集成”,即TUICallKit。2. 在选定接入场景和集成方式以后,您就需要开通一下音视频通话 SDK使用的两项 腾讯云基础的 PaaS 能力,即 即时通信 IM 和 实时音视频 TRTC,开通后,单击创建项目并下一步3. 在项目创建完成以后,您需要为该项目匹配一个 IM 应用,因为音视频通话 SDK 依赖了 IM SDK 提供的基础能力,这里创建或者管理已有的 IM 应用均可,在关联成功后,就可以领取7天的免费体验版,用于后续的开发调试工作,当然如果您之前已经体验过,也可以直接在该页面单击 购买正式版本。4. 单击前往集成,选择项目配置,查看详细的配置页面,找到 SDKAppID 和密钥并记录下来,它们会在后续的 步骤四:登录 TUI 组件 中被用到,至此音视频通话 SDK 服务开通完成。

步骤二:导入组件

使用 Flutter 导入组件,具体步骤如下:1. 在您的 pubspec.yaml 文件中添加 tencent_calls_uikit 插件依赖,点击插件超链接切换到Versions目录下查询最新版本。

dependencies:    tencent_calls_uikit: 最新版本

2. 执行以下命令安装组件:

flutter pub get

步骤三:完成工程配置

1. 将 TUICallKit 的 navigatorObserver 添加到 App 组件中,以 MateriaApp 为例,代码如下:

import 'package:tencent_calls_uikit/tuicall_kit.dart';
MaterialApp(     navigatorObservers:[TUICallKit.navigatorObserver],     ...)

2. 如果您需要编译运行在 Android 平台,由于我们在 SDK 内部使用了Java 的反射特性,需要将 SDK 中的部分类加入不混淆名单,因此需要您在 proguard-rules.pro 文件中添加如下代码:

-keep class com.tencent.** { *; }

3. 如果您的工程需要在 iOS 模拟器上调试,您需要在工程的/ios/Podfile文件中添加以下代码:

post_install do |installer|  installer.pods_project.targets.each do |target|    flutter_additional_ios_build_settings(target)    target.build_configurations.each do |config|      config.build_settings['VALID_ARCHS'] = 'arm64 arm64e x86_64'      config.build_settings['VALID_ARCHS[sdk=iphonesimulator*]'] = 'x86_64'    end  endend

4. 如果您需要使用 iOS 的音视频功能,您需要授权麦克风和摄像头的使用权限。授权操作方法:在您的 iOS 工程的 Info.plist 中添加以下两项,分别对应麦克风和摄像头在系统弹出授权对话框时的提示信息。

NSCameraUsageDescriptionCallingApp需要访问您的相机权限,开启后录制的视频才会有画面NSMicrophoneUsageDescriptionCallingApp需要访问您的麦克风权限,开启后录制的视频才会有声音

步骤四:登录 TUICallKit 组件

在您的项目中添加如下代码,这个步骤异常关键,因为只有在登录成功后才能正常使用 TUICallKit 的各项功能,故请您耐心检查相关参数是否配置正确:

TUIResult result = TUICallKit.instance.login(SDKAppID,       // 请替换为第一步得到的SDKAppID                                             'userId',       // 请替换为您的User ID                                             'userSig');     // 您可以在控制台计算一个UserSig并填到该位置

在调用完成后,您可以通过 TUIResult`类型的返回值查看是否登录成功。参数说明:这里详细介绍一下 login 函数中所需要用到的几个关键参数:SDKAppID:在步骤一中的最后一步中您已经获取到,这里不再赘述。UserID:当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(_)。UserSig:使用 步骤一 的第3步中获取的 SecretKey 对 SDKAppID、UserID 等信息进行加密,就可以得到 UserSig,它是一个鉴权用的票据,用于腾讯云识别当前用户是否能够使用 TRTC 的服务。您可以通过控制台中的 辅助工具 生成一个临时可用的 UserSig。更多信息请参见 如何计算及使用 UserSig。注意:尊敬的开发者,您好,当前步骤是目前开发者反馈问题最多的步骤,常见问题如下:sdkAppId 设置错误,国内站的 SDKAppID 一般是以140开头的10位整数。userSig 被错配成了加密密钥(Secretkey),userSig 是用 SecretKey 把 sdkAppId、userId 以及过期时间等信息加密得来的,而不是直接把 Secretkey 配置成 userSig。userId 被设置成“1”、“123”、“111”等简单字符串,由于 TRTC 不支持同一个 UserID 多端登录,所以在多人协作开发时,形如 “1”、“123”、“111” 这样的 userId 很容易被您的同事占用,导致登录失败,因此我们建议您在调试的时候设置一些辨识度高的 userId。警告:Github 中的示例代码使用了 genTestUserSig 函数在本地计算 userSig 是为了更快地让您跑通当前的接入流程,但该方案会将您的 SecretKey 暴露在 App 的代码当中,这并不利于您后续升级和保护您的 SecretKey,所以我们强烈建议您将 userSig 的计算逻辑放在服务端进行,并由 App 在每次使用 TUICallKit 组件时向您的服务器请求实时计算出的 userSig。

步骤五:拨打通话

1对1视频通话

通过调用 TUICallKit 的 call 函数并指定通话类型和被叫方的 userId,就可以发起语音或者视频通话。

// 假设给mike拨打视频电话TUICallKit.instance.call('mike', TUICallMediaType.video);
参数 类型 含义
userId String 目标用户的 UserID:"mike"
callMediaType TUICallMediaType 通话的媒体类型,示例:TUICallMediaType.videoTUICallMediaType.audio

群内视频通话

通过调用 TUICallKit 的 groupCall 函数并指定通话类型和被叫方的 UserID 列表,就可以发起群内的语音或者视频通话。

// 假设在groupId:0001的群组内,向denny, mike 和 tommy 发起视频通话TUICallKit.instance.groupCall('0001', ['denny', 'mike', 'tommy'], TUICallMediaType.video);
参数 类型 含义
groupId String 群组 ID
userIdList Array 目标用户的 userId 列表
callMediaType TUICallMediaType 通话的媒体类型,示例:TUICallMediaType.videoTUICallMediaType.audio

说明群组的创建详见: IM 群组管理 ,或者您也可以直接使用 IM TUIKit,一站式集成聊天、通话等场景。TUICallKit 目前还不支持发起非群组的多人视频通话,如果您有此类需求,欢迎反馈: TUIKit 需求收集表。

步骤六:接听通话

在 步骤四 完成后,收到来电请求后,TUICallKit 组件会自动启动相应的接听界面。

步骤七:更多特性

一、设置昵称&头像

如果您需要自定义昵称或头像,可以使用如下接口进行更新:

// 函数定义为: Future setSelfInfo(String nickname, String avatar)TUIResult result = TUICallKit.instance.setSelfInfo('userName', 'url:********');

注意因为用户隐私限制,非好友之间的通话,被叫的昵称和头像更新可能会有延迟,一次通话成功后就会顺利更新。

二、离线唤醒

完成以上步骤,就可以实现音视频通话的拨打和接通,但如果您的业务场景需要在 应用的进程被杀死后或者应用退到后台后,还可以正常接收到音视频通话请求,就需要增加离线唤醒功能,详情见 离线唤醒(Flutter)。

三、悬浮窗功能

如果您的业务需要开启悬浮窗功能,您可以在 TUICallKit 组件初始化时调用以下接口开启该功能:

TUICallKit.instance.enableFloatWindow(true);

四. 通话状态回调

如果您的业务需要观察通话状态,例如通话开始、结束,以及通话过程中的网络质量等,可以添加观察者,观察如下事件:

TUICallEngine.instance.addObserver(TUICallObserver(    onError: (int code, String message) {      //您的回调处理逻辑        }, onCallBegin: (TUIRoomId roomId, TUICallMediaType callMediaType, TUICallRole callRole) {      //您的回调处理逻辑        }, onCallEnd: (TUIRoomId roomId, TUICallMediaType callMediaType, TUICallRole callRole, double totalTime) {        //您的回调处理逻辑        },, onUserNetworkQualityChanged: (List networkQualityList) {      //您的回调处理逻辑        }, onCallReceived: (String callerId, List calleeIdList, String groupId, TUICallMediaType callMediaType) {      //您的回调处理逻辑        }));

五、自定义铃音

如果您需要自定义来电铃音,可以通过如下接口进行设置:

TUICallKit.instance.setCallingBell('flie path');

常见问题

1、错误提示“The package you purchased does not support this ability”?

如遇以上错误提示,是由于您当前应用的音视频通话能力包过期或未开通,请参见 步骤一:开通服务,领取或者开通音视频通话能力,进而继续使用 TUICallKit 组件。

2、如何购买套餐?

请参考购买链接 音视频通话 SDK 价格总览,如有其他问题,请单击页面右侧,进行售前套餐咨询,或者加入 QQ 群:605115878,进行咨询和反馈。

3、Android 编译报错:uses-sdk:minSdkVersion 16 cannot be smaller than version 19.

详细的报错信息如下:

uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:tencent_calls_uikit] /Users/xxx/xxxx/xxxx/xxxx/demo/flutter/callkit/callkit/build/tencent_calls_uikit/intermediates/merged_manifest/debug/AndroidManifest.xml as the library might be using APIs not available in 16Suggestion: use a compatible library with a minSdk of at most 16,                or increase this project's minSdk version to at least 19,                or use tools:overrideLibrary="com.tencent.cloud.tuikit.flutter.tuicallkit" to force usage (may lead to runtime failures)

这是因为 tencent_call_uikit Plugin Android 端支持的 minSdkVersion 是 19,可以将您工程中的 android/app/build.gradle文件中的 minSdkVersion修改为 19 及其以上即可。

交流与反馈

如果您在使用过程中,有什么建议或者意见,可以在这里反馈:TUICallKit 产品反馈问卷,感谢您的反馈。如果您是开发者,也欢迎您加入我们的 TUICallKit 技术交流 QQ 群:605115878,进行技术交流和产品沟通。

对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?