# flutter_openim_sdk [![pub package](https://img.shields.io/pub/v/flutter_openim_sdk.svg)](https://pub.flutter-io.cn/packages/flutter_openim_sdk) [![Generic badge](https://img.shields.io/badge/platform-android%20|%20ios%20-blue.svg)](https://pub.dev/packages/flutter_openim_sdk) [![GitHub license](https://img.shields.io/github/license/OpenIMSDK/Open-IM-SDK-Flutter)](https://github.com/OpenIMSDK/Open-IM-SDK-Flutter/blob/main/LICENSE) A flutter im plugin for android and ios. #### [中文文档](README.zh-cn.md) #### [demo](https://github.com/OpenIMSDK/Open-IM-Flutter-Demo.git) | [widget](https://github.com/hrxiang/flutter_openim_widget.git) ![Android](https://www.pgyer.com/app/qrcode/OpenIM) ## Getting Started #### 1,Add dependency in yaml flutter_openim_sdk: latest #### 2,Import package import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; #### 3, Init config ``` // Initialize SDK OpenIM.iMManager ..initSDK( platform: Platform.isAndroid ? IMPlatform.android : IMPlatform.ios, apiAddr: '', wsAddr: '', dataDir: '', listener: OnConnectListener(), ) // Set up current user info changed listener ..userManager.setUserListener(OnUserListener()) // Add message listener (remove when not in use) ..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener()) // Set up message sending progress listener ..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener()) // Set up friend relationship listener ..friendshipManager.setFriendshipListener(OnFriendshipListener()) // Set up conversation listener ..conversationManager.setConversationListener(OnConversationListener()) // Set up group listener ..groupManager.setGroupListener(OnGroupListener( )); ``` #### 4, Log in ``` OpenIM.iMManager.login(uid: uid, token: token).then((value){ // login success }); ``` #### 5,Get a list of conversations ``` OpenIM.iMManager.conversationManager.getAllConversationList().then((list) { }); ``` #### 6,Get friend list ``` OpenIM.iMManager.friendshipManager.getFriendList().then((list) { }); ``` #### 7,Get chat history ``` // 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: count,//Page Size ) .then((list){}); ``` #### 8,Send a message ``` // Create message var message = await OpenIM.iMManager.messageManager.createTextMessage( text: 'I am the content of the message', ); // Send OpenIM.iMManager.messageManager.sendMessage( message: message, offlinePushInfo: offlinePushInfo, userID: uid, // Single chat value is not null groupID: gid, // The group chat value is not null ).then((v) { }).catchError((e){ }); ``` #### 9,Sign out ``` OpenIM.iMManager.logout(); ``` #### OpenIM.iMManager | method | description | | ---------------- | ------------------------ | | initSDK | Initialize SDK | | unInitSDK | | | login | Log in | | logout | Sign out | | getLoginStatus | Login status | | getLoginUid | Current user id | | getLoginUserInfo | Current user information | #### OpenIM.userManager | method | description | | --------------- | --------------------------------------------------- | | setSelfInfo | Modify current user information | | getUsersInfo | Get user information by user id | | getSelfUserInfo | Get the information of the currently logged in user | #### OpenIM.iMManager.conversationManager | method | description | | ------------------------------ | ------------------------------------------------------------ | | setConversationListener | Listener | | getAllConversationList | Get all conversation | | getConversationListSplit | Paging to get conversation | | getOneConversation | Get a conversation, if it doesn't exist it will be created automatically | | getMultipleConversation | Get conversation list by id list | | deleteConversation | Delete conversation by id | | setConversationDraft | Set conversation draftText | | pinConversation | Pinned conversation | | markGroupMessageHasRead | Mark group chat messages as read | | getTotalUnreadMsgCount | Get the total number of unread messages | | getConversationIDBySessionType | Query conversation id | | setConversationRecvMessageOpt | Setup message do not disturb | | getConversationRecvMessageOpt | Message do not disturb status | #### OpenIM.iMManager.friendshipManager | method | description | | ---------------------------- | ------------------------------------------------------------ | | setFriendshipListener | Set up a friend relationship listener | | getFriendsInfo | Get friend info by user id | | addFriend | Send an friend application | | getRecvFriendApplicationList | Get someone's request to add me as a friend | | getSendFriendApplicationList | Get friend requests from me | | getFriendList | Find all friends including those who have been added to the blacklist | | setFriendRemark | Modify friend remark name | | addBlacklist | Add friends to blacklist | | getBlacklist | Get blacklist list | | removeBlacklist | Remove from blacklist | | checkFriend | Determine if there is a friendship by userId | | deleteFriend | Dissolve friendship from friend list | | acceptFriendApplication | Accept application of be friend | | refuseFriendApplication | Refuse application of be friend | #### OpenIM.iMManager.messageManager | method | description | | --------------------------------- | ------------------------------------------ | | setAdvancedMsgListener | Set a message listener | | setMsgSendProgressListener | Set up message sending progress monitoring | | sendMessage | Send a message to user or to group | | getHistoryMessageList | Find all history message | | revokeMessage | Revoke the sent information | | deleteMessageFromLocalStorage | Delete message | | insertSingleMessageToLocalStorage | Insert message | | markC2CMessageAsRead | Mark c2c message as read | | typingStatusUpdate | Typing prompt | | createTextMessage | Create text message | | createTextAtMessage | Create @ message | | createImageMessage | Create picture message | | createImageMessageFromFullPath | Create picture message | | createSoundMessage | Create voice message | | createSoundMessageFromFullPath | Create voice message | | createVideoMessage | Create video message | | createVideoMessageFromFullPath | Create video message | | createFileMessage | Create file message | | createFileMessageFromFullPath | Create file message | | createMergerMessage | Create merge message | | createForwardMessage | Create a forwarded message | | createLocationMessage | Create location message | | createCustomMessage | Create custom message | | createQuoteMessage | Create quote message | | createCardMessage | Create card message | | clearC2CHistoryMessage | Clear all c2c history message | | clearGroupHistoryMessage | Clear all group history | #### OpenIM.iMManager.groupManager | method | description | | --------------------------- | ------------------------------------------------------------ | | setGroupListener | Set up group relationship monitoring | | inviteUserToGroup | Invite friends into the group | | kickGroupMember | Remove member from group | | getGroupMembersInfo | Get group member information | | getGroupMemberList | Get the list of group members | | getJoinedGroupList | Find all groups you have joined | | isJoinedGroup | Check if you are a member of the group | | createGroup | Create a group | | setGroupInfo | Edit group information | | getGroupsInfo | Find group information by group id | | joinGroup | Apply to join the group | | quitGroup | Leave group | | transferGroupOwner | Give group permissions to others | | getRecvGroupApplicationList | As the group owner or administrator, get the list of received group members' applications to join the group. | | getSendGroupApplicationList | Get the record of the group membership application issued by yourself | | acceptGroupApplication | Accept group application | | refuseGroupApplication | Refuse group application | #### Other Message type ``` static const text = 101; static const picture = 102; static const voice = 103; static const video = 104; static const file = 105; static const at_text = 106; static const merger = 107; static const card = 108; static const location = 109; static const custom = 110; static const revoke = 111; static const has_read_receipt = 112; static const typing = 113; static const quote = 114; /// static const accept_friend = 201; static const add_friend = 202; static const refuse_friend_application = 203; static const set_self_info = 204; static const revoke_message = 205; static const c2c_message_as_read = 206; static const kick_online = 303; static const transfer_group_owner = 501; static const create_group = 502; // static const create_group = 503; static const join_group = 504; static const quit_group = 505; static const set_group_info = 506; static const accept_group_application = 507; static const refuse_group_application = 508; static const kick_group_member = 509; static const invited_user_to_group = 510; ``` Platform ``` static const ios = 1; static const android = 2; static const windows = 3; static const xos = 4; static const web = 5; static const mini_web = 6; static const linux = 7; ``` Group member role level ``` static const member = 1; static const owner = 2; static const admin = 3; ``` Conversation type ``` static const single = 1; static const group = 2; ``` Message status ``` static const sending = 1; static const succeeded = 2; static const failed = 3; static const deleted = 4; ```