zcy-im-flutter-sdk接口文档

Flutter-SDK接入步骤

??1.配置sdk-core

??下载sdk-core,将其复制入app项目,设置随app启动

2.添加依赖到yaml
flutter_zcyim_sdk:latest
3.导入包
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
4.初始化
ZcyIM.iMManager.initSDK(
    platform: 0, // 平台,参照IMPlatform类,
    apiAddr: "", // API接口地址。如:http://xxx:10002
    wsAddr: "",  // web socket地址。如: ws://xxx:10001
    dataDir: "", // 数据存储路径。如:var apath =(await getApplicationDocumentsDirectory()).path
    objectStorage: 'cos', // 图片服务器默认'cos'
    logLevel: 6, // 日志等级,默认值6
    listener: OnConnectListener(
      onConnectSuccess: () {
        // 已经成功连接到服务器
      },
      onConnecting: () {
        // 正在连接到服务器,适合在 UI 上展示“正在连接”状态。
      },
      onConnectFailed: (code, errorMsg) {
        // 连接服务器失败,可以提示用户当前网络连接不可用
      },
      onUserSigExpired: () {
        // 登录票据已经过期,请使用新签发的 UserSig 进行登录。
      },
      onKickedOffline: () {
        // 当前用户被踢下线,此时可以 UI 提示用户“您已经在其他端登录了当前账号,是否重新登录?”
      },
    ),
  ).then((value){
      if(value == true){
        // 初始化成功
      }
  });
5.设置监听
ZcyIM.iMManager
      ..userManager.setUserListener(OnUserListener(
        onSelfInfoUpdated: (userInfo) {
          // 当前登录用户资料变更回调
        },
      ))
      ..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener(
        onRecvNewMessage: (message) {
          // 收到新消息,界面添加新消息
        },
        onRecvMessageRevoked: (messageID) {
          // 消息成功撤回,从界面移除消息
        },
        onRecvC2CReadReceipt: (list) {
          // 消息被阅读回执,将消息标记为已读
        },
        onRecvGroupMessageReadReceipt: (list) {
          // 组消息已读回执,更新已读人数跟未读人数
        },
      ))
      ..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
        onProgress: (messageID, progress) {
          // 消息发送进度回调
        },
      ))
      ..friendshipManager.setFriendshipListener(OnFriendshipListener(
        onFriendApplicationRejected: (applicationInfo) {
          // 发出或收到的好友申请被拒绝
        },
        onFriendApplicationDeleted: (applicationInfo) {
          // 发出或收到的好友申请被删除
        },
        onFriendApplicationAdded: (applicationInfo) {
          // 发出或收到的好友申请被添加
        },
        onFriendApplicationAccepted: (applicationInfo) {
          // 发出或收到的好友申请已同意
        },
        onFriendAdded: (frinedInfo) {
          // 好友被添加
        },
        onFriendDeleted: (frinedInfo) {
          // 好友被删除
        },
        onFriendInfoChanged: (frinedInfo) {
          // 朋友的资料发生变化
        },
        onBlacklistDeleted: (blackInfo) {
          // 从黑名单删除
        },
        onBlacklistAdded: (blackInfo) {
          // 拉入黑名单
        },
      ))
      ..conversationManager.setConversationListener(OnConversationListener(
        onNewConversation: (list) {
          // 新增会话
        },
        onConversationChanged: (list) {
          // 已添加的会话发送改变
        },
        onTotalUnreadMessageCountChanged: (count) {
          // 未读消息数发送变化
        },
      ))
      ));;
5.登陆
ZcyIM.iMManager.login(
      uid: "", // uid来自于自身业务服务器
      token: "", // token需要业务服务器根据secret向ZcyIM服务端交换获取
    ).then((userInfo) {
      // 返回当前登录用户的资料
    });

注:

1,SDK只能初始化一次。

2,在登录前监听器必须设置。

3,其他api调用必须保证登录回调成功后操作。

Flutter-SDK结构体

UserInfo
/// 用户id
String? userID;

/// 用户昵称
String? nickname;

/// 头像
String? faceURL;

/// 性别
int? gender;

/// 手机号
String? phoneNumber;

/// 出生时间
int? birth;

/// 邮箱
String? email;

/// 扩展字段
String? ex;

/// 创建时间
int? createTime;

