【问题标题】:Retrieve messages with PubNub History API once and use them in multiple views使用 PubNub History API 检索一次消息并在多个视图中使用它们
【发布时间】:2014-06-23 10:05:37
【问题描述】:

我正在使用 PubNub iOS SDK 开发一个应用程序,效果很好,但是历史记录 API 有一个烦人的问题。

我必须在多个视图控制器中列出消息历史记录,这很好用,但每次打开新视图时我都必须等待 2-3 秒才能看到消息。有什么常见的做法可以避免这种情况吗?

我在每个视图控制器viewDidLoad 中使用requestHistoryForChannel: with block。我知道这是一个问题,因为每次打开新视图时,客户端都需要重新连接并再次检索历史记录,但我找不到更好的解决方案。我必须在每个视图中下载相同频道的历史记录,所以内容总是相同的,因此我认为当我启动应用程序并在整个应用程序中使用该数据并且不要等待时,我认为绝对有可能获取消息,但是我不知道该怎么做。

【问题讨论】:

    标签: ios objective-c pubnub


    【解决方案1】:

    其实这不是 PubNub SDK 的问题。我可以建议您创建一个数据模型来为您管理缓存,并且只有在需要或您认为应该将其拉出时才会拉出历史记录。

    关于重连:PubNub SDK 一直维护少量 TCP 连接,直到应用程序挂起或断开连接请求时才拆除它们。事实上,您花费了 2 秒,这意味着存在大量数据、连接速度慢或两种情况。您还可以使用limit 参数限制要接收的消息数量,或者可以使用startDateendDate 参数对消息进行切片(有很多与history API 相关的指定方法) .

    【讨论】:

    • 谢谢,我会先尝试限制消息。实际上我使用了一些观察者方法,例如addClientConnectionStateObserver:,这些方法会影响速度还是无关紧要?
    • @cimp23 这是观察者,它只负责事件传递。顺便说一句,您可以使用它在历史处理完成时注册少数观察者(如果需要)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    相关资源
    最近更新 更多