产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
TUIRoomKit组件的接入,跟随本文档,您将在一个小时的时间内完成如下几个关键步骤,并最终得到一个包含完备 UI 界面的音视频会议功能。平台 | 版本 |
Flutter | 3.7.0 及以上版本。 |
Android | 最低兼容 Android 4.1(SDK API Level 16),建议使用 Android 5.0 (SDK API Level 21)及以上版本。 Android Studio 3.5 及以上的版本(Gradle 3.5.4 及以上的版本)。 Android 4.1 及以上的手机设备。 |
iOS | iOS 12.0 及更高。 |
dependencies:tencent_conference_uikit: 最新版本
flutter pub get
GetX状态管理库进行导航,您需要在您的应用程序中使用GetMaterialApp来代替MaterialApp。或者您也可以将您MaterialApp中的navigatorKey属性设置为Get.key以实现相同的效果。//此步骤需导入get包后再操作。由于tencent_conference_uikit中已有对get的依赖,您无需再您的pubspec.yaml中进行额外的配置。import 'package:get/get.dart';class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return GetMaterialApp( // 使用GetMaterialApp来代替MaterialApp// 您原先的MaterialApp内容);}}
Non-Global Symbols ,以保留所需要的全局符号信息。iOS端使用音视频功能,需要授权麦克风和摄像头的使用权限(Android端已在 SDK 中声明相关权限,您无需手动进行相关配置)。Info.plist中添加以下两项,分别对应麦克风和摄像头在系统弹出授权对话框时的提示信息。<key>NSCameraUsageDescription</key><string>TUIRoom需要访问您的相机权限</string><key>NSMicrophoneUsageDescription</key><string>TUIRoom需要访问您的麦克风权限</string>
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['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)','PERMISSION_MICROPHONE=1','PERMISSION_CAMERA=1',]endendend
TUIRoomKit 中的相关接口完成组件的初始化。这个步骤非常关键,因为只有在初始化后才能正常使用 TUIRoomKit 的各项功能,故请您耐心检查相关参数是否配置正确:import 'package:rtc_room_engine/rtc_room_engine.dart';var result = await TUIRoomEngine.login(SDKAPPID, // 请替换为您的SDKAPPID'userId', // 请替换为您的User ID'userSig',// 请替换为您的userSig);if (result.code == TUIError.success) {// login success} else {// login error}

SDKAppID 设置错误,国内站的 SDKAppID 一般是以140开头的10位整数。UserSig 被错配成了加密密钥(SDKSecretKey),UserSig 是用 SDKSecretKey 把 SDKAppID、UserID 以及过期时间等信息加密得来的,而不是直接把 SDKSecretKey 配置成 UserSig。UserID 被设置成“1”、“123”、“111”等简单字符串,由于 TRTC 不支持同一个 UserID 多端登录,所以在多人协作开发时,形如 “1”、“123”、“111” 这样的 UserID 很容易被您的同事占用,导致登录失败,因此我们建议您在调试的时候设置一些辨识度高的 UserID。Github 中的示例代码使用了 genTestUserSig 函数在本地计算 UserSig 是为了更快地让您跑通当前的接入流程,但该方案会将您的 SDKSecretKey 暴露在 App 的代码当中,这并不利于您后续升级和保护您的 SDKSecretKey,所以我们强烈建议您将 UserSig 的计算逻辑放在服务端进行,并由 App 在每次使用 TUIRoomKit 组件时向您的服务器请求实时计算出的 UserSig。import 'package:tencent_cloud_chat_sdk/enum/V2TimSDKListener.dart';import 'package:tencent_cloud_chat_sdk/enum/log_level_enum.dart';import 'package:tencent_cloud_chat_sdk/models/v2_tim_callback.dart';import 'package:tencent_cloud_chat_sdk/tencent_im_sdk_plugin.dart';// 初始化var initResult = await TencentImSDKPlugin.v2TIMManager.initSDK(sdkAppID: SDKAPPID, // 请替换为您的SDKAPPIDloglevel: LogLevelEnum.V2TIM_LOG_INFO, // 日志登记等级listener: V2TimSDKListener(), // 事件监听器。使用弹幕聊天时,这里传空对象即可。);if (initResult.code == 0) { // 初始化成功// 登录V2TimCallback imLoginResult = await TencentImSDKPlugin.v2TIMManager.login(userID: 'userId', // 请替换为您的UserIDuserSig: 'userSig', // 请替换为您的userSig);}
TUIRoomEngine 的 setSelfInfo 即可设置当前用户的用户名、头像。import 'package:rtc_room_engine/rtc_room_engine.dart';TUIRoomEngine.setSelfInfo(userName, avatarURL);
参数 | 类型 | 含义 |
userName | String | 用户名 |
avatarURL | String | 用户头像 URL |
ConferenceSession的quickStart方法,便可以开始快速会议。import 'package:tencent_conference_uikit/tencent_conference_uikit.dart';ConferenceSession.newInstance('roomId') //您的room id..onActionSuccess = _quickStartSuccess..onActionError = _quickStartError..quickStart();void _quickStartSuccess() {//您可以在开始快速会议的成功回调中,自行导航至会议页面。Navigator.push(context,MaterialPageRoute(builder: (context) => ConferenceMainPage(),),);}void _quickStartError(ConferenceError error, String message) {debugPrint("code: $error message: $message");}
ConferenceSession的join方法,便可以加入指定会议。import 'package:tencent_conference_uikit/tencent_conference_uikit.dart';ConferenceSession.newInstance('roomId') //您的room id..onActionSuccess = _joinSuccess..onActionError = _joinError..join();void _joinSuccess() {//您可以在加入会议的成功回调中,自行导航至会议页面。Navigator.push(context,MaterialPageRoute(builder: (context) => ConferenceMainPage(),),);}void _joinError(ConferenceError error, String message) {debugPrint("code: $error message: $message");}
文档反馈