Я предполагаю, что ваш метод определения того, когда пользователь достигает нижней части элементов tableView, является правильным.
По моему личному мнению, установка слушателей в реальном времени для разбивки на страницы будет довольно сложной задачей. Я рекомендую вам использовать для этого несколько вызовов get.
Если все сделано таким образом, вам нужна функция, которая каждый раз при вызове приносит следующий набор сообщений. Например, при первом вызове он получит 4 последних документа AKA. При втором вызове он получит следующий последний набор сообщений (4). Чтобы уточнить полученные сообщения из первого звонка новее, чем из второго звонка. Надеюсь, это имеет смысл.
Как? Поддерживать два свойства, одно, которое отслеживает последний полученный документ, и другое, которое хранит все сообщения, полученные до сих пор (массив или любой другой структуры данных). Если функция вызывается 4 раза, массив, о котором я здесь говорю, будет иметь 16 сообщений (при условии, что в хранилище имеется> = 16 сообщений).
Теперь, когда у нас есть точка, из которой мы получили сообщения firestore, мы можем использовать Firestore API для настройки запроса на выборку следующего набора при первом вызове. Каждый раз, когда приходит набор документов / сообщений, он добавляется к массиву.
Чуть не забыл, функция, о которой я говорю здесь, должна вызываться каждый раз, когда пользователь достигает конца tableView.
Это решение может или не может быть идеальным для вас, но, надеюсь, оно, по крайней мере, приведет вас к поиску решения. Любые вопросы приветствуются, рады помочь ..