我的Pubnub频道中有二十多条消息。然后我尝试使用
获取最后五条消息let startTimeToken = dateToTimeToken(NSDate(timeIntervalSince1970: 0)) //unix time interval 0
let endTimeToken = dateToTimeToken(NSDate()) // now
self.pubnub?.historyForChannel(room, start: startTimeToken, end: endTimeToken,
limit: 5, reverse: true, includeTimeToken: true, withCompletion: {
(result, status) -> Void in
}
并发现,反向参数是真还是假,我总是得到FIRST五条消息而不是最后一条消息。
获取最后五条消息的唯一方法是
self.pubnub?.historyForChannel(room, start: endTimeToken, end: nil,
limit: 5, reverse: false, includeTimeToken: true, withCompletion: {
(result, status) -> Void in
}
但到底是什么? start = end,end = nil,reverse = false 你得到最后5条消息?
我首先不明白这个逻辑。为什么第一个语句完全忽略反向参数?
答案 0 :(得分:4)
历史API最初可能有点神秘,但一旦了解它的工作原理,您就可以得到您所需要的。也就是说,我们(PubNub)正在开发一个功能更强大,更易于使用,功能更丰富的历史API。
start
和end
参数时,将忽略reverse
参数,而是使用默认值false
,这意味着获取消息从最新的timetoken(end
参数)开始,并及时向后移动,直到检索到5条消息(您的count
参数值)。start
和end
设置为nil
,请将count
设置为5
和reverse
到false
。如果您想要前5条消息(最早的5条消息),请将reverse
设置为true
。如果您可以了解history
API的以下规则,您将成为此主题的专家。
history
调用可以返回的最大邮件数为100.您可以使用count
参数指定少于100,但不能指定更多。如果您需要超过100条消息,则可以翻阅历史记录(不在此处覆盖)。start
参数始终返回 old 消息,而不是提供的时间消息。如果您设置reverse = true
,则会收到消息 newer 而不是提供的时间。并且start
是独占的(带有timetoken = start
的消息是 NOT 返回)。 end
参数始终返回消息 newer 而不是提供的timetoken。如果您设置reverse = true
,则会收到旧消息,而不是提供的时间。并且end
是包含的(返回带有timetoken = end
的消息)。 start
和end
参数时,将忽略reverse
参数,并使用默认值false
。这是因为它总是只在该时间范围内提供结果。reverse
参数指示要搜索的时间轴的哪一端:最早的消息和转发(从左到右),reverse = true
或最新消息,向后,reverse = false
(默认值)。history
拨打reverse = false
而没有其他参数(start
,end
,count
),您将获得最多< / em> 100条最新消息(如果该通道的历史记录中消息少于100条,则为&lt; 100)。这是因为您从时间轴的最新一端开始搜索历史记录。history
拨打reverse = true
而没有其他参数(start
,end
,count
),您将获得最多< / em> 100个最旧的消息(如果该通道的历史记录中少于100条消息,则<100)。这是因为您从时间轴的最旧端开始搜索历史记录。请参阅Storage And Playback Getting Started Guide,详细了解PubNub history
API的工作原理(使用时间线图)。