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");}
本页内容是否解决了您的问题?