Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace electronExtension

Index

Electron 独有

getAllConversationList

  • 获取全部本地会话列表

    description

    本接口仅适用 Electron 平台获取全部本地会话列表

    • 注意:此接口不包含超级群会话
    since

    5.4.0

    example

    获取全部本地会话列表示例:

    const conversationList = await RongIMLib.electronExtension.getAllConversationList();
    console.log('获取全部本地会话列表结果:', conversationList);

    Parameters

    • Optional channelId: string

      频道 ID,不传则获取全部频道 ID 类型

    Returns Promise<IAsyncRes<IAReceivedConversation[]>>

    返回一个 IAsyncRes 类型 Promise,data 为 IAReceivedConversation 类型数组

getConversationList

  • 分页获取本地会话列表

    description

    本接口仅适用 Electron 平台分页获取本地会话列表,

    • 注意:不包含超级群会话
    defaultvalue

    topPriority false

    since

    5.4.0

    example

    分页获取本地会话列表示例:

    const startTime = 0;
    const count = 10;
    const conversationList = await RongIMLib.electronExtension.getConversationList(startTime, count);
    console.log('分页获取本地会话列表结果:', conversationList);

    Parameters

    • startTime: number

      获取会话起始时间,需要精确到毫秒,0 表示当前时间

    • count: number

      分页数量

    • Optional channelId: string

      频道 ID,不传则获取全部频道 ID 类型

    • Optional topPriority: boolean

      是否置顶优先

    Returns Promise<IAsyncRes<IAReceivedConversation[]>>

    返回一个 IAsyncRes 类型 Promise,data 为 IAReceivedConversation 类型数组

searchConversationByContent

  • 搜索本地会话列表

    description

    本接口仅适用 Electron 平台搜索本地会话列表

    • 注意
    1. 不包含超级群会话
    2. 支持查询自定义消息类型,需要再注册自定义消息时设置搜索字段,否则无法搜索 ,详细请查看 registerMessageType 的 searchProps 参数
    since

    5.4.0

    example

    搜索本地会话列表示例:

    const keyword = 'keyword';
    const messageTypes = [RongIMLib.MessageType.TEXT];
    const conversationList = await RongIMLib.electronExtension.searchConversationByContent(keyword, messageTypes);
    console.log('搜索本地会话列表结果:', conversationList);

    Parameters

    • keyword: string

      搜索关键字

    • messageTypes: string[]

      消息类型

    • Optional channelId: string

      频道 ID,不传则获取全部频道 ID 类型

    Returns Promise<IAsyncRes<IAReceivedConversation[]>>

    返回一个 IAsyncRes 类型 Promise,data 为 IAReceivedConversation 类型数组

getConversations

  • 批量获取会话列表

    description

    本接口仅适用 Electron 平台批量获取会话列表,通过提供会话的唯一标标识属性返回 IReceivedConversation 类型的会话信息

    • 注意
    1. 仅支持单群聊系统会话
    since

    5.9.9

    example

    批量获取会话列表示例:

    const conversations = [{ conversationType: RongIMLib.ConversationType.PRIVATE, targetId: 'targetId' }];
    const conversationList = await RongIMLib.electronExtension.getConversations(conversations);
    console.log('批量获取会话列表结果:', conversationList);

    Parameters

    • conversations: IConversationOption[]

      需要获取会话的信息,一次最多获取 100 个会话

    Returns Promise<IAsyncRes<IAReceivedConversation[]>>

    返回一个 IAsyncRes 类型 Promise,data 为 IAReceivedConversation 类型数组

searchMessages

  • 根据关键字搜索本地消息

    description

    本接口仅适用 Electron 平台搜索本地消息

    • 注意
    1. 文本类型消息只支持搜索 content,文件类型消息只支持搜索 name
    2. 自定义消息根据 registerMessageType 的 searchProps 参数决定
    3. 引用消息不支持搜索
    4. 如果不传 channelId,则在所有 channelId 中搜索消息
    5. 如果不传 messageTypes,则搜索所有支持搜索的消息类型
    since

    5.4.0

    example

    根据关键字搜索本地消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId',
    };
    const keyword = 'keyword';
    const startTime = Date.now();
    const count = 10;
    const res = await RongIMLib.electronExtension.searchMessages(conversation, keyword, startTime, count);
    console.info('根据关键字搜索本地消息结果:', res);

    Parameters

    • conversation: IConversationOption

      会话信息

    • keyword: string

      搜索关键字

    • startTime: number

      搜索时间, 搜索该时间之前的消息

    • count: number

      获取的数量

    • Optional messageTypes: string[]

      消息类型,@since 5.9.8 开始支持按照消息类型搜索,支持范围:文本(RC:TxtMsg)、文件(RC:FileMsg)、设置 {@link searchProps} 的自定义消息

    Returns Promise<IAsyncRes<{ messages: IAReceivedMessage[]; count: number | undefined }>>

    返回一个 IAsyncRes 类型 Promise,data 中包含 IAReceivedMessage 类型数组

