Flutter即时通讯插件xxim_sdk_flutter的使用

Flutter即时通讯插件xxim_sdk_flutter的使用

初始化

XXIMSDK sdk = XXIMSDK();
sdk.init(
  directory: "", // 指定存储目录
  requestTimeout: const Duration(seconds: 10), // 请求超时时间
  rsaPublicKey: "", // RSA公钥
  aesKey: "", // AES密钥
  cxnParams: CxnParams( // 连接参数
    deviceModel: "", // 设备型号
    deviceId: "", // 设备ID
    osVersion: "", // 操作系统版本
    platform: "", // 平台
    appVersion: "", // 应用版本
    language: "", // 语言
    networkUsed: "", // 网络类型
    ext: "", // 扩展信息
  ),
  autoPullTime: const Duration(seconds: 20), // 自动拉取消息的时间间隔
  pullMsgCount: 50, // 拉取消息的数量
  isarSchemas: [], // Isar数据库模式
  isarMaxSizeMiB: Isar.defaultMaxSizeMiB, // Isar最大数据库大小
  isarInspector: false, // 是否开启Isar调试
  connectListener: ConnectListener( // 连接监听器
    onConnecting: () {}, // 正在连接
    onSuccess: () {}, // 连接成功
    onClose: (code, error) {}, // 连接关闭
  ),
  subscribeCallback: SubscribeCallback( // 订阅回调
    onConvParams: () async {
      return {"": const AesParams(key: "", iv: "")}; // 返回会话参数
    },
  ),
  isarListener: IsarListener( // Isar监听器
    onCreate: (isar) {}, // 创建数据库实例
  ),
  pullListener: PullListener( // 拉取监听器
    onStart: () {}, // 开始拉取
    onEnd: () {}, // 结束拉取
  ),
  convListener: ConvListener( // 会话监听器
    onUpdate: () {}, // 会话更新
  ),
  msgListener: MsgListener( // 消息监听器
    onReceive: (msgModelList) {}, // 接收消息
  ),
  noticeListener: NoticeListener( // 通知监听器
    onReceive: (noticeModel) async {
      return true; // 处理通知
    },
  ),
  unreadListener: UnreadListener( // 未读消息监听器
    onUnreadCount: (count) {}, // 更新未读消息数量
  ),
);

连接

sdk.connect(""); // 连接到服务器

断连

sdk.disconnect(); // 断开与服务器的连接

是否连接

bool isConnected = sdk.isConnect(); // 检查是否已连接

设置连接参数

sdk.setCxnParams(
  rsaPublicKey: "", // RSA公钥
  aesKey: "", // AES密钥
  cxnParams: cxnParams, // 连接参数
);

设置用户参数

sdk.setUserParams(
  userId: "", // 用户ID
  token: "", // 认证令牌
  ext: utf8.encode(""), // 扩展信息
  isarName: "", // Isar数据库名称
  convParams: {}, // 会话参数
);

打开拉取订阅

sdk.openPullSubscribe(
  convParams: {}, // 会话参数
);

关闭拉取订阅

sdk.closePullSubscribe(); // 关闭拉取订阅

自定义请求

List<int>? resp = await sdk.customRequest(
  method: "", // HTTP方法
  bytes: [], // 请求字节数据
);

会话管理

获取会话列表

List<ConvModel> convList = await sdk.convManager.getConvList(); // 获取会话列表

获取单条会话

ConvModel? convModel = await sdk.convManager.getSingleConv(
  convId: "", // 会话ID
);

设置会话已读

sdk.convManager.setConvRead(
  convId: "", // 会话ID
  isSync: true ?? false, // 是否同步
);

更新会话消息

sdk.convManager.updateConvMsg(
  convId: "", // 会话ID
);

删除会话消息

sdk.convManager.deleteConvMsg(
  convId: "", // 会话ID
);

更新会话通知

sdk.convManager.updateConvNotice(
  convId: "", // 会话ID
);

删除会话通知

