flutter_openim_sdk

下载演示

flutter_openim_widget

Chinese

一个用于Android和iOS的Flutter IM插件。

入门

1,在yaml中添加依赖

   flutter_openim_sdk: ^1.0.4

2,导入包

  import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';

3,初始化配置

// Initialize SDK
   OpenIM.iMManager
      ..initSDK(
        platform: IMPlatform.ios,
    	ipApi: 'Api interface address',
        ipWs: 'WebSocket address',
        dbPath: 'Database directory',
        listener: OnInitSDKListener(
          connecting: () {},
          connectFailed: (code, error) {},
          connectSuccess: () {},
          kickedOffline: () {},
          userSigExpired: () {},
          selfInfoUpdated: (user) {},
        ),
      )

      // Add message listener (remove when not in use)
      ..messageManager.addAdvancedMsgListener(OnAdvancedMsgListener(
        recvMessageRevoked: (id) {},
        recvC2CReadReceipt: (list) {},
        recvNewMessage: (msg) {},
      ))

      // Set up message sending progress listener
      ..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
        progressCallback: (id, progress) {},
      ))

      // Set up friend relationship listener
      ..friendshipManager.setFriendshipListener(OnFriendshipListener(
        blackListAdd: (u) {},
        blackListDeleted: (u) {},
        friendApplicationListAccept: (u) {},
        friendApplicationListAdded: (u) {},
        friendApplicationListDeleted: (u) {},
        friendApplicationListReject: (u) {},
        friendInfoChanged: (u) {},
        friendListAdded: (u) {},
        friendListDeleted: (u) {},
      ))

      // Set up conversation listener
      ..conversationManager.setConversationListener(OnConversationListener(
        conversationChanged: (list) {},
        newConversation: (list) {},
        totalUnreadMsgCountChanged: (count) {},
        syncServerFailed: () {},
        syncServerFinish: () {},
        syncServerStart: () {},
      ))

      // Set up group listener
      ..groupManager.setGroupListener(OnGroupListener(
        applicationProcessed: (groupId, opUser, agreeOrReject, opReason) {},
        groupCreated: (groupId) {},
        groupInfoChanged: (groupId, info) {},
        memberEnter: (groupId, list) {},
        memberInvited: (groupId, opUser, list) {},
        memberKicked: (groupId, opUser, list) {},
        memberLeave: (groupId, info) {},
        receiveJoinApplication: (groupId, info, opReason) {},
      ));

4,登录

 OpenIM.iMManager.login(uid: uid, token: token).then((value){
 	// login successful
 });

5,获取会话列表

 OpenIM.iMManager.conversationManager.getAllConversationList().then((list) {
 	// Return to the conversation list
 });

6,获取联系人列表

 OpenIM.iMManager.friendshipManager.getFriendList().then((list) {
   	// Return to friends list
 });

7,获取聊天记录

List<Message> chatMsgList = List.empty(growable: true);
  
/// Custom message listener, the arrival of a new message will trigger the onNewMessage method callback
class CustomAdvancedMsgListener extends AdvancedMsgListener {
  final ValueChanged<Message>? onNewMessage;

  CustomAdvancedMsgListener({
    this.onNewMessage,
  });

  @override
  void onRecvNewMessage(Message msg) {
    if (null != onNewMessage) onNewMessage!(msg);
  }
}
  • 历史新闻

  // If userID is not null and groupID is null, get a single chat message list
  // If the userID is null and the groupID is not null, get a group chat message list
  OpenIM.iMManager.messageManager.getHistoryMessageList(
          userID: uid,//User id
          startMsg: startMsg,//Last message, take chatMsgList[0]
          groupID: gid,//Group id
          count: 12,//Page Size
      )
      .then((list) => chatMsgList.addAll(list));
      
  • 最新新闻

