You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
13 KiB
13 KiB
flutter_openim_sdk
A flutter IM plugin for android and ios.
Android体验包(密码:123456)
demo地址
SDK文档地址
Getting Started
1,在yaml里添加依赖
flutter_openim_sdk:
git:
url: https://github.com/OpenIMSDK/Open-IM-SDK-Flutter.git
2,导入package
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
3, 初始化配置
// 初始化SDK
OpenIM.iMManager
..initSDK(
platform: IMPlatform.ios,
ipApi: 'Api接口地址',
ipWs: 'WebSocket地址',
dbPath: '数据库目录',
listener: InitSDKListener(),
)
// 添加消息监听(不使用的时候remove)
..messageManager.addAdvancedMsgListener(AdvancedMsgListener())
// 设置消息发送进度监听
..messageManager.setMsgSendProgressListener(MsgSendProgressListener())
// 设置好友关系监听
..friendshipManager.setFriendshipListener(FriendshipListener())
// 设置会话监听
..conversationManager.setConversationListener(ConversationListener())
// 设置群监听
..groupManager.setGroupListener(GroupListener());
4, 登录
OpenIM.iMManager.login(uid: uid, token: token).then((value){
// 登录成功
});
5,获取会话列表
OpenIM.iMManager.conversationManager.getAllConversationList().then((list) {
// 返回会话列表list
});
6,获取联系人列表
OpenIM.iMManager.friendshipManager.getFriendList().then((list) {
// 返回好友列表list
});
7,获取聊天记录
List<Message> chatMsgList = List.empty(growable: true);
/// 自定义消息监听,新消息到达会触发onNewMessage方法回调
class CustomAdvancedMsgListener extends AdvancedMsgListener {
final ValueChanged<Message>? onNewMessage;
CustomAdvancedMsgListener({
this.onNewMessage,
});
@override
void onRecvNewMessage(Message msg) {
if (null != onNewMessage) onNewMessage!(msg);
}
}
- 历史消息
// 如果userID不为null,groupID为null,获取的是单聊消息
// 如果userID为null,groupID不为null,获取的是群聊消息
OpenIM.iMManager.messageManager.getHistoryMessageList(
userID: uid,//用户id
startMsg: startMsg,//上一条消息,取chatMsgList[0]
groupID: gid,//群id
count: 12,//分页大小
)
.then((list) => chatMsgList.addAll(list));
- 新消息
// 创建消息监听
// 在进入聊天界面后需要监听新消息然后渲染UI
// 每个聊天窗口都有唯一的uid(用户id)或gid(群组id)
// 根据uid或gid判断收到的消息是否属于当前窗口
var msgListener = CustomAdvancedMsgListener(onNewMessage: (message) {
// 如果发送者id与当前聊天对象的id相等,或群组id与当前所在群id相等,则为当前窗口消息
if (message.sendID == uid || message.groupID == gid) {
if (!chatMsgList.contains(message)) {
// 当前聊天窗口新增消息
chatMsgList.add(event.message);
}
}
});
// 添加消息监听
OpenIM.iMManager.messageManager.addAdvancedMsgListener(msgListener);
// 移除消息监听
// 添加消息监听后,如果界面dispose,请移除对应的监听
// OpenIM.iMManager.messageManager.removeAdvancedMsgListener(msgListener);
8,发送消息
// 创建消息
var message = await OpenIM.iMManager.messageManager.createTextMessage(
text: '我是消息内容',
);
// 发送
OpenIM.iMManager.messageManager.sendMessage(
message: message,
onlineUserOnly: false,
userID: uid,// 单聊值不为null
groupID: gid,// 群聊值不为null
).then((v) {
// 发送成功
}).catchError((e){
// 发送失败
});
9,登出
OpenIM.iMManager.logout();
OpenIM.iMManager
方法 | 描述 | 参数说明 |
---|---|---|
initSDK | 初始化sdk | platform:平台(IMPlatform) ipApi:接口地址 ipWs:WebSocket地址 dbPath:数据本地存储路径以目录结尾 |
unInitSDK | ||
login | 登录 | uid:当前用户userID token:用户的token |
logout | 登出 | |
getLoginStatus | 登录状态 | |
getLoginUid | 当前uid | |
getLoginUserInfo | 当前用户信息 | |
setSelfInfo | 修改资料 | info(UserInfo):用户信息 |
getUsersInfo | 根据uid获取用户资料 | uidList:userId列表 |
forceReConn | 强制重连 |
会话管理:OpenIM.iMManager.conversationManager
方法 | 描述 | 参数说明 |
---|---|---|
setConversationListener | 会话监听 | |
getAllConversationList | 获取所有会话 | |
getSingleConversation | 获取单个会话 | sourceID:单聊值为userID,群聊值为groupID; sessionType:单聊值为1,群聊值为2 |
getMultipleConversation | 获取多个会话 | conversationIDList:会话id列表 |
deleteConversation | 删除会话 | conversationID:会话id |
setConversationDraft | 会话草稿 | draftText:草稿 |
pinConversation | 会话置顶 | isPinned:true置顶,false取消置顶 |
好友关系管理:OpenIM.iMManager.friendshipManager
方法 | 描述 | 参数说明 |
---|---|---|
setFriendshipListener | 关系监听 | |
getFriendsInfo | 获取好友信息 | uidList:要查询的用户的userID集合 |
addFriend | 添加朋友 | uid:对方的userID reason:添加理由 |
getFriendApplicationList | 获取好友申请列表 | |
getFriendList | 获取好友列表 | |
setFriendInfo | 修改朋友备注 | info(UserInfo):{"uid" : "userId", "comment" : "备注"} |
addToBlackList | 加入黑名单 | |
getBlackList | 获取黑名单列表 | |
deleteFromBlackList | 从黑名单移除 | |
checkFriend | 检查好友关系 | |
deleteFromFriendList | 移除好友 | |
acceptFriendApplication | 接受好友申请 | |
refuseFriendApplication | 拒绝好友申请 |
消息管理:OpenIM.iMManager.messageManager
方法 | 描述 | 参数说明 |
---|---|---|
addAdvancedMsgListener | 添加消息监听 | |
removeAdvancedMsgListener | 移除消息监听 | |
setMsgSendProgressListener | 消息发送进度监听 | |
sendMessage | 发送消息 | message:消息对象 userID:单聊的用户id groupID:群聊的组id onlineUserOnly:仅在线用户 |
getHistoryMessageList | 获取历史消息 | startMsg:列表里的第一条消息 userID:单聊的用户id groupID:群聊的组id count:每页size |
revokeMessage | 消息撤回 | |
deleteMessageFromLocalStorage | 删除消息 | |
insertSingleMessageToLocalStorage | 插入消息 | |
findMessages | 根据消息id查询消息 | messageIDList:消息id集合 |
markSingleMessageHasRead | 标记消息为已读 | |
markGroupMessageHasRead | 标记消息为已读 | |
createTextMessage | 创建文本消息 | text:输入的内容 |
createTextAtMessage | 创建at消息 | atUidList:被@的用户id集合 |
createImageMessage | 创建图片消息 | imagePath:路径 |
createSoundMessage | 创建语音消息 | soundPath:路径 duration:时长 |
createVideoMessage | 创建视频消息 | videoPath:路径 videoType:视频类型 duration:时长 snapshotPath:缩略图 |
createFileMessage | 创建文件消息 | filePath:路径 fileName:文件名 |
createMergerMessage | 创建合并消息 | |
createForwardMessage | 创建转发消息 | |
getTotalUnreadMsgCount | 获取消息未读数 |
组管理: OpenIM.iMManager.groupManager
方法 | 描述 | 参数说明 |
---|---|---|
setGroupListener | 设置组关系监听 | |
inviteUserToGroup | 邀请进组 | groupId:组id uidList:被邀请的用户id集合 reason:说明 |
kickGroupMember | 剔除组成员 | uidList:被剔除的用户id集合 |
getGroupMembersInfo | 获取组成员信息 | uidList:成员id集合 |
getGroupMemberList | 获取组成员 | |
getJoinedGroupList | 获取已加入的群组 | |
isJoinedGroup | 判断是否已加入群组 | |
createGroup | 创建群 | groupInfo:组信息对象 list:组成员角色列表 |
setGroupInfo | 设置群资料 | |
getGroupsInfo | 获取群信息 | |
joinGroup | 加入群 | |
quitGroup | 退出群 | |
transferGroupOwner | 群权限转移 | |
getGroupApplicationList | 获取群申请列表 | |
acceptGroupApplication | 接受群邀请 | |
refuseGroupApplication | 拒绝群邀请 |