/// 备注
String? remark;

/// 用户公开的资料
PublicUserInfo? publicInfo;

/// 好友才能查看的资料
FriendInfo? friendInfo;

/// 黑名单资料
BlacklistInfo? blackInfo;

/// 是否好友关系
bool? isFriendship;

/// 是否黑名单
bool? isBlacklist;

/// 全局免打扰 0:正常;1:不接受消息;2:接受在线消息不接受离线消息;
int? globalRecvMsgOpt;Copy to clipboardErrorCopied
ConversationInfo
/// 会话ID
String conversationID;

/// 会话类型[ConversationType]
int? conversationType;

/// 参与会话的userID
String? userID;

/// 参与会话的groupID
String? groupID;

/// 昵称
String? showName;

/// 头像
String? faceURL;

/// 免打扰 0:正常;1:不接受消息;2:接受在线消息不接受离线消息;
int? recvMsgOpt;

/// 未读消息数
int? unreadCount;

/// 强制提示,[GroupAtType]包含@所有人,@个人以及公告提示
int? groupAtType;

/// 会话最新消息内容
Message? latestMsg;

/// 最新消息发送时间
int? latestMsgSendTime;

/// 草稿
String? draftText;

/// 草稿生成时间
int? draftTextTime;

/// 是否置顶
bool? isPinned;

/// 是否开启了私聊(阅后即焚)
bool? isPrivateChat;

/// 附加内容
String? ext;

/// 是否还在组内,如果退群返回true
bool? isNotInGroup;Copy to clipboardErrorCopied
Message
/// 消息id,唯一标识
String? clientMsgID;

/// 服务端生成的id
String? serverMsgID;

/// 创建时间
int? createTime;

/// 发送时间
int? sendTime;

/// 会话类型[ConversationType]
int? sessionType;

/// 发送者id
String? sendID;

/// 接收者id
String? recvID;

/// 来源
int? msgFrom;

/// 消息类型[MessageType]
int? contentType;

/// 平台[Platform]
int? platformID;

/// 发送者昵称
String? senderNickname;

/// 发送者头像
String? senderFaceUrl;

/// 群ID
String? groupID;

/// 消息内容
String? content;

/// 消息的seq
int? seq;

/// 是否已读
bool? isRead;

/// 已读时间
int? hasReadTime;

/// 消息发送状态[MessageStatus]
int? status;

/// 离线显示内容
OfflinePushInfo? offlinePush;

/// 附加信息
String? attachedInfo;

/// 扩展信息
String? ex;

/// 自定义扩展信息,目前用于客服端处理消息时间分段
dynamic ext;

/// 图片
PictureElem? pictureElem;

/// 语音
SoundElem? soundElem;

/// 视频
VideoElem? videoElem;

/// 文件
FileElem? fileElem;

/// @信息
AtElem? atElem;

/// 位置
LocationElem? locationElem;

/// 自定义
CustomElem? customElem;

/// 引用
QuoteElem? quoteElem;

/// 合并
MergeElem? mergeElem;

/// 通知
NotificationElem? notificationElem;

/// 自定义表情
FaceElem? faceElem;

/// 附加信息
AttachedInfoElem? attachedInfoElem;Copy to clipboardErrorCopied

消息相关API

