Облако Firebase, Обменивающееся сообщениями - Обрабатывающий выход из системы

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

Я попробовал

FirebaseInstanceId.getInstance().deleteToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)

Но я все еще получаю уведомления своему устройству registration_id.

Я также удостоверился, что это - маркер, который я должен удалить:

FirebaseInstanceId.getInstance().getToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)

или просто FirebaseInstanceId.getInstance().getToken()).

Я также попробовал FirebaseInstanceId.getInstance().deleteInstanceId(), но затем в следующий раз я звоню FirebaseInstanceId.getInstance.getToken Я получаю пустой указатель (он работает над второй попыткой).

Я предполагаю, после deleteInstanceId Я мог сразу звонить getToken() снова, но это похоже на взлом. И также существует этот ответ, который указывает, что не должен быть сделан, но он предлагает удалить маркер, который, по-видимому, не работает.

Таким образом, что правильный метод должен обработать это?

58
задан 23 May 2017 в 14:46

1 ответ

Разработчики никогда не должны не регистрировать клиентское приложение как механизм для выхода из системы или для переключения между пользователями по следующим причинам:

  • регистрационный маркер А не связан с зарегистрированным пользователем детали. Если клиентское приложение не регистрирует и затем потворяет регистрацию, приложение может получить тот же регистрационный маркер или другой регистрационный маркер.
  • Нерегистрация и перерегистрация могут каждый занимать до пяти минут для распространения. В это время сообщения могут быть отклонены из-за незарегистрированного состояния, и сообщения могут перейти к неправильному пользователю. Чтобы удостовериться, что сообщения переходят к предполагаемому пользователю:

  • сервер приложений может поддержать отображение между текущим пользователем и регистрационным маркером.

  • клиентское приложение может затем проверить, чтобы гарантировать, что обменивается сообщениями, оно получает, соответствуют зарегистрированному пользователю.

эта кавычка из документации Google устаревшей

, Но существуют причины полагать, что это все еще верно - даже если документация выше удерживается от использования.

можно заметить, что это здесь - проверяет, как они делают это в этом codelab https://github.com/firebase/functions-samples/blob/master/fcm-notifications/functions/index.js

и здесь https://github.com/firebase/friendlychat-web/blob/master/cloud-functions/public/scripts/main.js

7
ответ дан 1 November 2019 в 14:29

Другие вопросы по тегам:

Похожие вопросы: