flutter_zcyim_sdk 1.0.1 flutter_zcyim_sdk: ^1.0.1 copied to clipboard
An instant messaging plug-in that supports Android and IOS. And the server is also all open source.
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();