Swift + Pubnub 聊天应用程序加载旧消息以进行滚动
Swift + Pubnub chat app load old message for scrolling
在我的聊天视图控制器的 viewDidLoad 中,我写了 self.appDelegate.client?.historyForChannel(currentChannel, start: nil, end: nil, limit: 20, withCompletion:
并检索了 20 条最近的消息。但是,我希望为我的无限滚动功能检索最近 20 条消息之前的 earlier/old 20 条消息。我该怎么做?
可以通过 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
)
当您到达列表底部时,if 表达式将触发。
self.appDelegate.client?.historyForChannel
包含开始和结束偏移量。 Start 可以通过在每次调用 historyForChannel
后添加 +20(在某处声明一个 class 变量)来计算,但只有当来自响应的对象没有一些唯一 ID 时它才有效。
存储您从 Pubnub 历史记录中收到的第一条消息的时间戳,以接收接下来的 20 条消息:
self.client?.historyForChannel(channel, start: lastStoredTimstamp, end: nil, limit: 20, reverse: false, withCompletion:
我已经测试过了,效果很好。
小说明:
仅使用开始参数总是 returns 早于提供的时间标记的消息。如果您设置 reverse = true,您将收到比提供的时间令牌更新的消息。
请参阅 https://www.pubnub.com/docs/swift/storage-and-history PubNub 历史记录 API 如何与时间线图一起使用。
在我的聊天视图控制器的 viewDidLoad 中,我写了 self.appDelegate.client?.historyForChannel(currentChannel, start: nil, end: nil, limit: 20, withCompletion:
并检索了 20 条最近的消息。但是,我希望为我的无限滚动功能检索最近 20 条消息之前的 earlier/old 20 条消息。我该怎么做?
可以通过 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
)
当您到达列表底部时,if 表达式将触发。
self.appDelegate.client?.historyForChannel
包含开始和结束偏移量。 Start 可以通过在每次调用 historyForChannel
后添加 +20(在某处声明一个 class 变量)来计算,但只有当来自响应的对象没有一些唯一 ID 时它才有效。
存储您从 Pubnub 历史记录中收到的第一条消息的时间戳,以接收接下来的 20 条消息:
self.client?.historyForChannel(channel, start: lastStoredTimstamp, end: nil, limit: 20, reverse: false, withCompletion:
我已经测试过了,效果很好。
小说明: 仅使用开始参数总是 returns 早于提供的时间标记的消息。如果您设置 reverse = true,您将收到比提供的时间令牌更新的消息。
请参阅 https://www.pubnub.com/docs/swift/storage-and-history PubNub 历史记录 API 如何与时间线图一起使用。