Flutter通信与会议插件dyte_core的使用

Flutter通信与会议插件dyte_core的使用

Logo

Dyte Flutter Core

一个提供音频、视频会议和直播功能的SDK。
探索文档 »

· 报告问题 · 请求功能

在开始之前

在使用dyte_core插件之前,请确保你已经阅读并完成了以下步骤:

安装

flutter pub add dyte_core

对于iOS

  1. 在你的Podfile中设置平台为iOS 12.0或以上。

    platform :ios, '12.0'
    
  2. 添加以下条目到info.plist文件。这将给予应用访问摄像头、麦克风、照片的权限,并安装所需的字体和图标。

    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>我们将使用您的蓝牙来访问您的蓝牙耳机。</string>
    <key>NSBluetoothAlwaysUsageDescription</key>
    <string>我们将使用您的蓝牙来访问您的蓝牙耳机。</string>
    <key>NSCameraUsageDescription</key>
    <string>为了在会议期间看到你,我们需要访问您的摄像头。</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>为了在会议期间听到你,我们需要访问您的麦克风。</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>为了分享,我们需要访问您的照片。</string>
    

使用

导入包

在项目中导入dyte_core包。

import 'package:dyte_core/dyte_core.dart';

初始化SDK

DyteMobileClient是SDK的主要类,它是进入点并且是初始化Dyte SDK所需唯一类。

final dyteClient = DyteMobileClient();

设置会议属性

DyteMeetingInfo类中设置属性。您只需要提供参与者的authToken

名称 描述
authToken 在创建会议后,使用Add Participant API添加每个参与者(在Add Participant API请求的body中必须传递先前创建的presetName)。API响应包含authToken
final meetingInfo = DyteMeetingInfoV2(
  authToken: '<auth_token>',
);

初始化连接请求

通过调用dyteClient上的init()方法并传入meetingInfo参数来初始化连接请求。这将建立与Dyte会议服务器的连接。

dyteClient.init(meetingInfo);

通过注册状态观察者,您可以在会议对象上接收此操作的回调。

class RoomStateNotifier extends DyteMeetingRoomEventsListener {
  [@override](/user/override)
  void onMeetingInitStarted() {
    // 处理会议初始化开始
  }

  [@override](/user/override)
  void onMeetingInitCompleted() {
    // 处理会议初始化完成
  }

  [@override](/user/override)
  void onMeetingInitFailed(Exception exception) {
    // 处理会议初始化失败
  }
}

连接到会议

现在,您已成功与Dyte会议服务器建立了连接。下一步是加入房间。

加入房间

要加入会议房间,如以下所示,在dyteClient实例上调用joinRoom()方法。

dyteClient.joinRoom();

通过注册状态观察者,您可以在会议对象上接收此操作的回调。

class LocalUserStatesNotifier extends DyteSelfEventsListener {
  [@override](/user/override)
  void onMeetingRoomJoinStarted() {
    // 处理加入开始状态
  }

  [@override](/user/override)
  void onMeetingRoomJoined() {
    // 处理加入完成,例如跳转到房间屏幕
  }

  [@override](/user/override)
  void onMeetingRoomJoinFailed(exception) {
    // 处理失败
  }
}
离开房间

会议结束后,您可以离开会议房间。

要离开会议房间,请如以下所示在dyteClient上调用leaveRoom()方法。

dyteClient.leaveRoom();

清理监听器

dyte_core: 0.3.6版本开始,引入了cleanAllNativeListeners()方法,当您完成当前的dyte会议会话时需要调用它。它内部调用了每个监听器的单独清理方法,如cleanNativeMeetingRoomEventsListener()cleanNativeParticipantEventListener()cleanNativePollListener()cleanNativeRecordingListener()cleanNativeStageEventsListener()cleanNativeSelfParticipantEventListener()cleanNativeChatListener()cleanNativeDataUpdateListener()cleanNativeLivestreamListener()cleanNativePluginEventsListener()

通过注册状态观察者,您可以在会议对象上接收此操作的回调。

class RoomStateNotifier extends DyteMeetingRoomEventsListener {
  [@override](/user/override)
  void onMeetingRoomLeaveStarted() {
    // 处理会议房间离开开始
  }

  [@override](/user/override)
  void onMeetingRoomLeaveCompleted() {
    dyteClient.removeMeetingRoomEventsListener(this);
    dyteClient.cleanupAppListeners();

    // 处理会议房间离开完成
  }
}

更多关于Flutter通信与会议插件dyte_core的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter通信与会议插件dyte_core的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中集成和使用dyte_core插件来实现通信与会议功能,可以通过以下步骤进行。以下是一个基本的代码示例,展示了如何设置和使用dyte_core插件。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加dyte_core的依赖:

dependencies:
  flutter:
    sdk: flutter
  dyte_core: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 配置权限

根据你的应用需求,在AndroidManifest.xmlInfo.plist中配置必要的权限,比如相机和麦克风权限。

Android (AndroidManifest.xml)

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

iOS (Info.plist)

<key>NSCameraUsageDescription</key>
<string>App needs access to the camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>App needs access to the microphone</string>

3. 初始化和使用dyte_core

在你的Flutter应用中,你可以按照以下方式初始化并使用dyte_core插件。

import 'package:flutter/material.dart';
import 'package:dyte_core/dyte_core.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late DyteClient _dyteClient;
  late DyteRoom _dyteRoom;
  bool _isJoined = false;

  @override
  void initState() {
    super.initState();

    // 初始化DyteClient
    _dyteClient = DyteClient(
      apiKey: '你的API_KEY', // 请替换为你的实际API Key
      projectId: '你的PROJECT_ID', // 请替换为你的实际Project ID
      roomName: '测试房间',
      userName: '用户1',
    );

    // 监听连接状态变化
    _dyteClient.onConnectionStateChange.listen((event) {
      print('Connection state changed: $event');
      if (event == DyteConnectionState.connected) {
        // 成功连接到服务器,可以加入房间
        joinRoom();
      }
    });

    // 监听房间状态变化
    _dyteClient.onRoomStateChange.listen((event) {
      print('Room state changed: $event');
      setState(() {
        _isJoined = event == DyteRoomState.joined;
      });
    });

    // 开始连接服务器
    _dyteClient.connect();
  }

  Future<void> joinRoom() async {
    try {
      // 加入房间
      _dyteRoom = await _dyteClient.joinRoom();
      print('Joined room: ${_dyteRoom.roomName}');
    } catch (e) {
      print('Failed to join room: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Dyte Core Demo'),
        ),
        body: Center(
          child: _isJoined
              ? Text('已加入房间')
              : ElevatedButton(
                  onPressed: _dyteClient.connectionState == DyteConnectionState.connected
                      ? () => joinRoom()
                      : null,
                  child: Text('加入房间'),
                ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    // 断开连接并释放资源
    _dyteClient.disconnect();
    super.dispose();
  }
}

注意事项

  1. API Key和Project ID:请确保你已经在Dyte平台上创建了项目,并获取了正确的API Key和Project ID。
  2. 错误处理:示例代码中的错误处理较为简单,实际开发中应增加更详细的错误处理和用户提示。
  3. UI设计:示例代码中的UI设计较为基础,实际开发中应根据需求进行美化。

通过以上步骤,你可以在Flutter应用中集成并使用dyte_core插件来实现通信与会议功能。根据具体需求,你还可以进一步探索dyte_core插件提供的其他功能,如视频通话、屏幕共享等。

回到顶部