Я разрабатывал приложение для чата во флаттере, используя firestore, пользователи успешно общались один на один. но я также хочу отправить пользователю уведомление о том, что кто-то отправляет ему/ей сообщение. Для этого я решил использовать облачный сервис обмена сообщениями firebase, но как я могу проверить, прочитал ли пользователь сообщение или нет.
В Cloud Firestore нет ничего встроенного, чтобы отслеживать, кто из пользователей уже прочитал конкретный документ.
Два наиболее распространенных подхода, о которых я знаю, это:
Чтобы отслеживать для каждого отдельного сообщения и каждого отдельного пользователя, прочитали ли они его, сохраняя список идентификаторов пользователей в каждом документе сообщения. Хотя это потенциально хранит много дополнительных данных, это наиболее прямое отображение вашего варианта использования.
Однако в большинстве чат-приложений отслеживание того, какие сообщения прочитал каждый пользователь, выполняется как «до сих пор». Таким образом, если пользователь прочитал все сообщения до определенного момента или до определенного времени, предполагается, что он также прочитал все сообщения до этого момента.
Для этой модели вместо этого вы можете просто сохранить один идентификатор документа или отметку времени для каждого пользователя (например, readUpTo
), вместо того, чтобы отмечать каждое сообщение для каждого пользователя, который его прочитал. Затем в пользовательском интерфейсе вы определяете, показывать ли каждое сообщение как непрочитанное на основе идентификатора сообщения/отметки времени по сравнению с отметкой времени readUpTo
.