sdk.convManager.deleteConvNotice(
  convId: "", // 会话ID
);

设置会话草稿

sdk.convManager.setConvDraft(
  convId: "", // 会话ID
  draftModel: DraftModel(
    content: "", // 草稿内容
    ext: "", // 扩展信息
  ),
);

设置会话隐藏

sdk.convManager.setConvHidden(
  convId: "", // 会话ID
  hidden: true ?? false, // 是否隐藏
);

删除会话

sdk.convManager.deleteConv(
  convId: "", // 会话ID
  clear: true ?? false, // 是否清除
);

获取未读数量

int unreadCount = await sdk.convManager.getUnreadCount(); // 获取未读消息数量

消息管理

获取消息列表

List<MsgModel> msgList = await sdk.msgManager.getMsgList(
  convId: "", // 会话ID
  contentType: ContentType.text, // 消息类型
  maxSeq: null, // 最大序列号
  size: 25, // 每页消息数量
);

获取首个消息

MsgModel? msgModel = await sdk.msgManager.getFirstMsg(
  convId: "", // 会话ID
);

获取单条消息

MsgModel? msgModel = await sdk.msgManager.getSingleMsg(
  clientMsgId: "", // 消息ID
);

获取多条消息

List<MsgModel> msgList = await sdk.msgManager.getMultipleMsg(
  clientMsgIdList: [], // 消息ID列表
);

拉取云端消息

MsgModel? msgModel = await sdk.msgManager.pullCloudMsg(
  clientMsgId: "", // 消息ID
);

发送正在输入

bool status = await sdk.msgManager.sendTyping(
  convId: "", // 会话ID
  content: TypingContent(
    focus: true ?? false, // 是否聚焦
  ),
  ext: "", // 扩展信息
);

发送提示消息

bool status = await sdk.msgManager.sendTip(
  convId: "", // 会话ID
  content: TipContent(
    tip: "", // 提示内容
    ext: "", // 扩展信息
  ),
  ext: "", // 扩展信息
);

创建文本、图片、语音、视频、文件、位置、名片、合并、表情、命令、富文本、标记、自定义消息

MsgModel msgModel = await sdk.msgManager.createText(...); // 创建文本消息
MsgModel msgModel = await sdk.msgManager.createImage(...); // 创建图片消息
MsgModel msgModel = await sdk.msgManager.createAudio(...); // 创建语音消息
MsgModel msgModel = await sdk.msgManager.createVideo(...); // 创建视频消息
MsgModel msgModel = await sdk.msgManager.createFile(...); // 创建文件消息
MsgModel msgModel = await sdk.msgManager.createLocation(...); // 创建位置消息
MsgModel msgModel = await sdk.msgManager.createCard(...); // 创建名片消息
MsgModel msgModel = await sdk.msgManager.createMerge(...); // 创建合并消息
MsgModel msgModel = await sdk.msgManager.createEmoji(...); // 创建表情消息
MsgModel msgModel = await sdk.msgManager.createCommand(...); // 创建命令消息
MsgModel msgModel = await sdk.msgManager.createRichText(...); // 创建富文本消息
MsgModel msgModel = await sdk.msgManager.createMarkdown(...); // 创建Markdown消息
MsgModel msgModel = await sdk.msgManager.createCustom(...); // 创建自定义消息

发送消息列表

bool status = await sdk.msgManager.sendMsgList(
  senderInfo: "", // 发送者信息
  msgModelList: [], // 消息列表
  deliverAfter: 0, // 延迟发送时间
);

发送已读消息

bool status = await sdk.msgManager.sendReadMsg(
  content: ReadContent(
    convId: "", // 会话ID
    seq: 0, // 序列号
  ),
);

发送撤回消息

bool status = await sdk.msgManager.sendRevokeMsg(
  clientMsgId: "", // 消息ID
  content: TipContent(
    tip: "", // 撤回内容
    ext: "", // 扩展信息
  ),
);

发送编辑消息

