diff --git a/README.md b/README.md index 39d1048..7b553ce 100644 --- a/README.md +++ b/README.md @@ -7,1795 +7,12 @@ A flutter im plugin for android and ios. -#### [demo源代码](https://github.com/OpenIMSDK/Open-IM-Flutter-Demo.git) | [UI库源代码](https://github.com/hrxiang/flutter_openim_widget.git) +#### [demo open source code](https://github.com/OpenIMSDK/Open-IM-Flutter-Demo.git) | [UI library source code](https://github.com/hrxiang/flutter_openim_widget.git) -扫描下方二维码即可体验SDK调用示例 Demo +Scan the QR code below to experience the SDK call example Demo ![Android](https://www.pgyer.com/app/qrcode/OpenIM-Flutter) +# [SDK Documents](https://doc.rentsoft.cn/sdks/quickstart/flutter) -## 开始使用 - - -#### 1,添加依赖到yaml - - flutter_openim_sdk: latest - -#### 2,导入包 - - import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; - -#### 3,[初始化](#initsdk%E5%88%9D%E5%A7%8B%E5%8C%96sdk) - -#### 4,[设置监听器](#%E7%9B%91%E5%90%AC%E5%99%A8%E8%AE%BE%E7%BD%AE) - -#### 5,[登录](#login%E7%99%BB%E5%BD%95) - - - -## 类方法说明 - -#### IMManager(初始化管理) - -| 方法 | 描述 | -| ---------------- | --------------------------------------------- | -| initSDK | 初始化SDK | -| unInitSDK | 反初始化SDK | -| login | 登录 | -| logout | 登出 | -| getLoginStatus | 获取登录状态 | -| getLoginUserID | 登录者用户ID | -| getLoginUserInfo | 登录者用户资料 | -| wakeUp | 唤醒socket通信(当app从后台回到前台恢复通信) | -| uploadImage | 上传图片到服务器 | - - - -#### UserManager(用户信息管理) - -| 方法 | 描述 | -| --------------- | ------------------------ | -| setUserListener | 当前登录用户信息变更监听 | -| getUsersInfo | 根据userID获取用户资料 | -| getSelfUserInfo | 获取当前登录用户资料 | -| setSelfInfo | 修改当前登录用户资料 | - - - -#### ConversationManager(会话管理) - -| 方法 | 描述 | -| --------------------------------- | -------------------------------------- | -| setConversationListener | 会话监听 | -| getAllConversationList | 获取所有会话 | -| getConversationListSplit | 分页获取会话 | -| getOneConversation | 查询会话,如果会话不存在会自动生成一个 | -| getMultipleConversation | 根据会话id获取多个会话 | -| deleteConversation | 通过会话id删除指定会话 | -| setConversationDraft | 设置会话草稿 | -| pinConversation | 置顶会话 | -| markGroupMessageHasRead | 标记群聊会话已读 | -| getTotalUnreadMsgCount | 获取未读消息总数 | -| getConversationIDBySessionType | 查询会话id | -| setConversationRecvMessageOpt | 消息免打扰设置 | -| getConversationRecvMessageOpt | 查询免打扰状态 | -| setOneConversationPrivateChat | 阅后即焚 | -| deleteConversationFromLocalAndSvr | 删除本地以及服务器的会话 | -| deleteAllConversationFromLocal | 删除所有本地会话 | -| resetConversationGroupAtType | 重置强提醒标识 | -| getAtAllTag | 查询@所有人标识 | -| setGlobalRecvMessageOpt | 全局免打扰设置 | - - - -#### FriendshipManager(好友关系管理) - -| 方法 | 描述 | -| ---------------------------- | -------------------------------------------------- | -| setFriendshipListener | 好友关系监听 | -| getFriendsInfo | 查询好友信息 | -| addFriend | 发送一个好友请求,需要对方调用同意申请才能成为好友 | -| getRecvFriendApplicationList | 获取别人加我为好友的申请 | -| getSendFriendApplicationList | 获取我发出的好友申请 | -| getFriendList | 获取好友列表,返回的列表包含了已拉入黑名单的好友 | -| setFriendRemark | 设置好友备注 | -| addBlacklist | 加入黑名单 | -| getBlacklist | 获取黑名单列表 | -| removeBlacklist | 从黑名单移除 | -| checkFriend | 检查友好关系 | -| deleteFriend | 删除好友 | -| acceptFriendApplication | 接受好友请求 | -| refuseFriendApplication | 拒绝好友请求 | -| searchFriends | 查好友 | - - - -#### GroupManager(组/群关系管理) - -| 方法 | 描述 | -| ---------------------------- | ---------------------------------------- | -| setGroupListener | 组关系监听 | -| inviteUserToGroup | 邀请进组,直接进组无需同意 | -| kickGroupMember | 移除组成员 | -| getGroupMembersInfo | 查询组成员资料 | -| getGroupMemberList | 分页获取组成员列表 | -| getJoinedGroupList | 查询已加入的组列表 | -| isJoinedGroup | 检查是否已加入组 | -| createGroup | 创建一个组 | -| setGroupInfo | 编辑组资料 | -| getGroupsInfo | 查询组信息 | -| joinGroup | 申请加入组,需要通过管理员/群组同意。 | -| quitGroup | 退出组 | -| transferGroupOwner | 转移组拥有者权限 | -| getRecvGroupApplicationList | 作为群主或者管理员,收到的群成员入群申请 | -| getSendGroupApplicationList | 获取自己发出的入群申请记录 | -| acceptGroupApplication | 管理员或者群主同意某人进入某群 | -| refuseGroupApplication | 管理员或者群主拒绝某人进入某群 | -| dismissGroup | 解散群 | -| changeGroupMute | 开启群禁言,所有群成员禁止发言 | -| changeGroupMemberMute | 禁言群成员 | -| setGroupMemberNickname | 设置群成员昵称 | -| searchGroups | 查询群 | -| setGroupMemberRoleLevel | 设置群成员权限 | -| getGroupMemberListByJoinTime | 根据加入时间分页获取组成员列表 | - - - -#### MessageManager(消息管理) - -| 方法 | 描述 | -| --------------------------------------- | ------------------------------------------------------------ | -| setAdvancedMsgListener | 消息监听 | -| setMsgSendProgressListener | 消息发送进度监听 | -| sendMessage | 发送消息 | -| getHistoryMessageList | 获取聊天记录(以startMsg为节点,以前的聊天记录) | -| revokeMessage | 撤回消息 | -| deleteMessageFromLocalStorage | 删除本地消息 | -| insertSingleMessageToLocalStorage | 插入单聊消息到本地 | -| insertGroupMessageToLocalStorage | 插入群聊消息到本地 | -| markC2CMessageAsRead | 标记c2c单条消息已读 | -| markGroupMessageAsRead | 标记群聊消息已读 | -| typingStatusUpdate | 正在输入提示 | -| createTextMessage | 创建文本消息 | -| createTextAtMessage | 创建@消息 | -| createImageMessage | 创建图片消息 | -| createImageMessageFromFullPath | 创建图片消息 | -| createSoundMessage | 创建语音消息 | -| createSoundMessageFromFullPath | 创建语音消息 | -| createVideoMessage | 创建视频消息 | -| createVideoMessageFromFullPath | 创建视频消息 | -| createFileMessage | 创建文件消息 | -| createFileMessageFromFullPath | 创建文件消息 | -| createMergerMessage | 创建合并消息 | -| createForwardMessage | 创建转发消息 | -| createLocationMessage | 创建位置消息 | -| createCustomMessage | 创建自定义消息 | -| createQuoteMessage | 创建引用消息 | -| createCardMessage | 创建卡片消息 | -| createFaceMessage | 创建自定义表情消息 | -| clearC2CHistoryMessage | 清空单聊消息记录 | -| clearGroupHistoryMessage | 清空组消息记录 | -| searchLocalMessages | 搜索消息 | -| deleteMessageFromLocalAndSvr | 删除本地跟服务器的指定的消息 | -| deleteAllMsgFromLocal | 删除本地所有聊天记录 | -| deleteAllMsgFromLocalAndSvr | 删除本地跟服务器所有聊天记录 | -| markMessageAsReadByConID | 标记消息已读 | -| clearC2CHistoryMessageFromLocalAndSvr | 删除本地跟服务器的单聊聊天记录 | -| clearGroupHistoryMessageFromLocalAndSvr | 删除本地跟服务器的群聊天记录 | -| getHistoryMessageListReverse | 获取聊天记录(以startMsg为节点,新收到的聊天记录),用在全局搜索定位某一条消息,然后此条消息后新增的消息 | - - - -#### OrganizationManager(组织架构管理) - -| 方法 | 描述 | -| ----------------------- | ---------------------------------------------- | -| setOrganizationListener | 组织架构发生变化回调 | -| getSubDept | 获取子部门列表,返回当前部门下的一级子部门 | -| getDeptMember | 获取部门下的成员列表,返回当前部门下的一级成员 | -| getUserInDept | 获取成员所在的部门 | -| getDeptMemberAndSubDept | 获取部门下的子部门跟员工 | -| getDeptInfo | 查询部门信息 | -| searchOrganization | 搜索组织人员 | - - - -#### SignalingManager(信令管理) - -| 方法 | 描述 | -| ---------------------- | ------------------------ | -| setSignalingListener | 信令监听 | -| signalingInvite | 邀请个人加入音视频 | -| signalingInviteInGroup | 邀请群里某些人加入音视频 | -| signalingAccept | 同意某人音视频邀请 | -| signalingReject | 拒绝某人音视频邀请 | -| signalingCancel | 邀请者取消音视频通话 | -| signalingHungUp | 挂断 | - - - -#### WorkMomentsManager(朋友圈管理) - -| 方法 | 描述 | -| ---------------------------- | ---------------------- | -| setWorkMomentsListener | 朋友圈信息发送变化通知 | -| getWorkMomentsUnReadCount | 获取朋友圈未读消息总数 | -| getWorkMomentsNotification | 获取通知列表 | -| clearWorkMomentsNotification | 清除通知列表 | - - - -## 方法名、参数、返回值说明 - -- ##### initSDK(初始化SDK) - -``` -OpenIM.iMManager.initSDK( - platform: 0, // 平台,参照IMPlatform类, - apiAddr: "", // SDK的API接口地址。如:http://xxx:10000 - wsAddr: "", // SDK的web socket地址。如: ws://xxx:17778 - dataDir: "", // 数据存储路径。如:var apath =(await getApplicationDocumentsDirectory()).path - objectStorage: 'cos', // 图片服务器默认'cos' - logLevel: 6, // 日志等级,默认值6 - listener: OnConnectListener( - onConnectSuccess: () { - // 已经成功连接到服务器 - }, - onConnecting: () { - // 正在连接到服务器,适合在 UI 上展示“正在连接”状态。 - }, - onConnectFailed: (code, errorMsg) { - // 连接服务器失败,可以提示用户当前网络连接不可用 - }, - onUserSigExpired: () { - // 登录票据已经过期,请使用新签发的 UserSig 进行登录。 - }, - onKickedOffline: () { - // 当前用户被踢下线,此时可以 UI 提示用户“您已经在其他端登录了当前账号,是否重新登录?” - }, - ), - ).then((value){ - if(value == true){ - // 初始化成功 - } - }); -``` - - - -- ##### login(登录) - -``` -OpenIM.iMManager.login( - uid: "", // uid来自于自身业务服务器 - token: "", // token需要业务服务器根据secret向OpenIM服务端交换获取 - ).then((userInfo) { - // 返回当前登录用户的资料 - }); -``` - - - -- ##### logout( 登出) - -``` - OpenIM.iMManager.logout().then((_){ - // 退出成功 - }); -``` - - - -- ##### getLoginUserInfo(获取当前登录用户的资料) - -``` -OpenIM.iMManager.getLoginUserInfo().then((userInfo){ - // 当前登录用户的信息 - }); -``` - - - -- ##### getLoginUserID(获取当前登录用户的ID) - -``` - OpenIM.iMManager.getLoginUserID().then((userID){ - // 当前登录用户的ID - }); -``` - - - -- ##### getUsersInfo(根据用户ID批量获取用户信息) - -``` - OpenIM.iMManager.userManager.getUsersInfo( - uidList: [], // 用户ID集合 - ).then((userInfoList) { - // 用户信息列表 - }); -``` - - - -- ##### getSelfUserInfo(获取当前登录用户的资料) - -``` - OpenIM.iMManager.userManager.getSelfUserInfo().then((userInfo){ - // 返回当前登录用户的资料 - }); -``` - - - -- ##### setSelfInfo(修改当前用登录户资料) - -会触发当用户的onSelfInfoUpdated回调,以及好友的onFriendInfoChanged、onConversationChanged回调。 - -``` - OpenIM.iMManager.userManager.setSelfInfo( - nickname: '', // 昵称 - faceURL: '', // 头像 - gender: 0, // 性别: 男1,女0 - phoneNumber: '', // 手机号 - email: '', //邮箱 - birth: 0, //生日 - ex: '', // 其他信息 - ); -``` - - - -- ##### getAllConversationList(获取所有会话) - -``` - OpenIM.iMManager.conversationManager.getAllConversationList().then((list) { - // List 会话列表 - }); -``` - - - -- ##### getConversationListSplit(分页获取会话) - -``` -OpenIM.iMManager.conversationManager.getConversationListSplit( - offset: 0, // 偏移量,如:第1页,offet:0,count:20;第2页:offset:20; - count: 0, // 每页数量 - ).then((list) { - // List 会话列表 - }); -``` - - - -- ##### getOneConversation(获取一个会话,如果不存在会自动创建) - -``` -OpenIM.iMManager.conversationManager.getOneConversation( - sourceID: "", // 如果是单聊值传userID,如果是群聊groupID - sessionType: 1, // 如果是单聊值传1,如果是群聊值传2 - ).then((info) { - // 会话信息 - }); -``` - - - -- ##### getMultipleConversation(根据会话id查询会话) - -``` - OpenIM.iMManager.conversationManager.getMultipleConversation( - conversationIDList: [], // 会话ID集合 - ).then((list) { - // 返回与id匹配的会话列表 - }); -``` - - - -- ##### deleteConversation(根据会话id删除指定会话) - -会触onTotalUnreadMessageCountChanged回调 - -``` -OpenIM.iMManager.conversationManager.deleteConversation( - conversationID: "", // 会话id - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### setConversationDraft(设置会话草稿) - -会触onConversationChanged回调 - -``` -OpenIM.iMManager.conversationManager.setConversationDraft( - conversationID: "", // 会话id - draftText: "", // 草稿 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### pinConversation(置顶会话) - -会触onConversationChanged回调 - -``` -OpenIM.iMManager.conversationManager.pinConversation( - conversationID: "", // 会话id - isPinned: true, // true:置顶;false:取消置顶 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### markGroupMessageHasRead(标记群会话已读,清除未读数) - -会触onConversationChanged、onTotalUnreadMessageCountChanged回调 - -``` -OpenIM.iMManager.conversationManager.markGroupMessageHasRead( - groupID: "", // 组id - ); -``` - - - -- ##### getTotalUnreadMsgCount(获取未读消息总数) - -``` -OpenIM.iMManager.conversationManager.getTotalUnreadMsgCount().then((count){ - // 总数 -}); -``` - - - -- ##### getConversationIDBySessionType(查询会话id) - -``` - OpenIM.iMManager.conversationManager.getConversationIDBySessionType( - sourceID: "", // 如果是单聊值传userID,如果是群聊groupID - sessionType: 1, // 如果是单聊值传1,如果是群聊值传2 - ).then((conversationID){ - // 会话ID - }); -``` - - - -- ##### setConversationRecvMessageOpt(设置免打扰模式) - -``` -OpenIM.iMManager.conversationManager.setConversationRecvMessageOpt( - conversationIDList: [], // 会话id列表 - status: 1, // 1:不接受消息;2:接受在线消息不接受离线消息;0:正常 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### getConversationRecvMessageOpt(查询免打扰状态) - -``` -/// 此方法已废弃,使用getOneConversation/getMultipleConversation方法替代 -OpenIM.iMManager.conversationManager.getConversationRecvMessageOpt( - conversationIDList: [], // 会话id列表 - ).then((list) { - // 返回列表 [{"conversationId":"single_13922222222","result":0}] - // result: 1:不接受消息;2:接受在线消息不接受离线消息;0:正常 - }); -``` - - - -- ##### setOneConversationPrivateChat(开启阅后即焚) - -``` -OpenIM.iMManager.conversationManager.setOneConversationPrivateChat( - conversationID:"", // 会话id - isPrivate:true,//true开启 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### deleteConversationFromLocalAndSvr(删除本地跟服务器端会话记录) - -``` -OpenIM.iMManager.conversationManager.deleteConversationFromLocalAndSvr( - conversationID:"", // 会话id - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### deleteAllConversationFromLocal(清空本地所有会话) - -``` -OpenIM.iMManager.conversationManager.deleteAllConversationFromLocal( - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### resetConversationGroupAtType(重置会话强提示标识位) - -``` -OpenIM.iMManager.conversationManager.resetConversationGroupAtType( - conversationID:"", // 会话id - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### getAtAllTag(@所有标识) - -``` -OpenIM.iMManager.conversationManager.getAtAllTag(); -``` - - - -- ##### setGlobalRecvMessageOpt(设置全局免打扰状态) - -``` -OpenIM.iMManager.conversationManager.setGlobalRecvMessageOpt( - status: status,// 0:正常;1:不接受消息;2:接受在线消息不接受离线消息; -); -``` - - - -- ##### simpleSort(自定义会话排序规则) - -``` -var list = OpenIM.iMManager.conversationManager.simpleSort([]);// 返回排序好的列表 -``` - - - -- ##### getFriendsInfo(根据userID查询好友资料) - -``` - OpenIM.iMManager.friendshipManager.getFriendsInfo( - uidList: [], // userId列表 - ).then((list) { - // List - }); -``` - - - -- ##### addFriend(发起好友申请) - -主动申请者收到OnFriendApplicationAdded - -被添加者收到OnFriendApplicationAdded - -``` - OpenIM.iMManager.friendshipManager.addFriend( - uid: "", // 用户id - reason: '', // 发起好友申请的描述信息 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### checkFriend(检查是否是好友) - -``` -OpenIM.iMManager.friendshipManager.checkFriend( - uidList: [], // userID 列表 - ).then((list) { - // List - }); -``` - - - -- ##### deleteFriend(删除好友) - -操作者收到OnFriendDeleted - -``` -OpenIM.iMManager.friendshipManager.deleteFriend( - uid: '', // userID - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### setFriendRemark(好友备注设置) - -操作者收到OnFriendInfoChanged - -``` - OpenIM.iMManager.friendshipManager.setFriendRemark( - uid: '', // 好友userID - remark: '', // 备注名 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### getFriendList(好友列表) - -返回的数据里包含已拉入黑名单的好友,可以根据isBlacklist字段筛选。 - -``` -OpenIM.iMManager.friendshipManager.getFriendList().then((list){ - // List 好友信息列表 -}); -``` - - - -- ##### getRecvFriendApplicationList(收到的好友申请) - -``` - OpenIM.iMManager.friendshipManager.getRecvFriendApplicationList().then((list) { - // List 申请列表 - }); -``` - - - -- ##### getSendFriendApplicationList(发出的好友申请) - -``` -OpenIM.iMManager.friendshipManager.getSendFriendApplicationList().then((list){ - // List 申请列表 - }); -``` - - - -- ##### addBlacklist(拉黑好友) - -操作者收到OnBlackAdded - -``` - OpenIM.iMManager.friendshipManager.addBlacklist( - uid: "", // 好友userID - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### getBlacklist(黑名单) - -``` -OpenIM.iMManager.friendshipManager.getBlacklist().then((list){ - // List - }); -``` - - - -- ##### removeBlacklist(移除黑名单) - -操作者收到OnBlackDeleted - -``` -OpenIM.iMManager.friendshipManager.removeBlacklist( - uid: "", // userID - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### acceptFriendApplication(接受好友申请) - -操作者收到OnFriendApplicationAccepted、OnFriendAdded - -申请者收到OnFriendApplicationAccepted、OnFriendAdded - -``` -OpenIM.iMManager.friendshipManager.acceptFriendApplication( - uid: "", // userID - handleMsg: '', // 备注信息 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### refuseFriendApplication(拒绝好友申请) - -操作者收到OnFriendApplicationRejected - -申请者收到OnFriendApplicationRejected - -``` - OpenIM.iMManager.friendshipManager.refuseFriendApplication( - uid: "", // userID - handleMsg: '', // 备注信息 - ).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### searchFriends(搜索好友) - -``` -var list = await OpenIM.iMManager.friendshipManager.searchFriends( - keywordList: [searchCtrl.text.trim()],//关键词 - isSearchNickname: true,//按昵称查找 - isSearchRemark: true,//按备注查找 - ); -``` - - - -- ##### inviteUserToGroup(邀请进组) - -直接进组无需同意。 - -被邀请者收到OnJoinedGroupAdded - -群成员(不包括被邀请者)收到OnGroupMemberAdded - -``` - OpenIM.iMManager.groupManager.inviteUserToGroup( - groupId: '', // 组ID - uidList: [], // 成员 userID 列表 - reason: '', // 备注信息 - ).then((list){ - // List - }); -} -``` - - - -- ##### kickGroupMember(移除组成员) - -被踢者收到OnJoinedGroupDeleted - -群成员收到OnGroupMemberDeleted - -``` -OpenIM.iMManager.groupManager.kickGroupMember( - groupId: '', // 组ID - uidList: [], // 成员 userID 列表 - reason: '', // 备注信息 -).then((list){ - // List - }); -``` - - - -- ##### getGroupMembersInfo(查询组成员信息) - -``` -OpenIM.iMManager.groupManager.getGroupMembersInfo( - groupId: '', // 组ID - uidList: [], // 成员 userID 列表 -).then((list){ - // List -}); -``` - - - -- ##### getGroupMemberList(组成员列表) - -``` -OpenIM.iMManager.groupManager.getGroupMemberList( - groupId: '', // 组ID - filter: 0, // 1普通成员, 2群主,3管理员 - offset: 0, // 偏移量,每次开始的index值 - count: 0, // 每次拉取的数量 -).then((list){ - // List -}); -``` - - - -- ##### getJoinedGroupList(获取已加入的群组) - -``` -OpenIM.iMManager.groupManager.getJoinedGroupList().then((list){ - // List -}); -``` - - - -- ##### isJoinedGroup(检查是否已入群) - -``` -OpenIM.iMManager.groupManager.isJoinedGroup( - gid: '', // 组ID -).then((joned) { - // true已加入;false未加入 -}); -``` - - - -- ##### createGroup(创建组) - -初始成员收到OnJoinedGroupAdded - -``` -OpenIM.iMManager.groupManager.createGroup( - groupName: '', // 组名 - faceUrl: '', // 头像 - notification: '', // 群公告 - introduction: '', // 群简介 - groupType: 0, // 类型 - ex: '', // 扩展信息 - list: [], // 成员角色集合 List -).then((groupInfo){ - // 返回组信息 GroupInfo -}); -``` - - - -- ##### setGroupInfo(修改组信息) - -群成员收到OnGroupInfoChanged - -``` -OpenIM.iMManager.groupManager.setGroupInfo( - groupID: '', - groupName: '', // 组名 - faceUrl: '', // 头像 - notification: '', // 群公告 - introduction: '', // 群简介 - ex: '', // 扩展信息 - needVerification: '',// 进群验证设置 -); -``` - - - -- ##### getGroupsInfo(根据id查询组信息) - -``` -OpenIM.iMManager.groupManager.getGroupsInfo( - gidList: [], // 组id集合 -).then((list){ - // List -}); -``` - - - -- ##### joinGroup(申请入群组) - -需要通过管理员同意。 - -申请者收到OnGroupApplicationAdded - -群主+管理员收到OnGroupApplicationAdded - -``` -OpenIM.iMManager.groupManager.joinGroup( - gid: '', // 组id - reason: '', // 入群备注信息 -); -``` - - - -- ##### quitGroup(退出组) - -退出者收到OnJoinedGroupDeleted - -群成员收到OnGroupMemberDeleted - -``` -OpenIM.iMManager.groupManager.quitGroup( - gid: '', // 组id -).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### transferGroupOwner(群转让) - -``` -OpenIM.iMManager.groupManager.transferGroupOwner( - gid: '', // 组ID - uid: '', // 新 owner userID -).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### getRecvGroupApplicationList(收到的入群申请) - -作为群主或者管理员,获取收到的群成员申请进群列表。 - -``` -OpenIM.iMManager.groupManager.getRecvGroupApplicationList().then((list){ - // List -}); -``` - - - -- ##### getSendGroupApplicationList(发出的入群申请) - -``` -OpenIM.iMManager.groupManager.getSendGroupApplicationList().then((list){ - // List -}); -``` - - - -- ##### acceptGroupApplication(接受入群申请) - -申请者收到OnJoinedGroupAdded OnGroupApplicationAccepted - -群成员(不包括申请者)收到OnGroupMemberAdded - -审批者(群主或者管理员)收到OnGroupMemberAdded OnGroupApplicationAccepted - -``` -OpenIM.iMManager.groupManager.acceptGroupApplication( - gid: '', // 组ID - uid: '', // 申请人userID - handleMsg: '', // 备注信息 -); -``` - - - -- ##### refuseGroupApplication(拒绝入群申请) - -申请者收到OnGroupApplicationRejected - -审批者(群主或者管理员)收到OnGroupApplicationRejected - -``` -OpenIM.iMManager.groupManager.refuseGroupApplication( - gid: '', // 组ID - uid: '', // 申请人userID - handleMsg: '', // 备注信息 -); -``` - - - -- ##### dismissGroup(解散群) - -``` -OpenIM.iMManager.groupManager.dismissGroup( - groupID: '', // 组ID -); -``` - - - -- ##### changeGroupMute(开启群禁言) - -``` -OpenIM.iMManager.groupManager.changeGroupMute( - groupID: '', // 组ID - mute:true, // 禁言 -); -``` - - - -- ##### changeGroupMemberMute(对群成员禁言) - -``` -OpenIM.iMManager.groupManager.changeGroupMemberMute( - groupID: '', // 组ID - userID:'', // 群成员userID - seconds:0, // 禁言时长s -); -``` - - - -- ##### setGroupMemberNickname(修改成员组昵称) - -``` -OpenIM.iMManager.groupManager.setGroupMemberNickname( - groupID: '', // 组ID - userID:'', // 群成员userID - groupNickname:'', // 群昵称 -); -``` - - - -- ##### searchGroups(搜索群) - -``` -List list = await OpenIM.iMManager.groupManager.searchGroups( - keywordList: [], // 关键词 - isSearchGroupID: true, // 以id搜索 - isSearchGroupName: false, // 以群名搜索 -); -``` - - - -- ##### setGroupMemberRoleLevel(设置群成员角色) - -``` -OpenIM.iMManager.groupManager.setGroupMemberRoleLevel( - groupID: groupID, - userID: userID, - roleLevel: GroupRoleLevel.member, -) -``` - - - -- ##### getGroupMemberListByJoinTime(根据加入时间分页获取组成员列表) - -``` -// 如:获取消息发送前入群的成员,用于查看消息未读列表 -var list = await OpenIM.iMManager.groupManager.getGroupMemberListByJoinTime( - groupID: message.groupID!, - joinTimeEnd: message.sendTime! ~/ 1000, - offset: 0, - count: 40, - excludeUserIDList: [...hasReadIDList, OpenIM.iMManager.uid],// 排除的人员 -); -``` - - - -- ##### sendMessage(发送消息) - -``` -OpenIM.iMManager.messageManager.sendMessage( - message: Message(), // 消息体 - userID: '', // 接受消息的userID - groupID: '', // 接受消息的群ID - offlinePushInfo: OfflinePushInfo(), // 离线推送的消息备注 -).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### getHistoryMessageList(获取聊天记录) - -``` -OpenIM.iMManager.messageManager.getHistoryMessageList( - userID: '', // 单聊对象的userID - groupID: '', // 群聊的组id - startMsg: null, // 消息体 - count: 0, // 每次拉取的数量 -).then((list){ - // List -}); -``` - -注:消息列表list,index == list.length -1 是最新的一条消息。 index == 0 是从最新的这条记录后的第19条。所以startMsg首次传null, - -下次就是list.first(index == 0),以此类推。 - - - -- ##### revokeMessage(撤回消息) - -撤回成功需要当前用户从列表里移除Message然后更新ui,而另外一方通过撤回监听(onRecvMessageRevoked)移除。 - -``` -OpenIM.iMManager.messageManager.revokeMessage( - message: Message(), // 消息体 -).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### deleteMessageFromLocalStorage(删除单条消息) - -``` -OpenIM.iMManager.messageManager.deleteMessageFromLocalStorage( - message: Message(), -).then((_) { - // 成功,从列表里移除Message,然后更新ui - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### insertSingleMessageToLocalStorage(向本地插入一条消息) - -``` -OpenIM.iMManager.messageManager.insertSingleMessageToLocalStorage( - receiverID: '', // 接收者userID - senderID: '', // 发送者userID - message: Message(), // 消息体 -); -``` - - - -- ##### markC2CMessageAsRead(标记c2c消息已读) - -当调用此方法后,已读的消息会通过已读回执(onRecvC2CReadReceipt)告诉对方。 - -``` -OpenIM.iMManager.messageManager.markC2CMessageAsRead( - userID: '', // 接收者 userID - messageIDList: [], // 已读的消息id列表 -); -``` - - - -- ##### typingStatusUpdate(正在输入提示) - -会通过onRecvNewMessage回调 - -``` -OpenIM.iMManager.messageManager.typingStatusUpdate( - userID: '', // 接收者 userID - msgTip: '', // 自定义提示内容 -); -``` - - - -- ##### clearC2CHistoryMessage(清空c2c聊天记录) - -``` -OpenIM.iMManager.messageManager.clearC2CHistoryMessage( - uid: "", // userID -).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### clearGroupHistoryMessage(清空群聊天记录) - -``` -OpenIM.iMManager.messageManager.clearGroupHistoryMessage( - gid: '', // 群ID -).then((_) { - // 成功 - }).catchError((_){ - // 失败 - }); -``` - - - -- ##### createTextMessage(文本消息) - -``` -var message = await OpenIM.iMManager.messageManager.createTextMessage( - text: '', // 发送的内容 -); -``` - - - -- ##### createTextAtMessage(@消息) - -``` -var message = await OpenIM.iMManager.messageManager.createTextAtMessage( - text: '', // 发送的内容 - atUserIDList: [], // 被@到的用户ID集合 - atUserInfoList: [], // 被@到的用户Info集合 - quoteMessage: null, //被引用的消息体 - ); -``` - - - -- ##### createImageMessage(图片消息,相对路径) - -``` -var message = await OpenIM.iMManager.messageManager.createImageMessage( - imagePath: '', // 相对路径 -); -``` - -注:initSDK时传入了数据缓存(dataDir)路径,如路径:A,这时需要你将图片复制到A路径下后,如 A/pic/a.png路径,imagePath的值:“/pic/a.png”。同以下其他消息的相对路径。 - - - -- ##### createImageMessageFromFullPath(图片消息全路径) - -``` -var message = await OpenIM.iMManager.messageManager.createImageMessageFromFullPath( - imagePath: '', // 绝对路径 -); -``` - - - -- ##### createSoundMessage(语音消息,相对路径) - -``` -var message = await OpenIM.iMManager.messageManager.createSoundMessage( - soundPath: '', // 相对路径 - duration: 0, // 时长s -); -``` - - - -- ##### createSoundMessageFromFullPath(语音消息全路径) - -``` -var message = await OpenIM.iMManager.messageManager.createSoundMessageFromFullPath( - soundPath: '', // 绝对路径 - duration: 0, // 时长s -); -``` - - - -- ##### createVideoMessage(视频消息,相对路径) - -``` -var message = await OpenIM.iMManager.messageManager.createVideoMessage( - videoPath: '', // 相对路径 - videoType: '', // minetype - duration: 0, // 时长s - snapshotPath: '', // 站位缩略图 -); -``` - - - -- ##### createVideoMessageFromFullPath(视频消息全路径) - -``` -var message = await OpenIM.iMManager.messageManager.createVideoMessageFromFullPath( - videoPath: '', // 绝对路径 - videoType: '', // minetype - duration: 0, // 时长s - snapshotPath: '', // 站位缩略图 -); -``` - - - -- ##### createFileMessage(文件消息,相对路径) - -``` -var message = await OpenIM.iMManager.messageManager.createFileMessage( - filePath: '', // 相对路径 - fileName: '', // 文件名 -); -``` - - - -- ##### createFileMessageFromFullPath(文件消息全路径) - -``` -var message = await OpenIM.iMManager.messageManager.createFileMessageFromFullPath( - filePath: '', // 绝对路径 - fileName: '', // 文件名 -); -``` - - - -- ##### createForwardMessage(转发消息) - -``` -var message = await OpenIM.iMManager.messageManager.createForwardMessage( - message: Message(), // 被转发的消息体 -); -``` - - - -- ##### createMergerMessage(合并消息) - -``` -var message = await OpenIM.iMManager.messageManager.createMergerMessage( - messageList: [], // 被转发的消息列表 - title: '', // 标题 - summaryList: [], // 每一条消息摘要 -); -``` - - - -- ##### createLocationMessage(位置消息) - -``` -var message = await OpenIM.iMManager.messageManager.createLocationMessage( - latitude: 0,// 纬度 - longitude: 0, // 经度 - description: '', // 位置描述信息 -); -``` - - - -- ##### createCustomMessage(自定义消息) - -``` -var message = await OpenIM.iMManager.messageManager.createCustomMessage( - data: '', // 自定义内容 - extension: '', // 扩展信息 - description: '', // 描述消息 -); -``` - - - -- ##### createQuoteMessage(引用消息/消息回复) - -``` -var message = await OpenIM.iMManager.messageManager.createQuoteMessage( - text: '', // 回复内容 - quoteMsg: Message(), // 被回复的消息体 -); -``` - - - -- ##### createCardMessage(名片消息) - -``` -OpenIM.iMManager.messageManager.createCardMessage( - data: {}, // 自定义内容 -); -``` - - - -- ##### searchLocalMessages(全局搜索) - -``` -SearchResult result = await OpenIM.iMManager.messageManager.searchLocalMessages( - conversationID: null, // 根据会话查询,如果是全局搜索传null - keywordList: [], // 搜索关键词列表,目前仅支持一个关键词搜索 - keywordListMatchType: 0, // 关键词匹配模式,1代表与,2代表或,暂时未用 - senderUserIDList: [], // 指定消息发送的uid列表 暂时未用 - messageTypeList: [], // 消息类型列表 - searchTimePosition: 0, // 搜索的起始时间点。默认为0即代表从现在开始搜索。UTC 时间戳,单位:秒 - searchTimePeriod: 0, // 从起始时间点开始的过去时间范围,单位秒。默认为0即代表不限制时间范围,传24x60x60代表过去一天 - pageIndex: 1, // 当前页数 - count: 10, // 每页数量 -); -``` - - - -- ##### deleteMessageFromLocalAndSvr(删除本地跟服务器聊天记录) - -``` -OpenIM.iMManager.messageManager.createCardMessage( - message: null, // 消息体 -); -``` - - - -- ##### deleteAllMsgFromLocal(清空所有本地聊天记录) - -``` -OpenIM.iMManager.messageManager.deleteAllMsgFromLocal( -); -``` - - - -- ##### deleteAllMsgFromLocalAndSvr(清空本地跟服务器所有聊天记录) - -``` -OpenIM.iMManager.messageManager.deleteAllMsgFromLocalAndSvr( -); -``` - - - -- ##### markMessageAsReadByConID(标记会话里某些消息为已读) - -``` -OpenIM.iMManager.messageManager.markMessageAsReadByConID( - conversationID: null, // 会话ID - messageIDList: [], // 消息id列表 -); -``` - - - -- ##### clearC2CHistoryMessageFromLocalAndSvr(清空单聊本地跟服务端聊天记录) - -``` -OpenIM.iMManager.messageManager.clearC2CHistoryMessageFromLocalAndSvr( - uid: null, // 用户id -); -``` - - - -- ##### clearGroupHistoryMessageFromLocalAndSvr(清空群聊本地跟服务端聊天记录) - -``` -OpenIM.iMManager.messageManager.clearGroupHistoryMessageFromLocalAndSvr( - gid: null, // 群组id -); -``` - - - -- ##### getHistoryMessageListReverse(获取新的聊天记录) - -``` -// 获取聊天记录(以startMsg为节点,新收到的聊天记录),用在全局搜索定位某一条消息,然后此条消息后新增的消息 -OpenIM.iMManager.messageManager.getHistoryMessageListReverse( - userID: '', // 单聊对象的userID - groupID: '', // 群聊的组id - startMsg: null, // 消息体 - count: 0, // 每次拉取的数量 -).then((list){ - // List -}); -``` - - - -- ##### signalingInvite(邀请个人加入音视频通话) - -``` -SignalingCertificate sc = await OpenIM.iMManager.signalingManager.signalingInvite( - info: null, // 信令对象SignalingInfo -); -``` - - - -- ##### signalingInviteInGroup(邀请群成员加入音视频通话) - -``` -SignalingCertificate sc = await OpenIM.iMManager.signalingManager.signalingInviteInGroup( - info: null, // 信令对象SignalingInfo -); -``` - - - -- ##### signalingAccept(接受邀请) - -``` -SignalingCertificate sc = await OpenIM.iMManager.signalingManager.signalingAccept( - info: null, // 信令对象SignalingInfo -); -``` - - - -- ##### signalingReject(拒绝邀请) - -``` -OpenIM.iMManager.signalingManager.signalingReject( - info: null, // 信令对象SignalingInfo -); -``` - - - -- ##### signalingCancel(取消) - -``` -OpenIM.iMManager.signalingManager.signalingCancel( - info: null, // 信令对象SignalingInfo -); -``` - - - -- ##### signalingHungUp(挂断) - -``` -OpenIM.iMManager.signalingManager.signalingHungUp( - info: null, // 信令对象SignalingInfo -); -``` - - - -- ##### getSubDept(获取子部门列表,返回当前部门下的一级子部门) - -``` -var list = await OpenIM.iMManager.organizationManager.getSubDept( - departmentID: '', // 部门id - offset: 0, // 开始下标 - count: 40, // 每页大小 -); -``` - - - -- ##### getDeptMember(获取部门下的成员列表,返回当前部门下的一级成员) - -``` -var list = await OpenIM.iMManager.organizationManager.getDeptMember( - departmentID: '', // 部门id - offset: 0, // 开始下标 - count: 40, // 每页大小 -); -``` - - - -- ##### getUserInDept(获取成员所在的部门) - -``` -var list = await OpenIM.iMManager.organizationManager.getUserInDept( - userID: '', // 成员id -); -``` - - - -- ##### getDeptMemberAndSubDept(获取部门下的子部门跟员工) - -``` -var detail = await OpenIM.iMManager.organizationManager.getDeptMemberAndSubDept( - departmentID: '', // 部门id -); -``` - - - -- ##### getDeptInfo(查询部门信息) - -``` -var info = await OpenIM.iMManager.organizationManager.getDeptInfo( - departmentID: '', // 部门id -); -``` - - - -- ##### searchOrganization(搜索组织人员) - -``` -var result = await OpenIM.iMManager.organizationManager.searchOrganization( - keyWord: searchCtrl.text.trim(), - isSearchUserName: true, - isSearchEnglishName: true, - isSearchPosition: true, - offset: offset, - count: count, -); -``` - - - -- ##### getWorkMomentsUnReadCount(获取朋友圈未读消息总数) - -``` -var count = await OpenIM.iMManager.workMomentsManager.getWorkMomentsUnReadCount(); -``` - - - -- ##### getWorkMomentsNotification(获取朋友圈通知列表) - -``` -var list = await OpenIM.iMManager.workMomentsManager.getWorkMomentsNotification( - offset:0,//开始下标 - count:40,//每页大小 -); -``` - - - -- ##### clearWorkMomentsNotification(清除朋友圈通知列表) - -``` -OpenIM.iMManager.workMomentsManager.clearWorkMomentsNotification(); -``` - - - -- ##### 监听器设置 - -``` -OpenIM.iMManager - ..userManager.setUserListener(OnUserListener( - onSelfInfoUpdated: (userInfo) { - // 当前登录用户资料变更回调 - }, - )) - ..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener( - onRecvNewMessage: (message) { - // 收到新消息,界面添加新消息 - }, - onRecvMessageRevoked: (messageID) { - // 消息成功撤回,从界面移除消息 - }, - onRecvC2CReadReceipt: (list) { - // 消息被阅读回执,将消息标记为已读 - }, - )) - ..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener( - onProgress: (messageID, progress) { - // 消息发送进度回调 - }, - )) - ..friendshipManager.setFriendshipListener(OnFriendshipListener( - onFriendApplicationRejected: (applicationInfo) { - // 发出或收到的好友申请被拒绝 - }, - onFriendApplicationDeleted: (applicationInfo) { - // 发出或收到的好友申请被删除 - }, - onFriendApplicationAdded: (applicationInfo) { - // 发出或收到的好友申请被添加 - }, - onFriendApplicationAccepted: (applicationInfo) { - // 发出或收到的好友申请已同意 - }, - onFriendAdded: (frinedInfo) { - // 好友被添加 - }, - onFriendDeleted: (frinedInfo) { - // 好友被删除 - }, - onFriendInfoChanged: (frinedInfo) { - // 朋友的资料发生变化 - }, - onBlacklistDeleted: (blackInfo) { - // 从黑名单删除 - }, - onBlacklistAdded: (blackInfo) { - // 拉入黑名单 - }, - )) - ..conversationManager.setConversationListener(OnConversationListener( - onNewConversation: (list) { - // 新增会话 - }, - onConversationChanged: (list) { - // 已添加的会话发送改变 - }, - onTotalUnreadMessageCountChanged: (count) { - // 未读消息数发送变化 - }, - )) - ..groupManager.setGroupListener(OnGroupListener( - onGroupMemberInfoChanged: (memberInfo) { - // 组成员信息发生变化 - }, - onGroupMemberDeleted: (memberInfo) { - // 组成员退出 - }, - onGroupMemberAdded: (memberInfo) { - // 组成员进入 - }, - onGroupApplicationRejected: (applicationInfo) { - // 发出或收到的组申请被拒绝 - }, - onGroupApplicationDeleted: (applicationInfo) { - // 发出或收到的组申请被删除 - }, - onGroupApplicationAdded: (applicationInfo) { - // 发出或收到的组申请有新增 - }, - onGroupApplicationAccepted: (applicationInfo) { - // 发出或收到的组申请被接受 - }, - onJoinedGroupDeleted: (groupInfo) { - // 退出群:退出者收到;踢出群:被踢者收到 - }, - onJoinedGroupAdded: (groupInfo) { - // 创建群: 初始成员收到;邀请进群:被邀请者收到 - }, - onGroupInfoChanged: (groupInfo) { - // 组资料变更 - }, - )) - ..signalingManager.setSignalingListener(OnSignalingListener( - onReceiveNewInvitation: (info) { - // 被邀请者收到:音视频通话邀请 - }, - onInviteeRejected: (info) { - // 邀请者收到:被邀请者拒绝音视频通话 - }, - onInviteeAccepted: (info) { - // 邀请者收到:被邀请者同意音视频通话 - }, - onInvitationTimeout: (info) { - // 邀请者收到:被邀请者超时未接通 - }, - onInvitationCancelled: (info) { - // 被邀请者收到:邀请者取消音视频通话 - }, - )); -``` -