searchMessageInTimeRange

  • 在指定时间范围内搜索本地消息

    description

    本接口仅适用 Electron 平台搜索本地消息

    since

    5.4.0

    example

    在指定时间范围内搜索本地消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId'
    }
    const option = {
    keyword: 'keyword',
    startTime: 0,
    endTime: 1632728573423,
    }
    const res = await RongIMLib.electronExtension.searchMessageInTimeRange(conversation, option)
    console.info('在指定时间范围内搜索本地消息结果:', res);

    Parameters

    Returns Promise<IAsyncRes<{ messages: IAReceivedMessage[] }>>

    返回一个 IAsyncRes 类型 Promise,data 中包含 IAReceivedMessage 类型数组

searchMessagesByUser

  • 根据用户 ID 搜索本地消息

    description

    本接口仅适用 Electron 平台在指定会话的所有频道中根据用户 ID 搜索时间范围内的消息

    since

    5.7.10

    example

    根据用户 ID 搜索本地消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId'
    };
    const userId = 'userId';
    const startTime = Date.now();
    const count = 10;
    const res = await RongIMLib.electronExtension.searchMessagesByUser(conversation, userId, startTime, count);
    console.info('根据用户 ID 搜索本地消息', res);

    Parameters

    • conversation: IConversationOption

      会话信息

    • userId: string

      用户 ID

    • startTime: number

      搜索时间,搜索时间之前的消息

    • count: number

      获取的数量

    Returns Promise<IAsyncRes<{ messages: IAReceivedMessage[] }>>

    返回一个 IAsyncRes 类型 Promise,data 中包含 IAReceivedMessage 类型数组

getHistoryMessagesByMessageTypes

  • 获取会话中指定类型的消息

    description

    本接口仅适用 Electron 平台获取会话中指定类型的消息

    since

    5.4.0

    example

    获取会话中指定类型的消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId'
    };
    const options = { messageTypes: [RongIMLib.MessageType.TEXT] };
    const res = await RongIMLib.electronExtension.getHistoryMessagesByMessageTypes(conversation, option);
    console.info('获取会话中指定类型的消息结果:', res);

    Parameters

    Returns Promise<IAsyncRes<{ messages: IAReceivedMessage[] } & GetHistoryMessageResult>>

    返回一个 IAsyncRes 类型 Promise,data 中包含 IAReceivedMessage 类型数组

getContinuousMessages

  • 获取本地与远端历史消息

    description

    本接口仅适用 Electron 平台且需要业务层开启单群聊云存储服务 方法与 getRemoteHistoryMessages 的区别是 getContinuousMessages 会先查询指定会话存储本地数据库的消息, 当本地消息无法满足查询条件时,再查询在单群聊消息云端存储中的历史消息,以返回连续且相邻的消息对象列表

    • 注意
    1. 分页获取时,下次传的时间戳必须使用 getContinuousMessages 接口返回的 timestamp
    2. 获取历史消息逻辑:优先获取本地数据历史消息,本地获取不到再获取远端历史消息,但是该情况可能会因为离线或者补偿消息存储天数影响,出现消息断档现象 消息断档现象:因为离线或者补偿消息存储天数影响,存储在本地数据库中消息存在不连续或者说中间某段时间消息丢失 比如离线消息和补偿消息都为 1 天,第一天 A 给 B 发送 1, 2, 3,第二天 A 给 B 发送 4, 5, 6, B 第二天再登入,由于离线消息和补偿消息都为 1 天,所以 B 只能收到 4, 5, 6。 1, 2, 3 消息丢失
    3. option 中的 Count 字段仅支持 1-100 范围
    since

    5.9.6

    example

    获取本地与远端历史消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId'
    };
    const options = { timestamp: 0, count: 20, order: 0 };
    const res = await RongIMLib.electronExtension.getContinuousMessages(conversation, option);
    console.info('获取本地与远端历史消息结果:', res);

    Parameters

    Returns Promise<IAsyncRes<{ list: IAReceivedMessage[]; timestamp: number; hasMore: boolean }>>

    返回一个 IAsyncRes 类型 Promise,data 中包含 IAReceivedMessage 类型数组

setMessageStatusToRead

  • 通过时间戳设置消息状态为对方已读

    description

    将自己发送的指定时间之前的消息设置为对方已读,状态值为 SentStatus.READ

    since

    5.4.0

    example

    通过时间戳设置消息状态为对方已读示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId'
    };
    const timestamp = Date.now();
    const res = await RongIMLib.electronExtension.setMessageStatusToRead(conversation, timestamp);
    console.info('通过时间戳设置消息状态为对方已读结果:', res);

    Parameters

    • conversation: IConversationOption

      会话信息

    • timestamp: number

      消息的发送时间,将该时间之前的消息设置为已读

    Returns Promise<IAsyncRes<boolean>>

    返回一个 IAsyncRes 类型 Promise,data 为 boolean 类型的操作结果

