263 lines
9.7 KiB
Markdown
263 lines
9.7 KiB
Markdown
# 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<Message> chatMsgList = List.empty(growable: true);
|
||
|
||
/// 自定义消息监听
|
||
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 |
|
||
| unInitSDK | |
|
||
| login | 登录 |
|
||
| logout | 登出 |
|
||
| getLoginStatus | 登录状态 |
|
||
| getLoginUid | 当前uid |
|
||
| getLoginUserInfo | 当前用户信息 |
|
||
| setSelfInfo | 修改资料 |
|
||
| getUsersInfo | 根据uid获取用户资料 |
|
||
| forceReConn | 强制重连 |
|
||
|
||
|
||
|
||
#### 会话管理:OpenIM.iMManager.conversationManager
|
||
|
||
| 方法 | 描述 |
|
||
| ----------------------- | ------------------------------------------------------------ |
|
||
| setConversationListener | 会话监听 |
|
||
| getAllConversationList | 获取所有会话 |
|
||
| getSingleConversation | 获取单个会话sourceID(String):单聊值为userID,群聊值为groupID;sessionType(int):单聊值为1,群聊值为2 |
|
||
| getMultipleConversation | 获取多个会话 |
|
||
| deleteConversation | 删除会话 |
|
||
| setConversationDraft | 会话草稿 |
|
||
| pinConversation | 会话置顶 |
|
||
|
||
|
||
|
||
#### 好友关系管理:OpenIM.iMManager.friendshipManager
|
||
|
||
| 方法 | 描述 |
|
||
| ------------------------ | --------------------------------------------------- |
|
||
| setFriendshipListener | 关系监听 |
|
||
| getFriendsInfo | 获取好友信息 |
|
||
| addFriend | 添加朋友 |
|
||
| getFriendApplicationList | 获取好友申请列表 |
|
||
| getFriendList | 获取好友列表 |
|
||
| setFriendInfo | 修改朋友备注 {"uid" : "userId", "comment" : "备注"} |
|
||
| addToBlackList | 加入黑名单 |
|
||
| getBlackList | 获取黑名单列表 |
|
||
| deleteFromBlackList | 从黑名单移除 |
|
||
| checkFriend | 检查好友关系 |
|
||
| deleteFromFriendList | 移除好友 |
|
||
| acceptFriendApplication | 接受好友申请 |
|
||
| refuseFriendApplication | 拒绝好友申请 |
|
||
|
||
|
||
|
||
#### 消息管理:OpenIM.iMManager.messageManager
|
||
|
||
| 方法 | 描述 |
|
||
| --------------------------------- | ---------------------------------------------- |
|
||
| addAdvancedMsgListener | 添加消息监听 |
|
||
| removeAdvancedMsgListener | 移除消息监听 |
|
||
| setMsgSendProgressListener | 消息发送进度监听 |
|
||
| sendMessage | 发送消息,单聊useID, 群聊groupID |
|
||
| getHistoryMessageList | 获取历史消息,startMsg分页传列表里的第一条消息 |
|
||
| revokeMessage | 消息撤回 |
|
||
| deleteMessageFromLocalStorage | 删除消息 |
|
||
| insertSingleMessageToLocalStorage | 插入消息 |
|
||
| findMessages | 根据消息id查询消息 |
|
||
| markSingleMessageHasRead | 标记消息为已读 |
|
||
| markGroupMessageHasRead | 标记消息为已读 |
|
||
| createTextMessage | 创建文本消息 |
|
||
| createTextAtMessage | 创建at消息,atUserList为at的userId列表 |
|
||
| createImageMessage | 创建图片消息 |
|
||
| createSoundMessage | 创建语音消息 |
|
||
| createVideoMessage | 创建视频消息 |
|
||
| createFileMessage | 创建文件消息 |
|
||
| createMergerMessage | 创建合并消息 |
|
||
| createForwardMessage | 创建转发消息 |
|
||
| getTotalUnreadMsgCount | 获取消息未读数 |
|
||
|
||
|
||
|
||
#### 组管理: OpenIM.iMManager.groupManager
|
||
|
||
| 方法 | 描述 |
|
||
| ----------------------- | ------------------ |
|
||
| setGroupListener | 设置组关系监听 |
|
||
| inviteUserToGroup | 邀请进组 |
|
||
| kickGroupMember | 剔除组成员 |
|
||
| getGroupMembersInfo | 获取组成员信息 |
|
||
| getGroupMemberList | 获取组成员 |
|
||
| getJoinedGroupList | 获取已加入的群组 |
|
||
| isJoinedGroup | 判断是否已加入群组 |
|
||
| createGroup | 创建群 |
|
||
| setGroupInfo | 设置群资料 |
|
||
| getGroupsInfo | 获取群信息 |
|
||
| joinGroup | 加入群 |
|
||
| quitGroup | 退出群 |
|
||
| transferGroupOwner | 群权限转移 |
|
||
| getGroupApplicationList | 获取群申请列表 |
|
||
| acceptGroupApplication | 接受群邀请 |
|
||
| refuseGroupApplication | 拒绝群邀请 |
|