集成到客户端
这页带你把 TiRTC 客户端 SDK 集成到自己的 App,并完成 SDK 初始化。
前置条件
开始写客户端代码前,先准备好这几项:
| 你需要准备 | 从哪里来 |
|---|---|
AppId | 你的 TiRTC 应用配置 |
支持平台与接入要求
| 平台 | 接入要求 |
|---|---|
| Flutter | Flutter >=3.13.0Dart >=3.1.0 <4.0.0支持 Android / iOS / macOS / OpenHarmony / HarmonyOS NEXT |
| Android | Android 5.0(API Level 21)及以上arm64-v8acompileSdk 为 35 |
| HarmonyOS | OpenHarmony / HarmonyOS NEXT 原生应用 DevEco Studio 或 OpenHarmony SDK 12 及以上运行设备需支持 arm64-v8a 原生库 |
| iOS | iOS 13.0 及以上arm64 |
| Web | 现代浏览器 页面需要通过 HTTP(S) 访问 |
引用 SDK
代码块中的 <latest-version> 从对应平台发布说明获取:Flutter、Android、HarmonyOS、iOS、Web。
text
# pubspec.yaml
dependencies:
flutter:
sdk: flutter
tirtc_av_kit: <latest-version>
# android/build.gradle.kts
# 仅构建 Android 目标时需要
allprojects {
repositories {
google()
mavenCentral()
maven {
url = uri("http://repo-sdk.tange-ai.com/repository/maven-public/")
isAllowInsecureProtocol = true
credentials {
username = "tange_user"
password = "tange_user"
}
}
}
}kotlin
// settings.gradle.kts
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
url = uri("http://repo-sdk.tange-ai.com/repository/maven-public/")
isAllowInsecureProtocol = true
credentials {
username = providers.gradleProperty("TIRTC_PUBLIC_MAVEN_USERNAME").orElse("tange_user").get()
password = providers.gradleProperty("TIRTC_PUBLIC_MAVEN_PASSWORD").orElse("tange_user").get()
}
}
}
}
// app/build.gradle.kts
dependencies {
implementation("com.tange.ai:tirtc-av:<latest-version>")
}json5
// oh-package.json5
{
"dependencies": {
"tirtc-av": "<latest-version>"
}
}ruby
target 'YourApp' do
pod 'TiRTC_AV', '<latest-version>'
endhtml
<!-- Web SDK 下载:https://github.com/tangeai/tirtc-web-demo/releases -->
<!-- tirtc.es.min.js 和 librender.wasm 需要部署到同一个目录。 -->
<!-- 页面只需要引入 tirtc.es.min.js,它会自动加载同目录下的 librender.wasm。 -->
<script type="module">
import {
TiRtc,
TiRtcInitOptions,
TiRtcConn,
TiRtcAudioOutput,
TiRtcVideoOutput,
} from './tirtc.es.min.js';
</script>初始化 SDK
应用启动后,先用你的 AppId 初始化 SDK。初始化成功后,再进入连接、播放、收发消息等后续流程。
dart
import 'package:flutter/material.dart';
import 'package:tirtc_av_kit/tirtc_av_kit.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
final int code = await TiRtc.initialize(
const TiRtcInitOptions(
appId: 'your-app-id'
),
);
if (code != 0) {
throw StateError('TiRTC initialize failed: ${TiRtc.formatError(code)}');
}
runApp(const YourApp());
}kotlin
class DemoApp : Application() {
override fun onCreate() {
super.onCreate()
TiRtc.initialize(
applicationContext,
TiRtcInitOptions(appId = "your-app-id"),
)
}
}ts
import type { common } from '@kit.AbilityKit';
import { TiRtc } from 'tirtc-av/Index';
async function initializeTiRtc(context: common.UIAbilityContext): Promise<void> {
const code = await TiRtc.initialize({
context,
appId: 'your-app-id',
});
if (code !== 0) {
throw new Error(`TiRTC initialize failed: ${TiRtc.formatError(code)}`);
}
}swift
import OSLog
import TiRTC_AV
import UIKit
@main
final class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
let config = TiRtcInitOptions(appId: "your-app-id")
TiRtc.initialize(config)
return true
}
}html
<!-- 需固定 id="canvas" 的 canvas 节点用于视频渲染。 -->
<canvas id="canvas"></canvas>
<script type="module">
import { TiRtc, TiRtcInitOptions } from './tirtc.es.min.js';
TiRtc.initialize(TiRtcInitOptions({ appId: 'your-app-id' }));
// 创建视频播放链路前,先等待渲染依赖准备完成。
await TiRtc.videoOutputReady();
</script>