2021-07-20 18:11:42 +08:00
2021-06-29 18:31:09 +08:00
2021-07-19 18:30:34 +08:00
2021-07-19 18:30:34 +08:00
2021-07-20 11:47:21 +08:00
2021-07-20 18:07:55 +08:00
2021-07-20 18:07:55 +08:00
2021-06-29 18:17:11 +08:00
2021-06-29 18:17:11 +08:00
2021-06-29 18:17:11 +08:00
2021-06-29 18:17:11 +08:00
2021-07-16 10:51:13 +08:00
2021-07-20 18:06:43 +08:00

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不为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 platform平台IMPlatform
ipApi接口地址
ipWsWebSocket地址
dbPath数据本地存储路径以目录结尾
unInitSDK
login 登录 uid当前用户userID
token用户的token
logout 登出
getLoginStatus 登录状态
getLoginUid 当前uid
getLoginUserInfo 当前用户信息
setSelfInfo 修改资料 infoUserInfo用户信息
getUsersInfo 根据uid获取用户资料 uidListuserId列表
forceReConn 强制重连

会话管理OpenIM.iMManager.conversationManager

方法 描述 参数说明
setConversationListener 会话监听
getAllConversationList 获取所有会话
getSingleConversation 获取单个会话 sourceID单聊值为userID群聊值为groupID
sessionType单聊值为1群聊值为2
getMultipleConversation 获取多个会话 conversationIDList会话id列表
deleteConversation 删除会话 conversationID会话id
setConversationDraft 会话草稿 draftText草稿
pinConversation 会话置顶 isPinnedtrue置顶false取消置顶

好友关系管理OpenIM.iMManager.friendshipManager

方法 描述 参数说明
setFriendshipListener 关系监听
getFriendsInfo 获取好友信息 uidList要查询的用户的userID集合
addFriend 添加朋友 uid对方的userID
reason添加理由
getFriendApplicationList 获取好友申请列表
getFriendList 获取好友列表
setFriendInfo 修改朋友备注 infoUserInfo{"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 拒绝群邀请
Description
No description provided
Readme 191 MiB
Languages
C++ 73.3%
Dart 14.4%
Swift 5.5%
Java 5.1%
CMake 1.1%
Other 0.6%