сделал аутентификацию пользователей. Есть возможность создавать несколько аккаунтов на одном устройстве.
Предположим, пользователи обмениваются некоторыми объектами, всё это происходит через Firebase Realtime Database.
Также присутствует раздел с уведомлениями: кто-то стучится в друзья/хочет поделиться определённым объектом... и т.д.
Уведомления реализованы через ValueEventListener, который "слушает" изменения данных на Firebase Database.
В чём проблема:
0 шаг) На одном устройстве зареганы несколько пользователей. Заходим в 1й аккаунт -> потом заходим во 2й аккаунт -> возвращаемся обратно в 1й аккаунт.
1 шаг) Пользователь (1й акк) создаёт определённый объект -> делится им со 2м аккаунтом.
2 шаг) (ошибка) 2му аккаунту это уведомление доходит нормально. Но! 1й пользователь сам же видит у себя уведомление, которое предоставлялось только 2му аккаунту. (Т.е. срабатывает valueEventListener другого пользователя)
Как можно исправить это?
Пробовал:
1) удалять valueEventListener вручную через removeEventListener()
2) чистить где только возможно локальные данные пользователя при переходе между аккаунтами
3) логгил каждый этап и узнал, что несмотря на то, что valueEventListener работает с одним UserId, в момент отправки уведомления, этот UserId меняется на такой, будто текущий пользователь = 2й аккаунт, а не 1й, как это есть на самом деле
может просто onDestroy не вызываеться при смене аккаунта и оно отображает предыдущий лейаут?
Обсуждают сегодня