tencent cloud

文档反馈

最后更新时间:2024-08-22 10:46:13
    本文将引导您快速地完成TUICallKit组件的接入工作。跟随本文档,您可以在短短10分钟内完成接入,并最终获得一个具备完整用户界面以及音视频通话功能的应用程序。
    视频通话
    群组通话
    
    
    
    
    
    

    环境准备

    Flutter 3.0 及更高版本。

    步骤一:开通服务

    在使用腾讯云提供的音视频服务前,您需要前往控制台,为应用开通音视频服务,获取 SDKAppID、SDKSecretKey,它们将在 步骤五 中使用,具体步骤请参见 开通服务。

    步骤二:导入 TUICallKit 组件

    在工程的根目录下,通过命令行执行以下命令安装组件 tencent_calls_uikit 插件。
    flutter pub add tencent_calls_uikit

    步骤三:完成工程配置

    Android
    iOS
    1. 如果您需要编译运行在 Android 平台,由于我们在 SDK 内部使用了Java 的反射特性,需要将 SDK 中的部分类加入不混淆名单。
    首先,需要在工程的 android/app/build.gradle 文件中配置并开启混淆规则:
    android {
    ......
    buildTypes {
    release {
    ......
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    }
    在工程的 android/app 目录下创建 proguard-rules.pro 文件,并 proguard-rules.pro 文件中添加如下代码:
    -keep class com.tencent.** { *; }
    2. 在工程的 android/app/build.gradle 文件中配置开启 Multidex 支持。
    android {
    ......
    defaultConfig {
    ...... multiDexEnabled true }
    }
    由于 TUICallKit 会使用 iOS 的音视频功能,您需要授权麦克风和摄像头的使用权限。
    授权操作方法:在您的 iOS 工程的 Info.plist 的第一级<dict>目录下添加以下两项,分别对应麦克风和摄像头在系统弹出授权对话框时的提示信息。
    <key>NSCameraUsageDescription</key>
    <string>CallingApp需要访问您的相机权限,开启后录制的视频才会有画面</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>CallingApp需要访问您的麦克风权限,开启后录制的视频才会有声音</string>

    步骤四:设置 navigatorObservers

    1. 在 Flutter 应用框架的 navigatorObservers 中添加 TUICallKit.navigatorObserver,以 MateriaApp 框架为例,代码如下:
    import 'package:tencent_calls_uikit/tencent_calls_uikit.dart';
    
    ......
    
    class XXX extends StatelessWidget { const XXX({super.key});
    @override Widget build(BuildContext context) { return MaterialApp( navigatorObservers: [TUICallKit.navigatorObserver], ...... ); } }

    步骤五:登录 TUICallKit 组件

    使用 login 接口完成登录,具体使用可参考如下代码:
    import 'package:tencent_calls_uikit/tencent_calls_uikit.dart';
    import 'package:tencent_calls_uikit/debug/generate_test_user_sig.dart';
    ......
    
    final String userID = 'xxxxx'; // 请替换为您的UserId final int sdkAppID = 0; // 请替换为第一步在控制台得到的SDKAppID final String secretKey = 'xxxx'; // 请替换为第一步在控制台得到的SecretKey
    
    void login() async {
    String userSig = GenerateTestUserSig.genTestSig(userID, sdkAppID, secretKey);
    TUIResult result = await TUICallKit.instance.login(sdkAppID, userID, userSig);
    if (result.code.isEmpty) { print('Login success'); } else { print('Login failed: ${result.code} ${result.message}'); }
    }
    参数
    类型
    说明
    userID
    String
    客户根据自己的业务自定义用户 ID,只允许包含大小写英文字母(a-z A-Z)、数字(0-9)及下划线和连词符。
    sdkAppID
    int
    Tencent RTC 控制台 创建的音视频应用的唯一标识。
    secretKey
    String
    Tencent RTC 控制台 创建的音视频应用的 SDKSecretKey。
    userSig
    String
    一种安全保护签名,用于对用户进行登录鉴权认证,确认用户是否真实,阻止恶意攻击者盗用您的云服务使用权。
    注意:
    开发环境:如果您正在本地开发调试阶段,可以采用本地 GenerateTestUserSig.genTestSig函数生成 userSig。该方法中 SDKSecretKey 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。
    生产环境:如果您的项目要发布上线,请采用 服务端生成 UserSig 的方式。

    步骤六:拨打您的第一通电话

    主叫方与被叫方登录成功后,主叫方通过调用 TUICallKit 的 call 方法并指定通话类型和被叫方的 userId,就可以发起语音或者视频通话,被叫方此时就可接受到来电邀请。
    import 'package:tencent_calls_uikit/tencent_calls_uikit.dart';
    ......
    
    void call() {
    TUICallKit.instance.call('vince', TUICallMediaType.audio);
    }
    
    
    
    
    
    
    主叫方
    被叫方

    更多特性

    悬浮窗

    常见问题

    如果您的接入和使用中遇到问题,请参见 常见问题

    交流与反馈

    如果有任何需要或者反馈,您可以联系:info_rtc@tencent.com。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持