# flutter_openim_sdk A flutter IM plugin for android and ios. ##### [Android体验包(密码:123456)](https://www.pgyer.com/openim) ##### [demo地址](https://github.com/hrxiang/OpenIMFlutterDemo.git) ##### [SDK文档地址](xxxx) ## 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 chatMsgList = List.empty(growable: true); /// 自定义消息监听,新消息到达会触发onNewMessage方法回调 class CustomAdvancedMsgListener extends AdvancedMsgListener { final ValueChanged? 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 | 拒绝群邀请 | |