У меня есть сервер и несколько клиентов (веб и мобильные).Когда мои пользователи входят в систему, я хочу начать рассылать им уведомления о том, за каким контентом они следят.Когда они выходят из системы, я хочу прекратить отправлять им уведомления.
Я нашел много вопросов о переполнении стека, похожих на мои, но ни на один из них не было получено полного ответа.
Закрытие моеговопрос был это другой вопрос , где принятый ответ - deleteInstanceId()
, когда пользователь выходит из системы, что кажется наиболее надежным решением, но в комментариях кто-то скопировал копию из (GCM) документации, которая "Разработчики никогда не должны отменять регистрацию клиентского приложения в качестве механизма для выхода из системы или для переключения между пользователями ".Я не смог найти такое же уведомление в новых документах Firebase, но я предполагаю, что это та же концепция: InstanceId не должен быть связан с пользователем.
Единственная найденная альтернатива -чтобы отправить запрос «signOut» на мой сервер с instanceId
, а моему серверу необходимо удалить связанный instanceId
из учетной записи пользователя.Но что, если этот вызов API не пройдет?Это кажется довольно хрупким решением.
Вот что я бы сделал сейчас:
- Отправьте
instanceId
на мой сервер, когда пользователь аутентифицирует - Убедитесь, что этот же
instanceId
не используется другим пользователем, поскольку это может произойти, когда другой пользователь вышел из системы на том же устройстве, но вызов API не прошел
- При отправке уведомлений отправляйте их напрямую зарегистрированным
instanceId
с (изначально я планировал использовать темы, но в сочетании с обработкой моих токенов это кажется еще более хрупким). - Когда пользователь входит в системуотправьте запрос
signOut
в мой API и удалите instanceId
от пользователя.