汇总
方法 描述
setAdvancedMsgListener 消息监听
setMsgSendProgressListener 消息发送进度监听
sendMessage 发送消息
getHistoryMessageList 获取聊天记录(以startMsg为节点,以前的聊天记录)
revokeMessage 撤回消息
deleteMessageFromLocalStorage 删除本地消息
insertSingleMessageToLocalStorage 插入单聊消息到本地
insertGroupMessageToLocalStorage 插入群聊消息到本地
markC2CMessageAsRead 标记c2c单条消息已读
markGroupMessageAsRead 标记群聊消息已读
typingStatusUpdate 正在输入提示
createTextMessage 创建文本消息
createTextAtMessage 创建@消息
createImageMessage 创建图片消息
createImageMessageFromFullPath 创建图片消息
createSoundMessage 创建语音消息
createSoundMessageFromFullPath 创建语音消息
createVideoMessage 创建视频消息
createVideoMessageFromFullPath 创建视频消息
createFileMessage 创建文件消息
createFileMessageFromFullPath 创建文件消息
createMergerMessage 创建合并消息
createForwardMessage 创建转发消息
createLocationMessage 创建位置消息
createCustomMessage 创建自定义消息
createQuoteMessage 创建引用消息
createCardMessage 创建卡片消息
createFaceMessage 创建自定义表情消息
clearC2CHistoryMessage 清空单聊消息记录
clearGroupHistoryMessage 清空组消息记录
searchLocalMessages 搜索消息
deleteMessageFromLocalAndSvr 删除本地跟服务器的指定的消息
deleteAllMsgFromLocal 删除本地所有聊天记录
deleteAllMsgFromLocalAndSvr 删除本地跟服务器所有聊天记录
markMessageAsReadByConID 标记消息已读
clearC2CHistoryMessageFromLocalAndSvr 删除本地跟服务器的单聊聊天记录
clearGroupHistoryMessageFromLocalAndSvr 删除本地跟服务器的群聊天记录
getHistoryMessageListReverse 获取聊天记录(以startMsg为节点,新收到的聊天记录),用在全局搜索定位某一条消息,然后此条消息后新增的消息
OnAdvancedMsgListener(消息监听)
方法 描述
onRecvNewMessage 收到新消息,界面添加新消息
onRecvMessageRevoked 消息成功撤回,从界面移除消息
onRecvC2CReadReceipt 消息被阅读回执,将消息标记为已读
onRecvGroupMessageReadReceipt 组消息已读回执,更新已读人数跟未读人数
sendMessage
  • FlutterExample
ZcyIM.iMManager.messageManager.sendMessage(
  message: Message(), // 消息体
  userID: '', // 接受消息的userID
  groupID: '', // 接受消息的群ID
  offlinePushInfo: OfflinePushInfo(), // 离线推送的消息备注
).then((_) {
    // 成功
 }).catchError((_){
    // 失败
 });
getHistoryMessageList
  • FlutterExample
ZcyIm.iMManager.messageManager.getHistoryMessageList(
  userID: '', // 单聊对象的userID
  groupID: '', // 群聊的组id
  startMsg: null, // 消息体
  count: 0, // 每次拉取的数量
).then((list){
  // List<Message>
});

注:消息列表list,index == list.length -1 是最新的一条消息。 index == 0 是从最新的这条记录后的第19条。所以startMsg首次传null,

下次就是list.first(index == 0),以此类推。

revokeMessage

撤回成功需要当前用户从列表里移除Message然后更新ui,而另外一方通过撤回监听(onRecvMessageRevoked)移除。

  • FlutterExample

    ZcyIM.iMManager.messageManager.revokeMessage(
      message: Message(), // 消息体
    ).then((_) {
        // 成功
     }).catchError((_){
        // 失败
     });
    
deleteMessageFromLocalStorage

删除本地消息。

  • FlutterExample

    ZcyIm.iMManager.messageManager.deleteMessageFromLocalStorage(
      message: Message(),
    ).then((_) {
        // 成功,从列表里移除Message,然后更新ui
     }).catchError((_){
        // 失败
     });
    
insertSingleMessageToLocalStorage
  • FlutterExample

    ZcyIM.iMManager.messageManager.insertSingleMessageToLocalStorage(
      receiverID: '', // 接收者userID
      senderID: '', // 发送者userID
      message: Message(), // 消息体
    );
      
    
insertGroupMessageToLocalStorage

插入一条群聊消息到本地。

  • FlutterExample

    ZcyIM.iMManager.messageManager.insertGroupMessageToLocalStorage(
      groupID: '', 
      senderID: '', // 发送者userID
      message: Message(), // 消息结构体
    );
    
markC2CMessageAsRead

实时消息已读回执,在 C2C 单聊场景下,当接收方通过 markC2CMessageAsRead接口将来自某人的消息标记为已读时,消息的发送方将会收到“已读回执”,表示“xxx 已经读过我的消息了”。

**特别的:**当msgIDList为一个空数组[]时,即标记单聊会话为已读,置零该会话未读数。

  • FlutterExample

    ZcyIM.iMManager.messageManager.markC2CMessageAsRead(
      userID: '', // 接收者 userID
      msgIDList: [], // 已读的消息id列表
    );
    
markGroupMessageAsRead

