PubNub:如何获取最近5条消息

时间:2016-06-08 16:58:34

标签: ios pubnub

我的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条消息?

我首先不明白这个逻辑。为什么第一个语句完全忽略反向参数?

1 个答案:

答案 0 :(得分:4)

PubNub历史课;)

历史API最初可能有点神秘,但一旦了解它的工作原理,您就可以得到您所需要的。也就是说,我们(PubNub)正在开发一个功能更强大,更易于使用,功能更丰富的历史API。

您的问题的答案

  1. 当您提供startend参数时,将忽略reverse参数,而是使用默认值false,这意味着获取消息从最新的timetoken(end参数)开始,并及时向后移动,直到检索到5条消息(您的count参数值)。
  2. 如果您只想要最后5条消息(最新的5条消息),只需将startend设置为nil,请将count设置为5reversefalse。如果您想要前5条消息(最早的5条消息),请将reverse设置为true
  3. PubNub历史的一些基本规则

    如果您可以了解history API的以下规则,您将成为此主题的专家。

    1. 每个history调用可以返回的最大邮件数为100.您可以使用count参数指定少于100,但不能指定更多。如果您需要超过100条消息,则可以翻阅历史记录(不在此处覆盖)。
    2. 仅使用start参数始终返回 old 消息,而不是提供的时间消息。如果您设置reverse = true,则会收到消息 newer 而不是提供的时间。并且start是独占的(带有timetoken = start的消息是 NOT 返回)。
    3. 仅使用end参数始终返回消息 newer 而不是提供的timetoken。如果您设置reverse = true,则会收到消息,而不是提供的时间。并且end是包含的(返回带有timetoken = end的消息)。
    4. 当您提供startend参数时,将忽略reverse参数,并使用默认值false。这是因为它总是只在该时间范围内提供结果。
    5. reverse参数指示要搜索的时间轴的哪一端:最早的消息和转发(从左到右),reverse = true或最新消息,向后,reverse = false(默认值)。
    6. 如果您使用history拨打reverse = false而没有其他参数(startendcount),您将获得最多< / em> 100条最新消息(如果该通道的历史记录中消息少于100条,则为&lt; 100)。这是因为您从时间轴的最新一端开始搜索历史记录。
    7. 如果您使用history拨打reverse = true而没有其他参数(startendcount),您将获得最多< / em> 100个最旧的消息(如果该通道的历史记录中少于100条消息,则<100)。这是因为您从时间轴的最旧端开始搜索历史记录。
    8. 请参阅Storage And Playback Getting Started Guide,详细了解PubNub history API的工作原理(使用时间线图)。