跳转至

获取历史消息

本地获取

获取某个会话中最新消息

指定数量

提示

  1. 此方法会获取该会话中指定数量的最新消息实体,返回的消息实体按照时间从新到旧排列。
  2. 可以设置获取消息的数量,如果会话中的消息数量小于参数 count 的值,会将该会话中的所有消息返回。
参数 类型 说明
conversationType RCConversationType 会话类型。
targetId NSString 目标会话 Id
count int 需要获取的消息数量
返回值 NSArray 消息实体 RCMessage 对象列表
- (NSArray *)getLatestMessages:(RCConversationType)conversationType
                      targetId:(NSString *)targetId
                         count:(int)count;

指定消息之前且指定数量

提示

  1. 此方法会获取该会话中,oldestMessageId 之前的、指定数量的最新消息实体,返回的消息实体按照时间从新到旧排列。
  2. 返回的消息中不包含 oldestMessageId 对应那条消息,如果会话中的消息数量小于参数 count 的值,会将该会话中的所有消息返回。
  3. 如果 oldestMessageId10count2,会返回 messageId98RCMessage 对象列表。
参数 类型 说明
conversationType RCConversationType 会话类型。
targetId NSString 目标会话 Id
oldestMessageId long 截止的消息 Id
count int 需要获取的消息数量
返回值 NSArray 消息实体 RCMessage 对象列表
- (NSArray *)getHistoryMessages:(RCConversationType)conversationType
                       targetId:(NSString *)targetId
                oldestMessageId:(long)oldestMessageId
                          count:(int)count;

指定消息之前、指定数量且指定消息类型

提示

  1. 此方法会获取该会话中,oldestMessageId 之前的、指定数量的最新消息实体,返回的消息实体按照时间从新到旧排列。
  2. 返回的消息中不包含 oldestMessageId 对应那条消息,如果会话中的消息数量小于参数 count 的值,会将该会话中的所有消息返回。
  3. 如果 oldestMessageId10count2,会返回 messageId98RCMessage 对象列表。
参数 类型 说明
conversationType RCConversationType 会话类型。
targetId NSString 目标会话 Id
objectName NSString 消息内容的类型名
oldestMessageId long 截止的消息 Id
count int 需要获取的消息数量
返回值 NSArray 消息实体 RCMessage 对象列表
-(NSArray*)getHistoryMessages:(RCConversationType)conversationType
                     targetId:(NSString*)targetId
                   objectName:(NSString *)objectName
              oldestMessageId:(long)oldestMessageId
                        count:(int)count;

指定消息之前、指定数量、指定消息类型且可以设置向前或向后

提示

  1. 此方法会获取该会话中,baseMessageId 之前或之后的、指定数量、消息类型和查询方向的最新消息实体,返回的消息实体按照时间从新到旧排列。
  2. 返回的消息中不包含 baseMessageId 对应的那条消息,如果会话中的消息数量小于参数 count 的值,会将该会话中的所有消息返回。
参数 类型 说明
conversationType RCConversationType 会话类型。
targetId NSString 目标会话 Id
objectName NSString 消息内容的类型名
baseMessageId long 当前的消息 Id
isForward BOOL 查询方向 true 为向前,false 为向后
count int 需要获取的消息数量
返回值 NSArray 消息实体 RCMessage 对象列表
- (NSArray *)getHistoryMessages:(RCConversationType)conversationType
                       targetId:(NSString *)targetId
                     objectName:(NSString *)objectName
                  baseMessageId:(long)baseMessageId
                      isForward:(BOOL)isForward
                          count:(int)count;

指定消息之前、指定数量、指定多个消息类型且可以设置向前或向后

提示

  1. 此方法会获取该会话中,sentTime 之前或之后的、指定数量、指定消息类型(多个)的消息实体列表,返回的消息实体按照时间从新到旧排列。
  2. 返回的消息中不包含 sentTime 对应的那条消息,如果会话中的消息数量小于参数 count 的值,会将该会话中的所有消息返回。
参数 类型 说明
conversationType RCConversationType 会话类型。
targetId NSString 目标会话 Id
objectName NSString 消息内容的类型名
sentTime long long 当前的消息时间戳。
isForward BOOL 查询方向 true 为向前,false 为向后。
count int 需要获取的消息数量
返回值 NSArray 消息实体 RCMessage 对象列表
- (NSArray *)getHistoryMessages:(RCConversationType)conversationType
                       targetId:(NSString *)targetId
                    objectNames:(NSArray *)objectNames
                       sentTime:(long long)sentTime
                      isForward:(BOOL)isForward
                          count:(int)count;

指定消息之前且可以设置向前和向后各获取的消息数量

提示

  1. 返回的消息列表中会包含指定的消息。
  2. 消息列表时间顺序从旧到新。
  3. 获取该会话的这条消息及这条消息前 beforeCount 条和后 afterCount 条消息,如前后消息不够则返回实际数量的消息。
参数 类型 说明
conversationType RCConversationType 会话类型。
targetId NSString 目标会话 Id
sentTime long long 消息的发送时间
beforeCount BOOL 指定消息的前部分消息数量
afterCount int 指定消息的后部分消息数量
返回值 NSArray 消息实体 RCMessage 对象列表
- (NSArray *)getHistoryMessages:(RCConversationType)conversationType
                       targetId:(NSString *)targetId
                       sentTime:(long long)sentTime
                    beforeCount:(int)beforeCount
                     afterCount:(int)afterCount;

服务器端获取

提示

  1. 提供单聊、群聊、客服的历史消息获取,开发者每次可以从服务器获取之前 20 条以内的消息历史记录,最多获取前 6 个月的历史消息。
  2. 该功能需要在开发者后台“应用/IM 服务/高级功能设置”中开通 IM 商用版后,开启单群聊消息云存储功能才能使用,开发环境下可免费使用。
参数 类型 说明
conversationType RCConversationType 会话类型。
targetId NSString 目标会话 Id
recordTime long 从该时间点开始获取消息,第一次可传 0。
count int 需要获取的消息数量, 0 < count <= 20。
successBlock int 获取成功的回调 [messages: 获取到的历史消息数组]
errorBlock NSArray 获取失败的回调 [status: 获取失败的错误码]

successBlock:

参数 子元素类型 说明
messages RCMessage 获取到的历史消息数组
- (void)getRemoteHistoryMessages:(RCConversationType)conversationType
                        targetId:(NSString *)targetId
                      recordTime:(long)recordTime
                           count:(int)count
                         success:(void (^)(NSArray *messages))successBlock
                           error:(void (^)(RCErrorCode status))errorBlock;

注意

如果调用此接口获取到的消息在本地数据库中存在,会被排重,所以有可能会出现服务端有历史消息,但是返回的 messages 中没有消息对象。