setMessageReceivedStatusInfo

  • 设置消息的接收状态

    description

    本接口仅适用 Electron 平台设置消息的接收状态,支持多状态同时设置 设置对方发送的消息 自己的接受状态信息

    since

    5.9.3

    example

    设置消息的接收状态示例:

    const messageId = 123;
    const receivedStatusInfo = {
    isRead: true,
    isListened: true,
    };
    const res = await RongIMLib.electronExtension.setMessageReceivedStatusInfo(messageId, receivedStatusInfo);
    console.info('设置消息的接收状态结果:', res);

    Parameters

    • messageId: number

      消息 ID,注意:需要传递的参数为 number 类型的 messageId 而非 string 类型的 messageUId

    • receivedStatusInfo: IReceivedStatusInfo

      接受状态信息,类型为 IReceivedStatusInfo

    Returns Promise<IAsyncRes<void>>

    返回一个 IAsyncRes 类型 Promise,data 为 void

setMessageSentStatus

  • 设置消息的发送状态

    description

    本接口仅适用 Electron 平台设置自己发送的消息的发送状态

    since

    5.4.0

    example

    设置消息的发送状态示例:

    const messageId = 123;
    const sentStatus = RongIMLib.SentStatus.SENT;
    const res = await RongIMLib.electronExtension.setMessageSentStatus(messageId, sentStatus);
    console.info('设置消息的发送状态结果:', res);

    Parameters

    • messageId: number

      消息ID,注意:需要传递的参数为 number 类型的 messageId 而非 string 类型的 messageUId

    • sentStatus: SentStatus

      消息的发送状态,类型为 SentStatus

    Returns Promise<IAsyncRes<void>>

    返回一个 IAsyncRes 类型 Promise,data 为 void

deleteMessages

  • deleteMessages(messageIds: number[]): Promise<IAsyncRes<void>>
  • 通过消息 ID 删除消息

    description

    本接口仅适用 Electron 平台 通过消息 ID 从本地消息数据库中删除指定的一条或一组消息数据。删除多条消息时,请确保消息 ID 均属于同一会话

    since

    5.4.0

    example

    通过消息 ID 删除消息示例:

    const messageIds = [1, 2];
    const res = await RongIMLib.electronExtension.deleteMessages(messageIds);
    console.info('通过消息 ID 删除消息结果:', res);

    Parameters

    • messageIds: number[]

      消息 ID 列表, 需是同一会话的消息

    Returns Promise<IAsyncRes<void>>

    返回一个 IAsyncRes 类型 Promise,data 为 void

clearMessages

  • 清空会话下历史消息

    description

    本接口仅适用 Electron 平台,从本地消息数据库中删除指定会话所有消息。

    since

    5.4.0

    example

    清空会话下历史消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId',
    };
    const res = await RongIMLib.electronExtension.clearMessages(conversation);
    console.info('清空会话下历史消息结果:', res);

    Parameters

    Returns Promise<IAsyncRes<void>>

    返回一个 IAsyncRes 类型 Promise,data 为 void

deleteMessagesByTimestamp

  • 通过时间戳删除

    description

    本接口仅适用 Electron 平台,根据时间戳,从本地消息数据库中删除单个会话中早于该时间戳的消息数据。

    since

    5.4.0

    example

    通过时间戳删除示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId',
    };
    const timestamp = Date.now();
    const cleanSpace = false;
    const res = await RongIMLib.electronExtension.deleteMessagesByTimestamp(conversation, timestamp, cleanSpace);
    console.info('通过时间戳删除结果:', res);

    Parameters

    • conversation: IConversationOption

      会话信息

    • timestamp: number

      指定删除该时间戳之前的消息

    • cleanSpace: boolean

      指定删除该时间戳之前的消息。是否清理数据条目所使用的磁盘空间。清理磁盘空间会阻塞进程且耗时较长,不推荐使用。 数据在被抹除的情况下,未清理的磁盘空间会在后续存储操作中复用,且对数据查询无影响

    Returns Promise<IAsyncRes<void>>

    返回一个 IAsyncRes 类型 Promise,data 为 void

insertMessage

  • 向本地插入一条消息

    description

    本接口仅适用 Electron 平台,插入消息到本地数据库,不发送到服务器

    • 注意:插入消息时,messageUId 将不会存入数据库
    since

    5.4.0

    defaultvalues

    options = {}

    example

    插入消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId',
    };
    const message = new RongIMLib.TextMessage({ content: 'hello' });
    const options = {
    searchContent: 'hello',
    };
    const res = await RongIMLib.electronExtension.insertMessage(conversation, message, options);
    console.info('插入消息结果:', res);

    Parameters

    Returns Promise<IAsyncRes<IAReceivedMessage>>

    返回一个 IAsyncRes 类型 Promise,data 为 IAReceivedMessage 类型的消息对象

