Отправка push-уведомлений определенным пользователям в Интернете - PullRequest
1 голос
/ 01 апреля 2019

Это может быть больше вопросом к общему толкованию сообщений в Интернете, но у меня возникают проблемы с отправкой сообщений пользователям, использующим Firebase Cloud Messaging (FCM). Проблема возникает в граничном случае, когда в одном браузере несколько учетных записей или пользователей. Как правило, люди не делятся своими телефонами, так что это не будет проблемой для Android / iOS, и я думаю, что сейчас это не так часто, но люди все еще делятся своими компьютерами, либо со своими семьями, либо, возможно, в интернет-кафе или что-то.

В настоящее время каждый раз, когда кто-то входит в систему, включает уведомления, я добавляю этот push-токен для этого устройства в массив в базе данных, а затем отправляю уведомление всем этим токенам, когда отправляю push-сообщение этому пользователю. Хотя это хорошо для мобильных и большинства компьютеров, как насчет компьютеров с общим доступом? Другие пользователи этого компьютера будут получать уведомления о вещах, которые не имеют к ним отношения. Если это семейный компьютер, я думаю, что он все еще в порядке, но как насчет веб-кафе, если кто-то использует его, а потом никогда? Разве это не было бы невероятно раздражающим для всех остальных? Кроме того, что, если на одном устройстве есть несколько разных пользователей, которые все используют уведомления? Затем оба пользователя будут получать уведомления для обоих пользователей. Это тоже не хорошо.

Я не могу придумать, как изящно обойти эту проблему. Может быть, я могу сохранить userID текущего вошедшего в систему пользователя в IndexedDB, заменять его всякий раз, когда вместо него регистрируется новый пользователь, и выводить всплывающие уведомления, только если userID совпадают? Я также мог бы добавить «дату окончания срока действия», чтобы через некоторое время userID в IndexedDB отключался, если пользователь не входит в систему, скажем, на 2 недели.

Опять же, это также не полностью решает проблему, просто делает ее немного менее раздражающей, а также добавляет другие проблемы с множеством пользователей с учетной записью на том же устройстве (т.е. получение уведомлений другого человека). но не свой собственный в определенных сценариях). Кроме того, мне также пришлось бы переключаться по всему бэкэнду, поскольку в настоящее время я отправляю сообщения на темы FCM, на которые подписываются пользователи, и поэтому не может отправлять специализированные сообщения на определенные токены, содержащие идентификаторы пользователей.

Полагаю, я мог бы также использовать «грязное исправление», когда я просто предупреждаю пользователей, что уведомления отправляются на УСТРОЙСТВО, а не ПОЛЬЗОВАТЕЛЮ, и нужно быть внимательным при включении этого на общих компьютерах.

Кто-нибудь сталкивался (или думал об этой проблеме) раньше и придумал разумное решение? Я был бы очень рад получить предложения. Я думаю, что сейчас я пойду с «грязным исправлением» и, возможно, расскажу о том, чтобы сделать что-то еще позже, если смогу найти разумное решение. Конечно, это, вероятно, всего лишь проблема, которая в любом случае затрагивает ~ 1% пользователей, поэтому, возможно, я просто слишком много думаю, и исправить это не стоит усилий.

...