根据最新的PubNub 3.6.2 documentation,我使用以下方法检索频道中发送的最新10条消息:
PNDate *now = [PNDate dateWithDate:[NSDate date]];
[PubNub requestHistoryForChannel:self.currentChannel from:nil to:now limit:10 reverseHistory:YES includingTimeToken:YES withCompletionBlock:^(NSArray *retrivedMessages, PNChannel *channel, PNDate *beginDate, PNDate *endDate, PNError *error) {
...}];
我的问题是,在此频道发送了10条消息后,此方法只会检索第一个 10条消息,而不是最新的10条消息。我以为使用from:nil to:now
会一直收到最新消息,并且想知道我是否遗漏了某些内容?
由于
答案 0 :(得分:3)
daspianist,
您获得前10条消息的原因是您已指定reverseHistory:YES
。这具有从最早的消息开始遍历消息历史的效果。
例如,如果我的消息队列是:1,2,3,4,5,6,8,9,10
(其中1
是最早的消息,10
是最新消息)。
[PubNub requestHistoryForChannel:self.currentChannel from:nil to:now limit:3 reverseHistory:YES includingTimeToken:YES withCompletionBlock:^(NSArray *retrivedMessages, PNChannel *channel, PNDate *beginDate, PNDate *endDate, PNError *error) {
...}];
应该返回:
[1,2,3]
通过设置reverseHistory:NO
,呼叫应该是队列中最新的消息。
所以基于前面的例子:
[PubNub requestHistoryForChannel:self.currentChannel from:nil to:now limit:3 reverseHistory:NO includingTimeToken:YES withCompletionBlock:^(NSArray *retrivedMessages, PNChannel *channel, PNDate *beginDate, PNDate *endDate, PNError *error) {
...}];
应该返回:
[8,9,10]