#javascript #firebase #push-notification #firebase-cloud-messaging
#javascript #firebase #push-уведомление #firebase-облако-обмен сообщениями
Вопрос:
Возможно, это скорее вопрос к push-сообщениям в целом для Интернета, но у меня возникают проблемы с отправкой сообщений пользователям, использующим Firebase Cloud Messaging (FCM). Проблема возникает в граничном случае, когда в одном браузере есть несколько учетных записей или пользователей. Как правило, люди не делятся своими телефонами, так что это не было бы проблемой для Android / iOS, и я думаю, что сейчас это встречается реже, но люди все еще делятся своими компьютерами, либо со своими семьями, либо, возможно, в интернет-кафе или что-то в этом роде.
В настоящее время каждый раз, когда кто-то, вошедший в систему, включает уведомления, я добавляю этот push-токен для этого устройства в массив в базе данных, а затем отправляю уведомление всем этим токенам, когда я отправляю push-сообщение этому пользователю. Хотя это нормально для мобильных устройств и большинства компьютеров, как насчет общих компьютеров? Другие пользователи этого компьютера будут продолжать получать уведомления о вещах, которые для них не имеют отношения. Если это семейный компьютер, я думаю, все в порядке, но как насчет веб-кафе, если кто-то использует его один раз, а затем никогда больше? Разве это не было бы невероятно раздражающим для всех остальных? Кроме того, что, если на одном устройстве есть несколько разных пользователей, которые все используют уведомления? Тогда оба пользователя будут получать уведомления для обоих пользователей. Это тоже нехорошо.
Я не могу придумать никакого способа изящно обойти эту проблему. Может быть, я могу сохранить идентификатор пользователя текущего зарегистрированного пользователя в IndexedDB, заменять его всякий раз, когда вместо этого входит новый пользователь, и всплывать уведомления только в том случае, если идентификаторы пользователей совпадают? Я мог бы также добавить «дату истечения срока действия», чтобы идентификатор пользователя в IndexedDB истекал через некоторое время, если пользователь не входит в систему, скажем, в течение 2 недель.
Опять же, это также не полностью решает проблему, это просто делает ее немного менее раздражающей, а также добавляет другие проблемы с несколькими пользователями с учетной записью на том же устройстве (т. Е. Получение уведомлений другого человека, но не ваших собственных в определенных сценариях). Кроме того, мне пришлось бы переключить весь мой серверный сервер, поскольку в настоящее время я отправляю сообщения в темы FCM, на которые подписаны пользователи, поэтому не могу отправлять специализированные сообщения определенным токенам, содержащим идентификаторы пользователей.
Я думаю, я мог бы также использовать «грязное исправление», где я просто предупреждаю пользователей, что уведомления отправляются на УСТРОЙСТВО, а не ПОЛЬЗОВАТЕЛЮ, и быть внимательным при включении этого на общих компьютерах.
Кто-нибудь сталкивался (или думал об этой проблеме) раньше и предлагал разумное решение? Я был бы очень рад получить предложения. Я думаю, что пока я пойду с «грязным исправлением» и, возможно, подумаю о том, чтобы сделать что-то еще позже, если смогу найти разумное решение. Конечно, это, вероятно, всего лишь проблема, которая в любом случае затрагивает не более ~ 1% пользователей, так что, возможно, я просто слишком много думаю, и исправление этого не стоит усилий.
Комментарии:
1. Если вы связываете токен с пользователем, то, когда пользователь явно выходит из системы, вы должны удалить его токен FCM.