IMSDK
即时通信 IM 提供全球接入、单聊、群聊、消息推送、资料关系链托管、账号鉴权等全方位解决方案,并提供完备的 App 接入、后台管理接口。
V2TIMMessageListGetOption

属性

V2TIMMessageGetType getType
 
NSString * userID
 
NSString * groupID
 
NSUInteger count
 
NSArray< NSNumber * > * messageTypeList
 
V2TIMMessagelastMsg
 
NSUInteger lastMsgSeq
 
NSUInteger getTimeBegin
 
NSUInteger getTimePeriod
 
NSArray< NSNumber * > * messageSeqList
 

属性说明

◆ getType

- (V2TIMMessageGetType) getType
readwritenonatomicassign

拉取消息类型,可以设置拉取本地、云端更老或者更新的消息

注意

当设置从云端拉取时,会将本地存储消息列表与云端存储消息列表合并后返回。如果无网络,则直接返回本地消息列表。

关于 getType、拉取消息的起始消息、拉取消息的时间范围 的使用说明:

  • getType 可以用来表示拉取的方向:往消息时间更老的方向 或者 往消息时间更新的方向;
  • lastMsg/lastMsgSeq 用来表示拉取时的起点,第一次拉取时可以不填或者填 0;
  • getTimeBegin/getTimePeriod 用来表示拉取消息的时间范围,时间范围的起止时间点与拉取方向(getType)有关;
  • 当起始消息和时间范围都存在时,结果集可理解成:「单独按起始消息拉取的结果」与「单独按时间范围拉取的结果」 取交集;
  • 当起始消息和时间范围都不存在时,结果集可理解成:从当前会话最新的一条消息开始,按照 getType 所指定的方向和拉取方式拉取。

◆ userID

- (NSString*) userID
readwritenonatomicstrong

拉取单聊历史消息

◆ groupID

- (NSString*) groupID
readwritenonatomicstrong

拉取群组历史消息

◆ count

- (NSUInteger) count
readwritenonatomicassign

拉取消息数量

◆ messageTypeList

- (NSArray<NSNumber *>*) messageTypeList
readwritenonatomicstrong

拉取的消息类型集合,getType 为 V2TIM_GET_LOCAL_OLDER_MSG 和 V2TIM_GET_LOCAL_NEWER_MSG 有效,传 nil 表示拉取全部类型消息,取值详见 @V2TIMElemType。

◆ lastMsg

- (V2TIMMessage*) lastMsg
readwritenonatomicstrong

拉取消息的起始消息

注意

拉取 C2C 消息,只能使用 lastMsg 作为消息的拉取起点;如果没有指定 lastMsg,默认使用会话的最新消息作为拉取起点。

拉取 Group 消息时,除了可以使用 lastMsg 作为消息的拉取起点外,也可以使用 lastMsgSeq 来指定消息的拉取起点,二者的区别在于:

  • 使用 lastMsg 作为消息的拉取起点时,返回的消息列表里不包含当前设置的 lastMsg;
  • 使用 lastMsgSeq 作为消息拉取起点时,返回的消息列表里包含当前设置的 lastMsgSeq 所表示的消息。
注意
在拉取 Group 消息时,

如果同时指定了 lastMsg 和 lastMsgSeq,SDK 优先使用 lastMsg 作为消息的拉取起点。

如果 lastMsg 和 lastMsgSeq 都未指定,消息的拉取起点分为如下两种情况:

  • 如果设置了拉取的时间范围,SDK 会根据 @getTimeBegin 所描述的时间点作为拉取起点;
  • 如果未设置拉取的时间范围,SDK 默认使用会话的最新消息作为拉取起点。

◆ lastMsgSeq

- (NSUInteger) lastMsgSeq
readwritenonatomicassign

◆ getTimeBegin

- (NSUInteger) getTimeBegin
readwritenonatomicassign

拉取消息的时间范围 @getTimeBegin 表示时间范围的起点;默认为 0,表示从现在开始拉取;UTC 时间戳,单位:秒 @getTimePeriod 表示时间范围的长度;默认为 0,表示不限制时间范围;单位:秒

注意

时间范围的方向由参数 getType 决定

如果 getType 取 V2TIM_GET_CLOUD_OLDER_MSG/V2TIM_GET_LOCAL_OLDER_MSG,表示从 getTimeBegin 开始,过去的一段时间,时间长度由 getTimePeriod 决定

如果 getType 取 V2TIM_GET_CLOUD_NEWER_MSG/V2TIM_GET_LOCAL_NEWER_MSG,表示从 getTimeBegin 开始,未来的一段时间,时间长度由 getTimePeriod 决定

取值范围区间为闭区间,包含起止时间,二者关系如下:

  • 如果 getType 指定了朝消息时间更老的方向拉取,则时间范围表示为 [getTimeBegin-getTimePeriod, getTimeBegin]
  • 如果 getType 指定了朝消息时间更新的方向拉取,则时间范围表示为 [getTimeBegin, getTimeBegin+getTimePeriod]

◆ getTimePeriod

- (NSUInteger) getTimePeriod
readwritenonatomicassign

◆ messageSeqList

- (NSArray<NSNumber *>*) messageSeqList
readwritenonatomicstrong

拉取群组历史消息时,支持按照消息序列号 seq 拉取(从 7.1 版本开始有效)

注意
  • 仅拉取群组历史消息时有效;
  • 消息序列号 seq 可以通过 V2TIMMessage 对象的 seq 字段获取;
  • 当 getType 设置为从云端拉取时,会将本地存储消息列表与云端存储消息列表合并后返回;如果无网络,则直接返回本地消息列表;
  • 当 getType 设置为从本地拉取时,直接返回本地的消息列表;
  • 当 getType 设置为拉取更旧的消息时,消息列表按照时间逆序,也即消息按照时间戳从大往小的顺序排序;
  • 当 getType 设置为拉取更新的消息时,消息列表按照时间顺序,也即消息按照时间戳从小往大的顺序排序。