bool status = await sdk.msgManager.sendEditMsg(
  msgModel: msgModel, // 编辑的消息模型
);

更新插入消息

sdk.msgManager.upsertMsg(
  msgModel: msgModel, // 消息模型
  includeMsgConv: true ?? false, // 是否包含会话
);

删除消息

sdk.msgManager.deleteMsg(
  clientMsgId: "", // 消息ID
);

清空消息

sdk.msgManager.clearMsg(
  convId: "", // 会话ID
);

通知管理

获取通知列表

List<NoticeModel> noticeList = await sdk.noticeManager.getNoticeList(
  convId: "", // 会话ID
  offset: 0, // 偏移量
  limit: 25, // 限制数量
);

获取单条通知

NoticeModel? noticeModel = await sdk.noticeManager.getSingleNotice(
  noticeId: "", // 通知ID
);

获取多条通知

List<NoticeModel> noticeList = await sdk.noticeManager.getMultipleNotice(
  noticeIdList: [], // 通知ID列表
);

删除通知

sdk.noticeManager.deleteNotice(
  noticeId: "", // 通知ID
);

清空通知

sdk.noticeManager.clearNotice(
  convId: "", // 会话ID
);

更多关于Flutter即时通讯插件xxim_sdk_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter即时通讯插件xxim_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


xxim_sdk_flutter 是一个用于 Flutter 应用的即时通讯(IM)插件,基于 xxim 的 SDK 开发。它提供了诸如消息发送、接收、用户管理、群组管理等功能,适用于实时聊天、社交应用等场景。

以下是如何在 Flutter 项目中使用 xxim_sdk_flutter 的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 xxim_sdk_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  xxim_sdk_flutter: ^1.0.0  # 请根据实际版本号调整

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

2. SDK 初始化

在使用 SDK 前需要进行初始化,通常在 main.dart 中进行:

import 'package:xxim_sdk_flutter/xxim_sdk_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 SDK
  await XXIMSDK.instance.init(
    appId: "your_app_id",
    platform: Platform.Android, // 根据平台选择
  );

  runApp(MyApp());
}

3. 用户登录

用户需要登录后才能使用 IM 功能。可以使用 login 方法进行登录:

void login() async {
  try {
    await XXIMSDK.instance.login(
      userId: "your_user_id",
      token: "your_token",
    );
    print("Login success");
  } catch (e) {
    print("Login failed: $e");
  }
}

4. 发送消息

登录成功后,可以使用 sendMessage 方法发送消息:

void sendTextMessage(String receiverId, String text) async {
  try {
    await XXIMSDK.instance.sendMessage(
      receiverId: receiverId,
      messageType: MessageType.Text,
      content: text,
    );
    print("Message sent");
  } catch (e) {
    print("Message send failed: $e");
  }
}

5. 接收消息

可以通过监听消息事件来接收消息:

void setupMessageListener() {
  XXIMSDK.instance.onMessageReceived.listen((message) {
    print("Received message: ${message.content}");
  });
}

6. 用户管理

SDK 还提供了用户管理的功能,例如获取用户信息:

void getUserInfo(String userId) async {
  try {
    UserInfo userInfo = await XXIMSDK.instance.getUserInfo(userId);
    print("User info: ${userInfo.name}");
  } catch (e) {
    print("Failed to get user info: $e");
  }
}

7. 群组管理

如果需要使用群组功能,可以创建群组、加入群组等:

void createGroup(String groupName, List<String> memberIds) async {
  try {
    GroupInfo groupInfo = await XXIMSDK.instance.createGroup(
      groupName: groupName,
      memberIds: memberIds,
    );
    print("Group created: ${groupInfo.groupId}");
  } catch (e) {
    print("Failed to create group: $e");
  }
}

8. 断开连接

当用户退出应用时,需要断开与 IM 服务器的连接:

void logout() async {
  try {
    await XXIMSDK.instance.logout();
    print("Logout success");
  } catch (e) {
    print("Logout failed: $e");
  }
}
回到顶部