【问题标题】:How to not "play catch up" on missed messages when subscribing to a channel using the PubNub iOS SDK?使用 PubNub iOS SDK 订阅频道时,如何不“追赶”错过的消息?
【发布时间】:2015-12-18 22:31:10
【问题描述】:

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

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

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

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

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

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

有没有办法收到所有错过的消息?

【问题讨论】:

    标签: ios objective-c pubnub


    【解决方案1】:

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

    【讨论】:

    • 最新版本 (v4.2.3) 修复了这个问题。谢谢!
    【解决方案2】:

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

    你必须先定义你的PNConfiguration

        @property(nonatomic, strong) PNConfiguration *myConfig;
    

    然后 PubNub 为您提供如下选项:

        self.myConfig.restoreSubscription = NO;
    

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

        [PubNub setConfiguration:self.myConfig];
    

    有关配置的更多信息位于上述 PubNub 链接的配置部分。

    【讨论】:

    • 感谢您的回复!如果连接丢失,看起来restoreSubscription 会自动将订阅恢复到之前订阅的直播频道(并播放追赶)。我确实想要这个功能。但是,我不希望手动创建新订阅(通过-[PubNub subscribeToChannels:*])以追赶所有错过的消息。
    • @JoshSklar 当客户端取消订阅所有频道然后通过请求订阅它们恢复时出现问题(在单独的回复中提到)。正常行为是 -subscribeToChannels: 是附加的,如果客户端已经订阅了某些频道,它将继续使用早先收到的时间戳与您现在订阅的频道(同样,这是不受影响的时候通过我们为您解决并在新版本中推送的错误)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多