在我的聊天视图控制器的viewDidLoad中,我写了self.appDelegate.client?.historyForChannel(currentChannel, start: nil, end: nil, limit: 20, withCompletion:
,它检索了20条最近的消息。不过,我希望在最近20条消息之前检索早期/旧消息,以获得无限滚动功能。我怎样才能做到这一点?Swift + Pubnub聊天应用加载滚动的旧消息
回答
商店从Pubnub历史收到的第一条消息的时间戳接收未来20个消息:
self.client?.historyForChannel(channel, start: lastStoredTimstamp, end: nil, limit: 20, reverse: false, withCompletion:
我已经测试过它,它工作得很好。
小说明: 仅使用start参数总是返回比提供的时间标记更早的消息。如果你设置reverse = true,你会得到比所提供的时间标记更新的消息。
请参阅https://www.pubnub.com/docs/swift/storage-and-history PubNub历史API如何与时间线图一起工作。
它可以通过UIScrollViewDelegate
完成(在你的情况,这是内部的UITableView)
首先,设置你的UITableView
的代表。
然后,你必须重写scrollViewDidScroll(_ scrollView: UIScrollView)
,这是一个示例代码:
let currentOffset = scrollView.contentOffset.y
let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height
let deltaOffset = maximumOffset - currentOffset
if (deltaOffset <= 0)
// call to self.appDelegate.client?.historyForChannel with the offsets
)
的,如果当你已经达到到列表的底部表达会罢工。
self.appDelegate.client?.historyForChannel
包含开始&结束偏移量。可以通过在每次调用historyForChannel
后加上+20(在某处声明一个类变量)来计算开始时间,但只有响应中的对象没有某些唯一ID时才能起作用。
问题是'start'和'end'是NSNumbers,它们应该是日期。这就是为什么我不能为每个卷轴做简单的+20 –
- 1. 制作聊天消息正文滚动
- 2. Angular的Pubnub聊天
- 3. 使用Pubnub的聊天应用程序
- 4. Pubnub聊天应用程序与存储
- 5. PubNub中的聊天消息订购策略
- 6. Swift 3 Firebase聊天应用程序重复消息
- 7. 当聊天室的任何用户发布消息时,如何重新加载聊天室的消息?
- 8. ios聊天消息应用程序
- 9. 将PubNub添加到聊天服务器
- 10. Javascript + Pubnub聊天室通知
- 11. 解析+ PubNub:私人聊天
- 12. Quickblox iOS下载聊天消息附件
- 13. 如何向下滚动到ajax聊天上的新消息?
- 14. 聊天滚动条
- 15. 聊天消息窗口移动
- 16. 聊天(XMPP)消息平台
- 17. 分隔聊天消息
- 18. linphone聊天消息问题
- 19. 发送聊天消息
- 20. Facebook xmpp聊天消息
- 21. Rails api PUSH聊天消息
- 22. javascript聊天显示消息
- 23. 在所有单元中加载相同消息的聊天
- 24. 移动聊天应用.net Api发送消息
- 25. 自动滚动聊天室
- 26. Node.js聊天应用不加载
- 27. 聊天并使滚动条置于底部并追加新消息。
- 28. Firebase聊天室 - 删除旧信息
- 29. 当发送消息时,Socket.io聊天重新加载页面
- 30. Swift中的聊天应用程序ios9
您可否在您的问题中详细说明“我需要检索另外20条消息”部分!哪20条消息? –
说消息历史有40条消息,viewDidLoad检索消息[0]〜[19],我将如何检索[20]〜[39]? –