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");
}
}