2021-07-20 14:53:28 +08:00

263 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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不为nullgroupID为null获取的是单聊消息
// 如果userID为nullgroupID不为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群聊值为groupIDsessionType(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 | 拒绝群邀请 |