Flutter即时通讯插件xxim_core_flutter的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter即时通讯插件xxim_core_flutter的使用

初始化

XXIMCore core = XXIMCore();
core.init(
  requestTimeout: const Duration(seconds: 10),
  connectListener: ConnectListener(
    onConnecting: () {},
    onSuccess: () {},
    onClose: (code, error) {},
  ),
  receivePushListener: ReceivePushListener(
    onPushMsgDataList: (msgDataList) {},
    onPushNoticeData: (noticeData) {},
  ),
);

连接

core.connect("");

断连

core.disconnect();

是否连接

core.isConnect();

设置连接参数

bool? status = await core.setCxnParams(
  reqId: "",
  packageId: "",
  rsaPublicKey: "",
  aesKey: "",
  req: CxnParams(
    platform: "",
    deviceId: "",
    deviceModel: "",
    osVersion: "",
    appVersion: "",
    language: "",
    networkUsed: "",
    ext: "",
  ),
);

设置用户参数

SetUserParamsResp? resp = await core.setUserParams(
  reqId: "",
  req: SetUserParamsReq(
    userId: "",
    token: "",
    ext: utf8.encode(""),
  ),
);

批量获取会话序列

BatchGetConvSeqResp? resp = await core.batchGetConvSeq(
  reqId: "",
  req: BatchGetConvSeqReq(
    convIdList: [],
  ),
);

批量获取消息列表

GetMsgListResp? resp = await core.batchGetMsgListByConvId(
  reqId: "",
  req: BatchGetMsgListByConvIdReq(
    items: [
      BatchGetMsgListByConvIdReq_Item(
        convId: "",
        seqList: [],
      ),
    ],
  ),
);

获取消息

GetMsgByIdResp? resp = await core.getMsgById(
  reqId: "",
  req: GetMsgByIdReq(
    clientMsgId: "",
    serverMsgId: "",
  ),
);

发送消息列表

SendMsgListResp? resp = await core.sendMsgList(
  reqId: "",
  req: SendMsgListReq(
    msgDataList: [
      MsgData(
        clientMsgId: "",
        clientTime: "",
        senderId: "",
        senderInfo: utf8.encode(""),
        convId: "",
        atUsers: [],
        contentType: MsgContentType.text,
        content: utf8.encode(""),
        options: MsgData_Options(
          storageForServer: true,
          storageForClient: true,
          needDecrypt: false,
          offlinePush: true,
          updateConvMsg: true,
          updateUnreadCount: true,
        ),
        offlinePush: MsgData_OfflinePush(
          title: "",
          content: "",
          payload: "",
        ),
        ext: utf8.encode(""),
      ),
    ],
    deliverAfter: 0,
  ),
);

发送已读消息

ReadMsgResp? resp = await core.sendReadMsg(
  reqId: "",
  req: ReadMsgReq(
    senderId: "",
    convId: "",
    seq: "",
    noticeContent: utf8.encode(""),
  ),
);

发送编辑消息

EditMsgResp? resp = await core.sendEditMsg(
  reqId: "",
  req: EditMsgReq(
    senderId: "",
    serverMsgId: "",
    contentType: MsgContentType.text,
    content: utf8.encode(""),
    ext: utf8.encode(""),
    noticeContent: utf8.encode(""),
  ),
);

确认消费通知

AckNoticeDataResp? resp = await core.ackNoticeData(
  reqId: "",
  req: AckNoticeDataReq(
    convId: "",
    noticeId: "",
  ),
);

自定义请求

List<int>? resp = await core.customRequest(
  reqId: "",
  method: "",
  bytes: [],
);

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

1 回复

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


当然,以下是一个关于如何使用Flutter即时通讯插件 xxim_core_flutter 的代码示例。请注意,由于 xxim_core_flutter 是一个假定的插件名称,具体的API和实现细节可能会有所不同。以下示例代码基于一般的即时通讯插件使用场景,并假设 xxim_core_flutter 插件提供了基本的连接、登录、发送和接收消息等功能。

首先,确保你已经在 pubspec.yaml 文件中添加了 xxim_core_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  xxim_core_flutter: ^latest_version  # 替换为实际版本号

然后,运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中实现即时通讯功能。以下是一个简单的示例:

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

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

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

class _MyAppState extends State<MyApp> {
  late XXIMClient _client;
  String? _username;
  String? _chatRoomId;
  List<String> _messages = [];

  @override
  void initState() {
    super.initState();
    // 初始化客户端
    _client = XXIMClient();

    // 监听消息事件
    _client.onMessageReceived.listen((message) {
      setState(() {
        _messages.add(message.content);
      });
    });
  }

  @override
  void dispose() {
    // 释放资源
    _client.disconnect();
    super.dispose();
  }

  Future<void> _login(String username, String password) async {
    try {
      await _client.login(username, password);
      setState(() {
        _username = username;
      });
    } catch (e) {
      print("Login failed: $e");
    }
  }

  Future<void> _sendMessage(String content) async {
    try {
      await _client.sendMessage(_chatRoomId!, content);
    } catch (e) {
      print("Send message failed: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter IM Demo'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              // 显示聊天信息
              Expanded(
                child: ListView.builder(
                  itemCount: _messages.length,
                  itemBuilder: (context, index) {
                    return Text(_messages[index]);
                  },
                ),
              ),
              // 输入框
              TextField(
                onSubmitted: (content) {
                  _sendMessage(content);
                },
                decoration: InputDecoration(
                  labelText: 'Type a message',
                ),
              ),
              // 登录和加入聊天室按钮
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceAround,
                children: [
                  ElevatedButton(
                    onPressed: () async {
                      String username = 'user123'; // 示例用户名
                      String password = 'password123'; // 示例密码
                      await _login(username, password);

                      // 登录成功后加入聊天室
                      _chatRoomId = 'chatRoom123'; // 示例聊天室ID
                      // 这里可以添加额外的逻辑来加入聊天室,如果插件支持的话
                    },
                    child: Text('Login and Join Chat Room'),
                  ),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项:

  1. 初始化客户端:在 initState 方法中初始化 XXIMClient 实例,并监听消息接收事件。
  2. 登录:通过 _login 方法进行登录,成功后设置用户名,并可能加入聊天室(这里假设聊天室ID已知,实际情况可能需要额外的逻辑来处理)。
  3. 发送消息:通过 _sendMessage 方法发送消息到指定的聊天室。
  4. UI布局:使用 Column 布局来展示消息列表和输入框,以及登录和加入聊天室的按钮。

警告:

  • 由于 xxim_core_flutter 是一个假设的插件名称,因此上述代码中的API调用(如 loginsendMessageonMessageReceived)可能并不存在于实际的插件中。你需要查阅 xxim_core_flutter 插件的官方文档来获取正确的API调用方式。
  • 在实际项目中,请确保处理错误情况、优化UI布局,并根据需求添加更多功能。
回到顶部