// Create a message listener
// After entering the chat page, you need to listen for new messages and then render the UI
// Each chat window has a unique uid (user id) or gid (group id)
// Determine whether the received message belongs to the current window according to uid or gid
var msgListener = CustomAdvancedMsgListener(onNewMessage: (message) {
     // If the sender user id is equal to the user id of the current chat page,
     // or the group id is equal to the current group id of the current chat page
     if (message.sendID == uid || message.groupID == gid) {
        if (!chatMsgList.contains(message)) {
	 			 // New message in current chat page
          chatMsgList.add(event.message);
        }
     }
});

// Add message listener
OpenIM.iMManager.messageManager.addAdvancedMsgListener(msgListener);

// Remove message monitoring
// After adding a message listener, if the page disposes, please remove the listener
// OpenIM.iMManager.messageManager.removeAdvancedMsgListener(msgListener);

8,发送消息

// Create message
var message = await OpenIM.iMManager.messageManager.createTextMessage(
     text: 'I am the content of the message',
 );
// Send
OpenIM.iMManager.messageManager.sendMessage(
   message: message,
   onlineUserOnly: false,
   userID: uid, // Single chat value is not null
   groupID: gid, // The group chat value is not null
 ).then((v) {
   // Sent successfully
 }).catchError((e){
   // Failed to send
 });

9,登出

OpenIM.iMManager.logout();

OpenIM.iMManager

method 描述
initSDK 初始化SDK
unInitSDK
login 登录
logout 登出
getLoginStatus 登录状态
getLoginUid 当前用户ID
getLoginUserInfo 当前用户信息
setSelfInfo 修改当前用户信息
getUsersInfo 通过用户ID获取用户信息
forceReConn 强制重连

OpenIM.iMManager.conversationManager

method 描述
setConversationListener 监听器
getAllConversationList 获取所有会话
getSingleConversation 获取单个会话
getMultipleConversation 获取多个会话
deleteConversation 删除会话
setConversationDraft 设置会话草稿
pinConversation 置顶会话

OpenIM.iMManager.friendshipManager

method 描述
setFriendshipListener 监听器
getFriendsInfo 获取好友信息
addFriend 添加好友
getFriendApplicationList 获取好友申请列表
getFriendList 获取好友列表
setFriendInfo 编辑好友备注
addToBlackList 添加到黑名单
getBlackList 获取黑名单列表
deleteFromBlackList 从黑名单移除
checkFriend 检查好友关系
deleteFromFriendList 从好友列表移除
acceptFriendApplication 接受好友申请
refuseFriendApplication 拒绝好友申请

OpenIM.iMManager.messageManager

method 描述
addAdvancedMsgListener 添加消息监听器
removeAdvancedMsgListener 移除消息监听器
setMsgSendProgressListener 消息发送进度监听器
sendMessage 发送消息
getHistoryMessageList 获取历史消息
revokeMessage 撤回消息
deleteMessageFromLocalStorage 删除消息
insertSingleMessageToLocalStorage 插入消息
findMessages 通过ID查询消息
markSingleMessageHasRead 标记单聊消息已读
markGroupMessageHasRead 标记群聊消息已读
markC2CMessageAsRead 标记c2c消息已读
typingStatusUpdate 输入状态更新
createTextMessage 创建文本消息
createTextAtMessage 创建@消息
createImageMessage 创建图片消息
createSoundMessage 创建语音消息
createVideoMessage 创建视频消息
createFileMessage 创建文件消息
createMergerMessage 创建合并消息
createForwardMessage 创建转发消息
getTotalUnreadMsgCount 获取未读消息总数

OpenIM.iMManager.groupManager

method 描述
setGroupListener 监听器
inviteUserToGroup 邀请用户进群
kickGroupMember 踢出群成员
getGroupMembersInfo 获取群成员信息
getGroupMemberList 获取群成员列表
getJoinedGroupList 获取已加入的群
isJoinedGroup 检查您是否已加入该群
createGroup 创建群
setGroupInfo 设置群信息
getGroupsInfo 获取群信息
joinGroup 加入群
quitGroup 退出群
transferGroupOwner 群权限转让
getGroupApplicationList 获取群申请列表
acceptGroupApplication 接受群邀请
refuseGroupApplication 拒绝群邀请

GitHub

查看 Github