ZEGOCLOUD RoomKit Flutter

RoomKit Flutter是原生Android和iOS RoomKit SDK的封装。

入门

先决条件

基本要求

平台特定要求如下:

构建Android应用

  • Android SDK软件包:Android SDK 30,Android SDK Platform-Tools 30.x.x 或更高版本。
  • 运行Android 4.1或更高版本且支持音视频的Android设备或模拟器。我们推荐使用真机(请记住为设备启用**USB调试**)。

构建iOS应用(目前不支持!)

检查开发环境

在满足上一步所有要求后,运行以下命令检查您的开发环境是否就绪:

$ flutter doctor

image

  • 如果Android开发环境已就绪,则Android toolchain项将显示为就绪状态。
  • 如果iOS开发环境已就绪,则Xcode项将显示为就绪状态。

运行示例代码

  1. 在Android Studio中打开roomkit_flutter项目。
  2. 确保Android设备已启用开发者模式USB调试,并将Android设备连接到您的计算机。
  3. 如果顶部的运行设备框更改为您正在使用的设备名称,则表示您已准备好运行示例代码。
  4. 联系我们获取SecretID、SecretSign和ProductID。image
  5. 在终端运行flutter pub get
  6. 在您的设备上运行示例代码,体验roomkit_flutter

将SDK集成到您的项目中

关闭某些类的混淆

为防止ZEGO SDK公共类名被混淆,请完成以下步骤:

  1. 在[your_project > android > app]下创建一个proguard-rules.pro文件,内容如下:
-keep class **.zego.**  { *; }

image

  1. 为发布版本将配置代码添加到android/app/build.gradle
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

image

将源代码复制到您的项目中

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 -->
       ...

image

[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'))

GitHub

查看 Github