实时消息已读回执,在群聊场景下,当接收方通过 markGroupMessageAsRead接口将来自某人的消息标记为已读时,消息的发送方将会收到“已读回执”,表示“xxx 已经读过我的消息了”。

**特别的:**当msgIDList为一个空数组[]时,即标记群聊会话为已读,置零该会话未读数。

  • FlutterExample

    ZcyIM.iMManager.messageManager.markGroupMessageAsRead(
      groupID: '', // 接收者 userID
      msgIDList: [], // 已读的消息id列表
    );
    
typingStatusUpdate

更新正在输入状态。

  • FlutterExample

    Zcy.iMManager.messageManager.typingStatusUpdate(
      recvID: '', // 接收者 userID
      msgTip: '', // 自定义提示内容
    );
    
createTextMessage

创建一条文字消息。

  • WebExample:

    const textStr = "hello zcy im";
    zcyIM.createTextMessage(textStr).then(({ data })=>{
      ...
    }).catch(err=>{
      ...
    })
    
  • FlutterExample

    var message = await ZcyIm.iMManager.messageManager.createTextMessage(
      text: '', // 发送的内容
    );
    
createTextAtMessage

创建一条@文字消息。

  • FlutterExample

    var message = await ZcyIM.iMManager.messageManager.createTextAtMessage(
          text: '', // 发送的内容
          atUserIDList: [], // 被@到的用户ID集合
          atUserInfoList: [], // 被@到的用户Info集合
          message: Message(), //被引用的消息体
     );
    
createImageMessage
  • FlutterExample

    ///注:initSDK时传入了数据缓存(dataDir)路径,如路径:A,这时需要你将图片复制到A路径下后,如 A/pic/a.png路径,imagePath的
    ///值:“/pic/a.png”。同以下其他消息的相对路径。
    var message = await ZcyIM.iMManager.messageManager.createImageMessage(
      imagePath: '', // 相对路径
    );
    
createImageMessageFromFullPath
  • FlutterExample

    var message = await ZcyIm.iMManager.messageManager.createImageMessageFromFullPath(
      imagePath: '', // 绝对路径
    );
    
createSoundMessage
  • FlutterExample

    var message = await ZcyIm.iMManager.messageManager.createSoundMessage(
      soundPath: '', // 相对路径
      duration: 0, // 时长s
    );
    
createSoundMessageFromFullPath
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createSoundMessageFromFullPath(
      soundPath: '', // 绝对路径
      duration: 0, // 时长s
    );
    
createVideoMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createVideoMessage(
      videoPath: '', // 相对路径
      videoType: '', // minetype
      duration: 0, // 时长s
      snapshotPath: '', // 站位缩略图
    );
    
createVideoMessageFromFullPath
  • FlutterExample:

    var message = await Zcy.iMManager.messageManager.createVideoMessageFromFullPath(
      videoPath: '', // 绝对路径
      videoType: '', // minetype
      duration: 0, // 时长s
      snapshotPath: '', // 站位缩略图
    );
    
createFileMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createFileMessage(
      filePath: '', // 相对路径
      fileName: '', // 文件名
    );
    
createFileMessageFromFullPath
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createFileMessageFromFullPath(
      filePath: '', // 绝对路径
      fileName: '', // 文件名
    );
    
createMergerMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createMergerMessage(
      messageList: [], // 被转发的消息列表
      title: '', // 标题
      summaryList: [], // 每一条消息摘要
    );
    
createForwardMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createForwardMessage(
      message: Message(), // 被转发的消息体
    );
    
createLocationMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createLocationMessage(
      latitude: 0,// 纬度
      longitude: 0, // 经度
      description: '', // 位置描述信息
    );
    
createCustomMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createCustomMessage(
      data: '', // 自定义内容
      extension: '', // 扩展信息
      description: '', // 描述消息
    );
    
createQuoteMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createQuoteMessage(
      text: '', // 回复内容
      quoteMsg: Message(), // 被回复的消息体
    );
    
createCardMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createCardMessage(
      data: {}, // 自定义内容
    );
    
createFaceMessage
  • FlutterExample:

    var message = await ZcyIM.iMManager.messageManager.createFaceMessage(
      index: '', // 位置表情,根据index匹配
      data: '', // url表情,直接使用url显示
    );
    
