Как надежно прекратить получать уведомления при выходе пользователя - PullRequest
0 голосов
/ 07 июня 2019

У меня есть сервер и несколько клиентов (веб и мобильные).Когда мои пользователи входят в систему, я хочу начать рассылать им уведомления о том, за каким контентом они следят.Когда они выходят из системы, я хочу прекратить отправлять им уведомления.

Я нашел много вопросов о переполнении стека, похожих на мои, но ни на один из них не было получено полного ответа.

Закрытие моеговопрос был это другой вопрос , где принятый ответ - deleteInstanceId(), когда пользователь выходит из системы, что кажется наиболее надежным решением, но в комментариях кто-то скопировал копию из (GCM) документации, которая "Разработчики никогда не должны отменять регистрацию клиентского приложения в качестве механизма для выхода из системы или для переключения между пользователями ".Я не смог найти такое же уведомление в новых документах Firebase, но я предполагаю, что это та же концепция: InstanceId не должен быть связан с пользователем.

Единственная найденная альтернатива -чтобы отправить запрос «signOut» на мой сервер с instanceId, а моему серверу необходимо удалить связанный instanceId из учетной записи пользователя.Но что, если этот вызов API не пройдет?Это кажется довольно хрупким решением.

Вот что я бы сделал сейчас:

  1. Отправьте instanceId на мой сервер, когда пользователь аутентифицирует
    • Убедитесь, что этот же instanceId не используется другим пользователем, поскольку это может произойти, когда другой пользователь вышел из системы на том же устройстве, но вызов API не прошел
  2. При отправке уведомлений отправляйте их напрямую зарегистрированным instanceId с (изначально я планировал использовать темы, но в сочетании с обработкой моих токенов это кажется еще более хрупким).
  3. Когда пользователь входит в системуотправьте запрос signOut в мой API и удалите instanceId от пользователя.

1 Ответ

1 голос
/ 07 июня 2019

Ваш вопрос, кажется, просто требует проверки дизайна, который на самом деле не является целью переполнения стека. Субреддит Firebase может быть лучшей альтернативой для разговора вокруг проблемы.

Но я скажу, что если это работает для вас, тогда бегите с этим. Также рассмотрите возможность отправки UID целевых пользователей в каждом сообщении, и пусть ваше приложение сравнивает его с текущим вошедшим пользователем, чтобы определить, достигло ли оно правильного места назначения. Отправьте сообщение обратно на сервер, если оно не для устранения проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...