Во-первых, вы не можете использовать viewWill...
, потому что это не всегда означает, что произойдет следующее viewDid...
. Вместо этого используйте viewDidAppear
и viewDidDisappear
. Нет проблем с созданием и удалением пользователя в комнате чата каждый раз, когда представление появляется и исчезает, однако вы правы, полагая, что есть кто-то, кто выбирает пользователей комнаты чата для подсчета.
Вы должны вести подсчет самостоятельно, увеличивая и уменьшая каждый раз, когда пользователь добавляется или удаляется из active_chatroom_users
. Это может быть сделано на клиенте несколькими способами, один из которых включает транзакции. Это позволит вам обновлять счетчик активных пользователей в режиме реального времени и будет также подсчитывать, что любые другие пользователи, активирующиеся одновременно, также будут учитываться.
Однако я бы предпочел использовать триггер облачной функции, который распознает, когда пользователь становится активным или неактивным в комнате чата, и увеличивает или уменьшает общее количество активных пользователей в комнате чата.