clearC2CHistoryMessage
  • FlutterExample:

    ZcyIM.iMManager.messageManager.clearC2CHistoryMessage(
      uid: "", // userID
    ).then((_) {
        // 成功
     }).catchError((_){
        // 失败
     });
    
clearC2CHistoryMessageFromLocalAndSvr
  • FlutterExample:

    ZcyIM.iMManager.messageManager.clearC2CHistoryMessageFromLocalAndSvr(
      uid: null, // 用户id
    ).then((_) {
        // 成功
     }).catchError((_){
        // 失败
     });
    
clearGroupHistoryMessage
  • FlutterExample:

    ZcyIM.iMManager.messageManager.clearGroupHistoryMessage(
      gid: '', // 群ID
    ).then((_) {
        // 成功
     }).catchError((_){
        // 失败
     });
    
clearGroupHistoryMessageFromLocalAndSvr
  • FlutterExample:

    ZcyIM.iMManager.messageManager.clearGroupHistoryMessageFromLocalAndSvr(
        gid: null, // 群组id
    ).then((_) {
        // 成功
     }).catchError((_){
        // 失败
     });
    
searchLocalMessages
  • FlutterExample:

    SearchResult result = await ZcyIM.iMManager.messageManager.searchLocalMessages(
      conversationID: null, // 根据会话查询,如果是全局搜索传null
      keywordList: [], // 搜索关键词列表,目前仅支持一个关键词搜索
      keywordListMatchType: 0, // 关键词匹配模式,1代表与,2代表或,暂时未用
      senderUserIDList: [], // 指定消息发送的uid列表 暂时未用
      messageTypeList: [], // 消息类型列表
      searchTimePosition: 0, // 搜索的起始时间点。默认为0即代表从现在开始搜索。UTC 时间戳,单位:秒
      searchTimePeriod: 0, // 从起始时间点开始的过去时间范围,单位秒。默认为0即代表不限制时间范围,传24x60x60代表过去一天
      pageIndex: 1, // 当前页数
      count: 10, // 每页数量
    );
    
deleteMessageFromLocalAndSvr
  • FlutterExample:

    ZcyIM.iMManager.messageManager.createCardMessage(
      message: Message(), // 消息体
    );
    
deleteAllMsgFromLocal
  • FlutterExample:

    ZcyIM.iMManager.messageManager.deleteAllMsgFromLocal();
    
deleteAllMsgFromLocalAndSvr
  • FlutterExample:

    ZcyIM.iMManager.messageManager.deleteAllMsgFromLocalAndSvr();
    
markMessageAsReadByConID
  • FlutterExample:

    ZcyIM.iMManager.messageManager.markMessageAsReadByConID(
      conversationID: null, // 会话ID
      messageIDList: [], // 消息id列表
    );
    
getHistoryMessageListReverse
  • FlutterExample:

    // 获取聊天记录(以startMsg为节点,新收到的聊天记录),用在全局搜索定位某一条消息,然后此条消息后新增的消息
    ZcyIM.iMManager.messageManager.getHistoryMessageListReverse(
      userID: '', // 单聊对象的userID
      groupID: '', // 群聊的组id
      startMsg: null, // 消息体
      count: 0, // 每次拉取的数量
    ).then((list){
      // List<Message>
    });
    

好友相关API

汇总
方法 描述
setFriendshipListener 好友关系监听
getFriendsInfo 查询好友信息
addFriend 发送一个好友请求,需要对方调用同意申请才能成为好友
getRecvFriendApplicationList 获取别人加我为好友的申请
getSendFriendApplicationList 获取我发出的好友申请
getFriendList 获取好友列表,返回的列表包含了已拉入黑名单的好友
setFriendRemark 设置好友备注
addBlacklist 加入黑名单
getBlacklist 获取黑名单列表
removeBlacklist 从黑名单移除
checkFriend 检查友好关系
deleteFriend 删除好友
acceptFriendApplication 接受好友请求
refuseFriendApplication 拒绝好友请求
searchFriends 查好友
getFriendsInfo
  • FlutterExample
 ZcyIM.iMManager.friendshipManager.getFriendsInfo(
      uidList: [], // userId列表
    ).then((list) {
      // List<UserInfo>
 });
addFriend
  • FlutterExample
