ZEGOCLOUD RoomKit Flutter
RoomKit Flutter是原生Android和iOS RoomKit SDK的封装。
入门
先决条件
基本要求
- Android Studio 2020.3.1 或更高版本
- Flutter SDK
- 在 ZEGOCLOUD 管理控制台 中创建一个项目。详情请参见 管理控制台–项目管理。
平台特定要求如下:
构建Android应用
- Android SDK软件包:Android SDK 30,Android SDK Platform-Tools 30.x.x 或更高版本。
- 运行Android 4.1或更高版本且支持音视频的Android设备或模拟器。我们推荐使用真机(请记住为设备启用**USB调试**)。
构建iOS应用(目前不支持!)
- Xcode 7.0或更高版本
- CocoaPods
- 运行iOS 13.0或更高版本且支持音视频的iOS设备或模拟器。我们推荐使用真机。
检查开发环境
在满足上一步所有要求后,运行以下命令检查您的开发环境是否就绪:
$ flutter doctor
- 如果Android开发环境已就绪,则Android toolchain项将显示为就绪状态。
- 如果iOS开发环境已就绪,则Xcode项将显示为就绪状态。
运行示例代码
- 在Android Studio中打开
roomkit_flutter项目。 - 确保Android设备已启用开发者模式和USB调试,并将Android设备连接到您的计算机。
- 如果顶部的运行设备框更改为您正在使用的设备名称,则表示您已准备好运行示例代码。
- 联系我们获取SecretID、SecretSign和ProductID。

- 在终端运行
flutter pub get - 在您的设备上运行示例代码,体验
roomkit_flutter。
将SDK集成到您的项目中
关闭某些类的混淆
为防止ZEGO SDK公共类名被混淆,请完成以下步骤:
- 在[your_project > android > app]下创建一个
proguard-rules.pro文件,内容如下:
-keep class **.zego.** { *; }
- 为发布版本将配置代码添加到
android/app/build.gradle
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
将源代码复制到您的项目中
将roomkit_plugin.dart文件复制到[your_project > lib]文件夹。
将RoomKitPlugin.kt文件复制到[MainActivity.kt]所在的位置。
将libs文件夹复制到[your_project > android > app]文件夹。
更改代码配置
将configureFlutterEngine方法添加到MainActivity
...
import com.zegocloud.roomkit_flutter.RoomKitPlugin
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
...
class MainActivity: FlutterActivity() {
...
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
val pluginHandler = RoomKitPlugin()
val messenger = flutterEngine.dartExecutor.binaryMessenger
val channel = MethodChannel(messenger, "RoomKitPlugin")
channel.setMethodCallHandler { call, result ->
when(call.method) {
"init" -> { pluginHandler.init(call, result, application) }
"joinRoom" -> { pluginHandler.joinRoom(call, result, this@MainActivity) }
"getDeviceID" -> { pluginHandler.getDeviceID(call, result) }
else -> { result.error("error_code", "error_message", null) }
}
}
}
将配置添加到[android > app > src > main > AndroidManifest.xml]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" <!-- add this line -->
...
<application
tools:replace="android:label" <!-- add this line -->
...
在[android > app > build.gradle]中将minSdkVersion更改为21
defaultConfig {
...
minSdkVersion 21
...
}
将依赖项添加到[android > app > build.gradle]
dependencies {
...
implementation "androidx.core:core-ktx:1.3.0"
implementation 'com.squareup.okhttp3:okhttp:4.0.1'
api fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
api "com.google.android.material:material:1.1.0"
api "com.google.code.gson:gson:2.8.6"
api "com.tencent.imsdk:imsdk:5.1.56"
api "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.constraintlayout:constraintlayout:2.1.1"
}
将配置添加到[android > build.gradle]
buildscript {
...
repositories {
...
maven { url 'https://www.jitpack.io' } // Add this line
}
...
}
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' } // Add this line
}
}
方法调用
SDK接口的调用顺序如下:init –> joinRoom
init
在使用SDK功能之前,您需要先初始化SDK。我们建议在应用程序启动时进行初始化。示例如下:
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
RoomKitPlugin.init(widget.secretID).then((value) {
print('SDK initialized');
});
super.initState();
}
加入房间
当您准备好开始课程时,您可以调用joinRoom来创建或加入一个课程房间。
TextButton(
onPressed: () {
getRoomKitToken().then((roomkitToken) {
ZegoJoinRoomConfig config = ZegoJoinRoomConfig(
_userID,
_userName,
roomkitToken,
widget.productID,
_roomID,
_role);
RoomKitPlugin.joinRoom(config, _subject).then((value) {
print(value);
});
});
},
child: const Text('Join Room'))



