使用 PubNub iOS SDK 订阅频道时如何不 "play catch up" 错过消息?

How to not "play catch up" on missed messages when subscribing to a channel using the PubNub iOS SDK?

我正在使用 PubNub iOS SDK 并取消订阅某个频道,然后不久后(1-3 分钟)我重新订阅它。

我注意到当订阅一个频道时,PubNub 将发送自取消订阅该频道后错过的所有消息(有限制)。我在 this blog post and this one 中看到,这可以在 JavaScript SDK 中通过在订阅频道的调用中使用 restore: true 来完成。

我尝试做相反的事情 - 使用 restore: false - 订阅时:

NSString *channelName = @"myChannelName";
NSDictionary *state = @{channelName: @{@"restore": @(NO)}};

[self.client subscribeToChannels:@[channelName]
                    withPresence:YES
                     clientState:state];

然而,这并没有奏效,所有错过的消息都在订阅后直接收到。

有什么方法可以收到所有错过的消息吗?

根据 the PubNub GitHub,这可以通过将 PNConfiguration 中的 restoreSubscription 设置为 NO 来抑制。

您必须先定义您的 PNConfiguration

    @property(nonatomic, strong) PNConfiguration *myConfig;

然后 PubNub 给你如下选项:

    self.myConfig.restoreSubscription = NO;

然后在您的 PubNub 上设置您的配置

    [PubNub setConfiguration:self.myConfig];

有关配置的更多信息位于上面 PubNub link 的 配置 部分。

感谢您报告此问题。我们检查了负责取消订阅的代码,并找到了它可能发生在您身上的原因。版本已推送并可用于 GitHub 和 CocoaPods (v4.2.3),应该可以解决您的问题。