# 数据库操作相关
# 消息格式说明
# 最近消息列表消息格式
let ConversationList = {
targetId: "targetId",
conversationTitle: "conversationTitle",
conversationType: "conversationType",
draft: "draft",
hasUnreadMention: "hasUnreadMention",
isHidden: "isHidden",
isTop: "isTop",
latestMessage: "latestMessage",
latestMessageId: "latestMessageId",
messageStatus: "messageStatus",
mentionedMsg: "mentionedMsg",
notificationStatus: "notificationStatus",
receivedTime: "receivedTime",
senderPortraitUri: "senderPortraitUri",
senderUserId: "senderUserId",
senderUserName: "senderUserName",
sentTime: "sentTime",
unreadMessageCount: "unreadMessageCount",
readTime: "readTime",
};
# IM 消息格式
let ChatMessage = {
content: "content",
conversationType: "conversationType",
extra: "extra",
isLocalMessage: "isLocalMessage",
messageDirection: "messageDirection",
messageId: "messageId",
messageType: "messageType",
messageUId: "messageUId",
objectName: "objectName",
offLineMessage: "offLineMessage",
receivedTime: "receivedTime",
senderUserId: "senderUserId",
sentTime: "sentTime",
messageStatus: "messageStatus",
targetId: "targetId",
targetName: "targetName",
};
# 数据库创建
# createSql(userId, callback)
在 Appdata
文件夹下的 ZhiXin
文件夹中创建一个数据库文件 {userId}@localhost.sqlite
,如果用户数据库存在老表,会进行数据库更新操作,将老表的数据格式化后迁移到新表中。
userId
用户的 IDcallback
回调
回调
- 回调返回
update
表明数据库需要升级,这时候可以加载正在升级数据库对话框 - 回调返回
init
表明数据库不需要升级,是直接创建的,并创建完成 - 回调返回
finish
表明数据库升级完成
代码示例
ZX_CLIENT.createSql("123456", (data) => {
console.log(data);
});
# 消息获取
# 获取最近消息列表
# ZX_CLIENT.ImMsg.getConversationList(callback)
获取表 ConversationList
中所有的数据。
callback
回调
代码示例
ZX_CLIENT.ImMsg.getConversationList((data) => {
console.log(data);
});
# 根据时间戳获取 Im 聊天消息
# ZX_CLIENT.ImMsg.getChatMessageByTime(targetId, sentTime, direction, callback)
获取表 ChatMessage
中,会话 targetId
在 sentTime
(根据 direction
进行判断,小于 0 为之前 20 条,0 为前后 10 条,大于 0 为之后 20 条)的聊天记录。
- targetId:会话 ID
- sentTime:时间戳
- direction:范围
- callback:回调
代码示例
ZX_CLIENT.ImMsg.getChatMessageByTime("123456", "7890", -1, (data) => {
console.log(data);
});
# 全局搜索消息
# ZX_CLIENT.ImMsg.searchChatMessage(keyWords, sentTime, direction, size, callback);
搜索表 ChatMessage
中 的聊天记录
参数说明
- keyWords:关键词
- sentTime:时间戳
- direction:搜索方向 大于 0 就是之后的 小于 0 就是之前的
- size:返回结果个数
- callback:回调
代码示例
搜索关键词 电费第
,需要返回 1578382166713
之前的消息 20
条
ZX_CLIENT.ImMsg.searchChatMessage("电费第", "1578382166713", -1, 20, (data) => {
console.log(data);
});
# 全局搜索消息
# ZX_CLIENT.ImMsg.getChatMessage(condition, callback);
搜索表 ChatMessage
中 的聊天记录
- condition:搜索条件
- callback:回调
代码示例
搜索 messageType
为 FileMessage
,且 targetId
为 7686322317716898133
的消息
ZX_CLIENT.ImMsg.getChatMessage(
{
targetId: "7686322317716898133",
messageType: "FileMessage",
},
(data) => {
console.log(data);
}
);
# 获取历史消息
# ZX_CLIENT.ImMsg.getChatMessageHistory({ targetId, sentTime, direction, messageType, keyWords, count, callback});
搜索表 ChatMessage
中 的聊天记录
参数说明
- targetId:对话 ID
- sentTime:时间
- direction:方向
- messageType:消息类型(是个数组)
- keyWords:关键词
- count:消息个数
- callback:回调
代码示例
搜索 messageType
为 FileMessage
或 VideoMessage
,targetId
为 7686322317716898133
,sentTime
为 1582181182638
之后的消息,
ZX_CLIENT.ImMsg.getChatMessageHistory({
targetId: "7686322317716898133",
sentTime: "1582181182638",
direction: 1,
messageType: ["FileMessage", "VideoMessage"],
keyWords: undefined,
callback: (data) => {
console.log("afdfadfadf", data);
},
});
搜索 messageType
为 FileMessage
或 VideoMessage
,targetId
为 7686322317716898133
,sentTime
为 1582181182638
之后的消息,关键词 keyWords
为 哈哈哈
ZX_CLIENT.ImMsg.getChatMessageHistory({
targetId: "7686322317716898133",
sentTime: "1582181182638",
direction: 1,
messageType: ["FileMessage", "VideoMessage"],
keyWords: "哈哈哈",
callback: (data) => {
console.log("afdfadfadf", data);
},
});
# 消息写入
# 向最近消息列表插入消息
# ZX_CLIENT.ImMsg.insertConversationList(messageData, callback)
向表 ConversationList
中插入消息。
- messageData:最近聊天列表消息 (请严格按照上方消息格式说明传值)
- callback:回调
代码示例
ZX_CLIENT.ImMsg.insertConversationList(messageData, (data) => {
console.log(data);
});
# 更新最近消息列表消息
# ZX_CLIENT.updateConversationList(condition, messageData, callback)
更新表 ConversationList
中的消息。
- targetId:会话 id
- messageData:需要更新的字段
- callback:回调
代码示例
更新 targetId
为 12345678
的 isTop
为 true
,conversationTitle
为 balabala
ZX_CLIENT.ImMsg.updateConversationList(
{
targetId: "123456789",
},
{ isTop: true, conversationTitle: "balabala" },
(data) => {
console.log(data);
}
);
# 删除最近消息列表消息
# ZX_CLIENT.ImMsg.deleteConversationList(condition, callback);
从表 ConversationList
中删除消息。
- condition:条件
- callback:回调
代码示例
ZX_CLIENT.ImMsg.deleteConversationList({ targetId: 12345 }, (data) => {
console.log(data);
});
# 批量添加 IM 聊天消息
# ZX_CLIENT.ImMsg.bulkInsertChatMessage(params, callback);
向表 ChatMessage
中批量添加聊天消息。
- params:聊天消息的数组
[ChatMessage1,ChatMessage2,ChatMessage3]
ChatMessage
格式见上方消息格式说明的 IM 消息格式 - callback:回调
代码示例
let ChatMessage = {
content: "content",
conversationType: "conversationType",
extra: "extra",
isLocalMessage: "isLocalMessage",
messageDirection: "messageDirection",
messageId: "messageId",
messageType: "messageType",
messageUId: "messageUId",
objectName: "objectName",
offLineMessage: "offLineMessage",
receivedTime: "receivedTime",
senderUserId: "senderUserId",
sentTime: "sentTime",
messageStatus: "messageStatus",
targetId: "targetId",
targetName: "targetName",
};
ZX_CLIENT.ImMsg.bulkInsertChatMessage(
[ChatMessage, ChatMessage, ChatMessage],
(data) => {
console.log(data);
}
);
# 更新 IM 消息列表消息
# ZX_CLIENT.ImMsg.updateChatMessage(condition, messageData, callback);
更新表 ChatMessage
中的消息。
- messageId:消息 id
- messageData:需要更新的字段
- callback:回调
代码示例
更新 messageId
为 12345678
的 content
为 123
isLocalMessage
为 true
ZX_CLIENT.ImMsg.updateChatMessage(
{
messageId: "123456789",
},
{ content: 123, conversationTitle: true },
(data) => {
console.log(data);
}
);
# 删除 IM 消息列表消息
ZX_CLIENT.ImMsg.deleteChatMessage(condition, callback);
从表 ChatMessage
中删除消息。
- condition:条件
- callback:回调
代码示例
ZX_CLIENT.ImMsg.deleteChatMessage({ targetId: 12345 }, (data) => {
console.log(data);
});
# 设置消息已读
# ZX_CLIENT.ImMsg.toReadMsg(targetId, include, callback);
- 更新表
ChatMessage
中{targetId}
符合{include}
(数组)的消息messageStatus
为31
- 更新表
ConversationList
中{targetId}
的消息unreadMessageCount
为0
- targetId:对话 id
- include:需要更新的
messageStatus
,是个数组 - callback:回调
代码示例
更新 targetId
为 123456789
且 messageStatus
为 11 22 33 中的一个的消息为已读
ZX_CLIENT.ImMsg.toReadMsg("123456789", ["11", "22", "33"], (data) => {
console.log(data);
});