Coder Social home page Coder Social logo

ezhangle / open-im-sdk-flutter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openimsdk/open-im-sdk-flutter

0.0 1.0 0.0 166.21 MB

OpenIM:由前微信技术专家打造的基于 Go 实现的即时通讯(IM)项目,Flutter版本IM SDK 可以轻松替代第三方IM云服务,打造具备聊天、社交功能的app。

License: MIT License

Java 15.38% Ruby 0.87% Swift 17.57% Objective-C 31.48% Dart 34.59% C 0.11%

open-im-sdk-flutter's Introduction

Chinese

flutter_openim_sdk

A flutter IM plugin for android and ios.

demo

flutter_openim_widget

Android

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: 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, Log in

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

5,Get a list of conversations

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

6,Get contact list

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

7,Get chat history

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);
  }
}
  • History news
  // 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));
      
  • New news
// 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,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) {
   // Sent successfully
 }).catchError((e){
   // Failed to send
 });

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
forceReConn Force reconnection

OpenIM.iMManager.conversationManager

method description
setConversationListener Listener
getAllConversationList Get all conversation
getSingleConversation Get a single conversation
getMultipleConversation Get multiple conversation
deleteConversation Delete conversation
setConversationDraft Set conversation draftText
pinConversation Top conversation

OpenIM.iMManager.friendshipManager

method description
setFriendshipListener Listener
getFriendsInfo Get friend information
addFriend Add friends
getFriendApplicationList Get friend application list
getFriendList Get friends list
setFriendInfo Edit friend notes
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
removeAdvancedMsgListener Remove 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
markSingleMessageHasRead Mark single chat messages as read
markGroupMessageHasRead Mark group chat messages as read
markC2CMessageAsRead Mark c2c message as read
typingStatusUpdate Typing prompt
createTextMessage Create text message
createTextAtMessage Create @ message
createImageMessage Create picture message
createSoundMessage Create voice message
createVideoMessage Create video message
createFileMessage Create file message
createMergerMessage Create merge message
createForwardMessage Create a forwarded message
getTotalUnreadMsgCount Get unread message count

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 Set 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 Decline group invitation

open-im-sdk-flutter's People

Contributors

erlangzhang avatar hrxiang avatar skiffer-git avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.