Как я обрабатываю ситуацию, когда пользователь выходит из моего приложения, и я больше не хочу, чтобы он получил уведомления устройству.
Я попробовал
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()
снова, но это похоже на взлом. И также существует этот ответ, который указывает, что не должен быть сделан, но он предлагает удалить маркер, который, по-видимому, не работает.
Таким образом, что правильный метод должен обработать это?
Разработчики никогда не должны не регистрировать клиентское приложение как механизм для выхода из системы или для переключения между пользователями по следующим причинам:
- регистрационный маркер А не связан с зарегистрированным пользователем детали. Если клиентское приложение не регистрирует и затем потворяет регистрацию, приложение может получить тот же регистрационный маркер или другой регистрационный маркер.
Нерегистрация и перерегистрация могут каждый занимать до пяти минут для распространения. В это время сообщения могут быть отклонены из-за незарегистрированного состояния, и сообщения могут перейти к неправильному пользователю. Чтобы удостовериться, что сообщения переходят к предполагаемому пользователю:
сервер приложений может поддержать отображение между текущим пользователем и регистрационным маркером.
- клиентское приложение может затем проверить, чтобы гарантировать, что обменивается сообщениями, оно получает, соответствуют зарегистрированному пользователю.
эта кавычка из документации 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