350 lines
12 KiB
Markdown
350 lines
12 KiB
Markdown
# flutter_openim_sdk
|
||
[](https://pub.flutter-io.cn/packages/flutter_openim_sdk)
|
||
[](https://pub.dev/packages/flutter_openim_sdk)
|
||
[](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)
|
||
|
||

|
||
|
||
|
||
|
||
## 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,
|
||
ipApi: '',
|
||
ipWs: '',
|
||
dbPath: '',
|
||
listener: OnInitSDKListener(
|
||
onConnecting: () {},
|
||
onConnectFailed: (code, error) {},
|
||
onConnectSuccess: () {},
|
||
onKickedOffline: () {},
|
||
onUserSigExpired: () {},
|
||
onSelfInfoUpdated: (user) {},
|
||
),
|
||
)
|
||
|
||
// Add message listener (remove when not in use)
|
||
..messageManager.addAdvancedMsgListener(OnAdvancedMsgListener(
|
||
onRecvMessageRevoked: (msgId) {},
|
||
onRecvC2CReadReceipt: (list) {},
|
||
onRecvNewMessage: (msg) {},
|
||
))
|
||
|
||
// Set up message sending progress listener
|
||
..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
|
||
onProgress: (msgId, progress) {},
|
||
))
|
||
|
||
// Set up friend relationship listener
|
||
..friendshipManager.setFriendshipListener(OnFriendshipListener(
|
||
onBlackListAdd: (u) {},
|
||
onBlackListDeleted: (u) {},
|
||
onFriendApplicationListAccept: (u) {},
|
||
onFriendApplicationListAdded: (u) {},
|
||
onFriendApplicationListDeleted: (u) {},
|
||
onFriendApplicationListReject: (u) {},
|
||
onFriendInfoChanged: (u) {},
|
||
onFriendListAdded: (u) {},
|
||
onFriendListDeleted: (u) {},
|
||
))
|
||
|
||
// Set up conversation listener
|
||
..conversationManager.setConversationListener(OnConversationListener(
|
||
onConversationChanged: (list) {},
|
||
onNewConversation: (list) {},
|
||
onTotalUnreadMessageCountChanged: (count) {},
|
||
onSyncServerFailed: () {},
|
||
onSyncServerFinish: () {},
|
||
onSyncServerStart: () {},
|
||
))
|
||
|
||
// Set up group listener
|
||
..groupManager.setGroupListener(OnGroupListener(
|
||
onApplicationProcessed: (groupId, opUser, agreeOrReject, opReason) {},
|
||
onGroupCreated: (groupId) {},
|
||
onGroupInfoChanged: (groupId, info) {},
|
||
onMemberEnter: (groupId, list) {},
|
||
onMemberInvited: (groupId, opUser, list) {},
|
||
onMemberKicked: (groupId, opUser, list) {},
|
||
onMemberLeave: (groupId, info) {},
|
||
onReceiveJoinApplication: (groupId, info, opReason) {},
|
||
));
|
||
```
|
||
|
||
#### 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,
|
||
onlineUserOnly: false,
|
||
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 |
|
||
| setSelfInfo | Modify current user information |
|
||
| getUsersInfo | Get user information by user id |
|
||
| enabledSDKLog | Setup sdk log |
|
||
|
||
|
||
|
||
#### OpenIM.iMManager.conversationManager
|
||
|
||
| method | description |
|
||
| ----------------------------- | --------------------------------------- |
|
||
| setConversationListener | Listener |
|
||
| getAllConversationList | Get all conversation |
|
||
| getSingleConversation | Get single conversation |
|
||
| getMultipleConversation | Get multiple conversation |
|
||
| deleteConversation | Delete conversation |
|
||
| setConversationDraft | Set conversation draftText |
|
||
| pinConversation | Top conversation |
|
||
| markSingleMessageHasRead | Mark single chat messages as read |
|
||
| markGroupMessageHasRead | Mark group chat messages as read |
|
||
| getTotalUnreadMsgCount | Get the total number of unread messages |
|
||
| getConversationID | Query conversation id |
|
||
| setConversationRecvMessageOpt | Setup message do not disturb |
|
||
| getConversationRecvMessageOpt | Message do not disturb status |
|
||
|
||
|
||
|
||
#### OpenIM.iMManager.friendshipManager
|
||
|
||
| method | description |
|
||
| ------------------------ | ------------------------------------------------------------ |
|
||
| setFriendshipListener | Listener |
|
||
| getFriendsInfo | Get friend information |
|
||
| addFriend | Send an friend application |
|
||
| getFriendApplicationList | Get all friend application, sent to you by others |
|
||
| getFriendList | Find all friends including those who have been added to the blacklist |
|
||
| setFriendInfo | Modify friend information, only comment can be modified |
|
||
| addToBlackList | Add to blacklist |
|
||
| getBlackList | Get blacklist list |
|
||
| deleteFromBlackList | Remove from blacklist |
|
||
| checkFriend | Check friendship |
|
||
| deleteFromFriendList | Remove friend |
|
||
| acceptFriendApplication | Accept friend application |
|
||
| refuseFriendApplication | Reject friend application |
|
||
|
||
|
||
|
||
#### OpenIM.iMManager.messageManager
|
||
|
||
| method | description |
|
||
| --------------------------------- | --------------------------------- |
|
||
| addAdvancedMsgListener | Add message listener |
|
||
| setMsgSendProgressListener | Message sending progress listener |
|
||
| sendMessage | Send a message |
|
||
| getHistoryMessageList | Get history news |
|
||
| revokeMessage | Revoke message |
|
||
| deleteMessageFromLocalStorage | Delete message |
|
||
| insertSingleMessageToLocalStorage | Insert message |
|
||
| findMessages | Query the message by id |
|
||
| 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 message history |
|
||
| clearGroupHistoryMessage | Clear all message history |
|
||
|
||
|
||
|
||
#### OpenIM.iMManager.groupManager
|
||
|
||
| method | description |
|
||
| ----------------------- | ------------------------------- |
|
||
| setGroupListener | Listener |
|
||
| inviteUserToGroup | Invite into the group |
|
||
| kickGroupMember | Remove group members |
|
||
| getGroupMembersInfo | Get group member information |
|
||
| getGroupMemberList | Get group members |
|
||
| getJoinedGroupList | Get joined groups |
|
||
| isJoinedGroup | Check you have joined the group |
|
||
| createGroup | Create a group |
|
||
| setGroupInfo | Edit group information |
|
||
| getGroupsInfo | Get group information |
|
||
| joinGroup | Join group |
|
||
| quitGroup | Exit group |
|
||
| transferGroupOwner | Group permission transfer |
|
||
| getGroupApplicationList | Get group application list |
|
||
| acceptGroupApplication | Accept group invitation |
|
||
| 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
|
||
|
||
```
|
||
static const member = 0;
|
||
static const owner = 1;
|
||
static const admin = 2;
|
||
```
|
||
|
||
Conversation type
|
||
|
||
```
|
||
static const single_chat = 1;
|
||
static const group_chat = 2;
|
||
```
|
||
|
||
Message status
|
||
|
||
```
|
||
static const sending = 1;
|
||
static const succeeded = 2;
|
||
static const failed = 3;
|
||
static const deleted = 4;
|
||
```
|
||
|