浏览 SDKs · iOS
平台
SDKsiOS

按 ID 查找消息

使用 iOS SDK 按 conversationID 与 clientMsgID 定位消息。

复制

通过指定会话 ID 和客户端消息 ID 列表,可调用查找消息列表接口在本地精准定位一条或多条历史消息。

OIMFindMessageListParam *query = [OIMFindMessageListParam new];
query.conversationID = conversationID;
query.clientMsgIDList = @[clientMsgID];

[[OIMManager manager] findMessageList:@[query]
    onSuccess:^(OIMSearchResultInfo * _Nullable result) {
        OIMSearchResultItemInfo *item = result.findResultItems.firstObject;
        OIMMessageInfo *message = item.messageList.firstObject;
        if (message != nil) {
            [self openMessage:message conversationID:item.conversationID];
        }
    }
    onFailure:^(NSInteger code, NSString * _Nullable msg) {
        // 处理查询失败
    }];

参数说明

  • paramList:查询参数数组(NSArray<OIMFindMessageListParam *>),支持同时传入多个会话的查询条件。
  • 每个 OIMFindMessageListParam 对象包含:
  • conversationID:目标会话 ID。
  • clientMsgIDList:待查找的客户端消息 ID 列表(NSArray<NSString *>)。

返回结果

  • onSuccess:返回 OIMSearchResultInfo 搜索结果对象。
  • totalCount:查找到的消息总数。
  • findResultItems:按会话分组的查找结果列表(NSArray<OIMSearchResultItemInfo *>)。每个结果对象包含 conversationID 和对应的 messageList。
  • onFailure:查询失败回调,返回错误码 code 和错误信息 msg。

客户端状态合并

  • 查找消息接口仅读取本地数据快照,不会触发新消息接收事件。
  • 当本地数据库尚未同步、消息已被删除或指定的客户端消息 ID 不存在时,对应结果列表中将不包含该消息。业务层应依据 conversationID 与 clientMsgID 对应匹配,避免依赖数组下标顺序。