Отзыв разрешения на уведомление против анонимного токена FCM - PullRequest
0 голосов
/ 05 января 2020

Мне было бы любопытно узнать, как код приложения должен обрабатывать отзыв токена разрешения Notification в сочетании с Firebase Cloud Messaging (FCM). Этот вопрос частично аналогичен этому сообщению / ответу , хотя в их случае нет FCM.

Итак, у нас есть следующий сценарий:

  1. приложение не требует от пользователей входа в систему (следовательно, токены, которые мы храним в базе данных, анонимны , не связаны ни с какими uid)

  2. Приложение предлагает набор кнопок отказа / отказа для предоставления и отзыва разрешений на уведомления.

  3. Приложение собирает токены в базе данных для последующего использования sendToDevice(tokens, notifcation) в функциях Firebase.

  4. Приложение сохраняет токен после того, как токен был выпущен (getToken) или обновлен (onTokenRefresh) с использованием localStorage для последующей поставки введите deleteToken(token), а также укажите в пользовательском интерфейсе текущий статус подписки на уведомления.

  5. Теперь пользователь выбирает отзыв разрешения, которое когда-то было предоставлено - если он делает это чисто (через кнопку отказа), метод deleteToken(token) вызывается и присваивается Локальное хранилище очищено. Все должно быть синхронизировано c, и FCM больше не будет отправлять этому пользователю.

  6. Вопрос Что если пользователь очистит все разрешения или локальное хранилище в более административном / навальный путь, в глобальной области браузера. Вещи выходят из-под контроля c. Токен исчезает из браузера, и пользовательский интерфейс покажет отказался от , но токен не был удален из базы данных, поэтому он все еще действителен, и пользователь будет продолжать получать уведомления. Результат отправки не будет содержать ошибок для этого пользователя, поэтому мы не сможем распознать ситуацию и удалить токен.

Какая самая распространенная практика здесь? Не поощряются ли анонимные уведомления? Я что-то упускаю в моем понимании уведомлений и FCM?

1 Ответ

0 голосов
/ 05 января 2020

Маркер в конечном итоге станет недействительным. Вы сможете сказать, потому что отправка сообщения на этот токен приведет к коду ошибки «error: NotRegistered». Из связанной документации:

Существующий регистрационный токен может перестать действовать в ряде сценариев ios, включая:

  • Если клиентское приложение отменяет регистрацию в FCM .
  • Если клиентское приложение автоматически незарегистрировано, что может произойти, если пользователь удалит приложение. Например, в iOS, если служба обратной связи APNS сообщила, что токен APNS недействителен.
  • Если срок действия регистрационного токена истек (например, Google может решить обновить sh токены регистрации или токен APNS). срок действия устройства iOS истек.
  • Если клиентское приложение обновлено, но новая версия не настроена для приема сообщений.

Для всех этих случаев удалите этот регистрационный токен с сервера приложений и прекратите использовать его для отправки сообщений.

Это будет нечто похожее, если вы используете Admin SDK или другую версию API сервера FCM для отправки сообщения.

Хотя вы, возможно, и не получите немедленного отзыва об этом, вы в конечном итоге получите это сообщение об ошибке, и это ваш ключ к его удалению из вашей базы данных.

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