ZcyIM.iMManager.messageManager.sendMessage(
  message: Message(), // 消息体
  userID: '', // 接受消息的userID
  groupID: '', // 接受消息的群ID
  offlinePushInfo: OfflinePushInfo(), // 离线推送的消息备注
).then((_) {
    // 成功
 }).catchError((_){
    // 失败
 });
getRecvFriendApplicationList
  • FlutterExample
///主动申请者收到OnFriendApplicationAdded
///被添加者收到OnFriendApplicationAdded
ZcyIM.iMManager.friendshipManager.addFriend(
      uid: "", // 用户id
      reason: '', // 发起好友申请的描述信息
 ).then((_) {
    // 成功
 }).catchError((_){
    // 失败
 });
getSendFriendApplicationList
  • FlutterExample
ZcyIM.iMManager.friendshipManager.getSendFriendApplicationList().then((list){
      // List<FriendApplicationInfo> 申请列表
 });
getFriendList
  • FlutterExample
///返回的数据里包含已拉入黑名单的好友,可以根据isBlacklist字段筛选。
ZcyIM.iMManager.friendshipManager.getFriendList().then((list){
      //  List<UserInfo> 好友信息列表
});
setFriendRemark
  • FlutterExample
///操作者收到OnFriendInfoChanged

ZcyIM.iMManager.friendshipManager.setFriendRemark(
  uid: '', // 好友userID
  remark: '', // 备注名
).then((_) {
  // 成功
}).catchError((_){
  // 失败
});
addBlacklist
  • FlutterExample