getMessageCount

  • 获取会话所有消息数

    description

    本接口仅适用 Electron 平台,获取指定会话下的所有消息数

    since

    5.7.2

    example

    获取会话所有消息数示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId',
    };
    const res = await RongIMLib.electronExtension.getMessageCount(conversation);
    console.info('获取会话所有消息数结果:', res);

    Parameters

    Returns Promise<IAsyncRes<number>>

    返回一个 IAsyncRes 类型 Promise,data 消息数

setCheckDuplicateMessage

  • setCheckDuplicateMessage(checkDuplicate?: boolean): Promise<IAsyncRes<boolean>>
  • 设置融云消息重排开关

    description

    发送方弱网情况下发送消息,消息到达服务但发送方没有收到服务 ack,导致发送方认为消息发送失败 此种情况下,服务端和接收方都会收到第一条消息 此时发送方重发该消息,再次达到服务,那么此时服务端会有两条消息(消息内容相同,messageUid 不同 接收方会收到两条内容相同 messageUId 不同的消息,SDK 此时会把第二条相同内容消息排重掉 以此来保证重发的相同内容消息,发送方只有一条消息,接收方也只有一条消息

    当消息量少时,消息排重影响不大;但是本地存在大量消息时,排重会出现性能问题 当本地存在大量消息,且发生收消息卡顿时,建议将排重关闭

    since

    5.7.1

    example

    设置融云消息重排开关示例:

    const checkDuplicate = true;
    const res = await RongIMLib.electronExtension.setCheckDuplicateMessage(checkDuplicate);
    console.info('设置融云消息重排开关结果:', res);

    Parameters

    • Optional checkDuplicate: boolean

      是否使用融云消息重排机制 true: 开启, false: 关闭

    Returns Promise<IAsyncRes<boolean>>

    返回一个 IAsyncRes 类型 Promise,data 为 boolean 类型的操作结果

getMessagesAroundTimestamp

  • 获取本地指定时间戳前后 N 条消息方法

    description

    本接口仅适用 Electron 平台,获取本地指定时间戳前后 N 条消息

    since

    5.9.8

    example

    获取本地指定时间戳前后 N 条消息示例:

    const conversation = {
    conversationType: RongIMLib.ConversationType.PRIVATE,
    targetId: 'targetId',
    };
    const option = {
    timestamp: 0,
    beforeCount: 10,
    afterCount: 10,
    };
    const res = await RongIMLib.electronExtension.getMessagesAroundTimestamp(conversation, option);
    console.info('获取本地指定时间戳前后 N 条消息结果:', res);

    Parameters

    • conversation: IConversationOption

      会话信息

    • option: { timestamp: number; beforeCount: number; afterCount: number }

      获取参数

      • timestamp: number
      • beforeCount: number
      • afterCount: number

    Returns Promise<IAsyncRes<IAReceivedMessage[]>>

    返回一个 IAsyncRes 类型 Promise,data 为 {@link IAReceivedMessage[]} 类型的消息列表

clearLocalData

  • clearLocalData(): Promise<IAsyncRes<boolean>>
  • 清除本地数据

    description

    该方法用于清除本地数据,包括消息列表、会话列表、拉取消息的时间戳

    • 注意:清除后在此登录会作为新设备进行消息拉取切操作无法恢复,谨慎使用
    since

    5.4.0

    example

    清除本地数据示例:

    const res = await RongIMLib.electronExtension.clearLocalData();
    console.info('清除本地数据结果:', res);

    Returns Promise<IAsyncRes<boolean>>

    返回一个 IAsyncRes 类型 Promise,data 为 boolean 类型,表示是否清除成功

enable

  • enable(): boolean
  • 获取是否使用 Electron 扩展

    description

    该方法用于判断当前是否使用 Electron 扩展

    since

    5.8.3

    example

    获取是否使用 Electron 扩展示例:

    const res = await RongIMLib.electronExtension.enable();
    console.info('获取是否使用 Electron 扩展结果:', res);

    Returns boolean

    是否使用 Electron 扩展

其他

setMessageReceivedStatus

  • 设置消息的接收状态

    since

    5.4.0

    deprecated

    @since 5.9.3 MLib SDK 版本 ≧ 5.9.3,建议使用 setMessageReceivedStatusInfo 接口替换

    Parameters

    • messageId: number

      消息 ID

    • receivedStatus: ReceivedStatus

      接受状态

    Returns Promise<IAsyncRes<void>>