///操作者收到OnBlackAdded
ZcyIM.iMManager.friendshipManager.addBlacklist(
      uid: "", // 好友userID
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
removeBlacklist
  • FlutterExample
///操作者收到OnBlackDeleted
ZcyIM.iMManager.friendshipManager.removeBlacklist(
      uid: "", // userID
 ).then((_) {
    // 成功
 }).catchError((_){
    // 失败
 });
checkFriend
  • FlutterExample
ZcyIM.iMManager.friendshipManager.checkFriend(
  uidList: [], // userID 列表
).then((list) {
  // List<FriendshipInfo>
});
deleteFriend
  • FlutterExample
///操作者收到OnFriendDeleted
ZcyIM.iMManager.friendshipManager.deleteFriend(
  uid: '', // userID
).then((_) {
  // 成功
}).catchError((_){
  // 失败
});
acceptFriendApplication
  • FlutterExample
///操作者收到OnFriendApplicationAccepted、OnFriendAdded
///申请者收到OnFriendApplicationAccepted、OnFriendAdded
ZcyIM.iMManager.friendshipManager.acceptFriendApplication(
  uid: "", // userID
  handleMsg: '', // 备注信息
).then((_) {
  // 成功
}).catchError((_){
  // 失败
});
refuseFriendApplication
  • FlutterExample
///操作者收到OnFriendApplicationRejected
///申请者收到OnFriendApplicationRejected
ZcyIM.iMManager.friendshipManager.refuseFriendApplication(
  uid: "", // userID
  handleMsg: '', // 备注信息
).then((_) {
  // 成功
}).catchError((_){
  // 失败
});
searchFriends
  • FlutterExample
var list = await ZcyIM.iMManager.friendshipManager.searchFriends(
  keywordList: [searchCtrl.text.trim()],//关键词
  isSearchNickname: true,//按昵称查找
  isSearchRemark: true,//按备注查找
);
OnFriendshipListener(好友关系监听)
方法 描述
onFriendApplicationRejected 发出或收到的好友申请被拒绝
onFriendApplicationDeleted 发出或收到的好友申请被删除
onFriendApplicationAdded 发出或收到的好友申请被添加
onFriendApplicationAccepted 发出或收到的好友申请已同意
onFriendAdded 好友被添加
onFriendDeleted 好友被删除
onFriendInfoChanged 朋友的资料发生变化
onBlacklistDeleted 从黑名单删除
onBlacklistAdded 拉入黑名单

会话相关API

汇总
方法 描述
setConversationListener 会话监听
getAllConversationList 获取所有会话
getConversationListSplit 分页获取会话
getOneConversation 查询会话,如果会话不存在会自动生成一个
getMultipleConversation 根据会话id获取多个会话
deleteConversation 通过会话id删除指定会话
setConversationDraft 设置会话草稿
pinConversation 置顶会话
markGroupMessageHasRead 标记群聊会话已读
getTotalUnreadMsgCount 获取未读消息总数
getConversationIDBySessionType 查询会话id
setConversationRecvMessageOpt 消息免打扰设置
getConversationRecvMessageOpt 查询免打扰状态
setOneConversationPrivateChat 阅后即焚
deleteConversationFromLocalAndSvr 删除本地以及服务器的会话
deleteAllConversationFromLocal 删除所有本地会话
resetConversationGroupAtType 重置强提醒标识
getAtAllTag 查询@所有人标识
setGlobalRecvMessageOpt 全局免打扰设置
simpleSort 自定义会话排序规则
OnConversationListener(会话监听)
方法 描述
onNewConversation 新增会话时触发回调
onConversationChanged 已添加的会话发送改变时回调
onTotalUnreadMessageCountChanged 未读消息数发送变化时回调
getAllConversationList
  • FlutterExample
ZcyIM.iMManager.conversationManager.getAllConversationList().then((list) {
      // List<ConversationInfo> 会话列表
 });
getConversationListSplit
  • FlutterExample
ZcyIM.iMManager.conversationManager.getConversationListSplit(
      offset: 0, // 偏移量,如:第1页,offet:0,count:20;第2页:offset:20;
      count: 0, // 每页数量
 ).then((list) {
     // List<ConversationInfo> 会话列表
 });
getOneConversation
  • FlutterExample
ZcyIM.iMManager.conversationManager.getOneConversation(
      sourceID: "", // 如果是单聊值传userID,如果是群聊groupID
      sessionType: 1, // 如果是单聊值传1,如果是群聊值传2
 ).then((info) {
     // 会话信息
 });
getMultipleConversation
  • FlutterExample
 ZcyIM.iMManager.conversationManager.getMultipleConversation(
      conversationIDList: [], // 会话ID集合
    ).then((list) {
      // 返回与id匹配的会话列表
  });
deleteConversation
  • FlutterExample
///会触onTotalUnreadMessageCountChanged回调
ZcyIM.iMManager.conversationManager.deleteConversation(
     conversationID: "", // 会话id
 ).then((_) {
    // 成功
 }).catchError((_){
    // 失败
 });
setConversationDraft
  • FlutterExample
///会触onConversationChanged回调

ZcyIM.iMManager.conversationManager.setConversationDraft(
      conversationID: "", // 会话id
      draftText: "", // 草稿
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
pinConversation
  • FlutterExample
///会触onConversationChanged回调
ZcyIM.iMManager.conversationManager.pinConversation(
      conversationID: "", // 会话id
      isPinned: true, // true:置顶;false:取消置顶
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
markGroupMessageHasRead
  • FlutterExample
///会触onConversationChanged、onTotalUnreadMessageCountChanged回调

ZcyIM.iMManager.conversationManager.markGroupMessageHasRead(
      groupID: "", // 组id
 );
getTotalUnreadMsgCount
  • FlutterExample
ZcyIM.iMManager.conversationManager.getTotalUnreadMsgCount().then((count){
    // 总数
});

getConversationIDBySessionType
  • FlutterExample
ZcyIM.iMManager.conversationManager.getConversationIDBySessionType(
      sourceID: "", // 如果是单聊值传userID,如果是群聊groupID
      sessionType: 1, // 如果是单聊值传1,如果是群聊值传2
  ).then((conversationID){
      // 会话ID
  });
setConversationRecvMessageOpt
  • FlutterExample
ZcyIM.iMManager.conversationManager.setConversationRecvMessageOpt(
      conversationIDList: [], // 会话id列表
      status: 1, // 1:不接受消息;2:接受在线消息不接受离线消息;0:正常
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
getConversationRecvMessageOpt
  • FlutterExample
/// 此方法已废弃,使用getOneConversation/getMultipleConversation方法替代
ZcyIM.iMManager.conversationManager.getConversationRecvMessageOpt(
      conversationIDList: [], // 会话id列表
 ).then((list) {
    // 返回列表 [{"conversationId":"single_13922222222","result":0}] 
    // result: 1:不接受消息;2:接受在线消息不接受离线消息;0:正常
 });
setOneConversationPrivateChat
  • FlutterExample
ZcyIM.iMManager.conversationManager.setOneConversationPrivateChat(
      conversationID:"", // 会话id
      isPrivate:true,//true开启
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
deleteConversationFromLocalAndSvr
  • FlutterExample
ZcyIM.iMManager.conversationManager.deleteConversationFromLocalAndSvr(
      conversationID:"", // 会话id
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
deleteAllConversationFromLocal
  • FlutterExample
ZcyIM.iMManager.conversationManager.deleteAllConversationFromLocal(
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
resetConversationGroupAtType
  • FlutterExample
ZcyIM.iMManager.conversationManager.resetConversationGroupAtType(
      conversationID:"", // 会话id
 ).then((_) {
    // 成功
 }).catchError((_){
         // 失败
 });
getAtAllTag
  • FlutterExample
ZcyIM.iMManager.conversationManager.getAtAllTag();
setGlobalRecvMessageOpt
  • FlutterExample
ZcyIM.iMManager.conversationManager.setGlobalRecvMessageOpt(
    status: status,// 0:正常;1:不接受消息;2:接受在线消息不接受离线消息;
);
simpleSort
  • FlutterExample
var list = ZcyIM.iMManager.conversationManager.simpleSort([]);// 返回排序好的列表

用户信息相关API

方法 描述
setUserListener 当前登录用户信息变更监听
getUsersInfo 根据userID获取用户资料
getSelfUserInfo 获取当前登录用户资料
setSelfInfo 修改当前登录用户资料
OnUserListener(用户信息监听
方法 描述
onSelfInfoUpdated 当前登录用户资料变更回调
getUsersInfo
  • FlutterExample
ZcyIM.iMManager.userManager.getUsersInfo(
      uidList: [], // 用户ID集合
   ).then((userInfoList) {
      // 用户信息列表
  });
getSelfUserInfo
  • FlutterExample
 ZcyIM.iMManager.userManager.getSelfUserInfo().then((userInfo){
      // 返回当前登录用户的资料
  });
setSelfInfo
  • FlutterExample
///会触发当用户的onSelfInfoUpdated回调,以及好友的onFriendInfoChanged、onConversationChanged回调。

  ZcyIM.iMManager.userManager.setSelfInfo(
      nickname: '',  // 昵称
      faceURL: '',  // 头像
      gender: 0,  // 性别: 男1,女0
      phoneNumber: '', // 手机号
      email: '', //邮箱
      birth: 0,  //生日
      ex: '',  // 其他信息
    );

初始化及登陆相关API

汇总
方法 描述
initSDK 初始化SDK
unInitSDK 反初始化SDK
login 登录
logout 登出
getLoginStatus 获取登录状态
getLoginUserID 登录者用户ID
getLoginUserInfo 登录者用户资料
wakeUp 唤醒socket通信(当app从后台回到前台恢复通信)
OnConnectListener(连接监听)
方法 描述
onConnectSuccess 已经成功连接到服务器
onConnecting 正在连接到服务器,适合在 UI 上展示“正在连接”状态。
onConnectFailed 连接服务器失败,可以提示用户当前网络连接不可用
onUserSigExpired 登录票据已经过期,请重新登录。
onKickedOffline 当前用户被踢下线,此时可以 UI 提示用户“您已经在其他端登录了当前账号,是否重新登录?”
initSDK

见接入步骤

unInitSDK
  • FlutterExample
ZcyIM.iMManager.unInitSDK();
login
  • FlutterExample
ZcyIM.iMManager.login(
      uid: "", // uid来自于自身业务服务器
      token: "", // token需要业务服务器根据secret向ZcyIM服务端交换获取
    ).then((userInfo) {
      // 返回当前登录用户的资料
    });
logout
  • FlutterExample
 ZcyIM.iMManager.logout().then((_){
      // 退出成功
 });
getLoginStatus
  • FlutterExample
getLoginUserID
  • FlutterExample
ZcyIM.iMManager.getLoginUserID().then((userID){
     // 当前登录用户的ID
  });
getLoginUserInfo
  • FlutterExample
ZcyIM.iMManager.getLoginUserInfo().then((userInfo){
     // 当前登录用户的信息
 });
wakeUp
  • FlutterExample
ZcyIM.iMManager.wakeUp();

Libraries

flutter_zcyim_sdk