отправить облачное сообщение (FCM) нескольким устройствам одного пользователя - PullRequest
0 голосов
/ 08 апреля 2020

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

FirebaseInstanceId.getInstance().getInstanceId()

Исправьте меня, если я ошибаюсь.

Приложение и резервная копия сервер работает нормально и ниже моего рабочего процесса

1 - пользователь открывает приложение android.

2- Android приложение принимает идентификатор токена пользователя для аутентификации и токен устройства для отправки сообщений и отправляет их на сервер.

3 - Внутренний сервер проверяет пользователя с помощью

decodedToken = FirebaseAuth.getInstance().verifyIdToken(login.getToken()); 

затем он сохраняет токен для отправки сообщения.

Отправка сообщения работает нормально, пока я не застрял в следующем сценарии.

Приложение позволяет нескольким устройствам войти в систему с одним и тем же пользователем , что означает, что 1 USER может иметь несколько токенов для обмена сообщениями.
В этом случае я хочу отправить сообщение всем устройствам, вошедшим в систему с этим пользователем.

Итак, как я могу это сделать без изменения текущего дизайна моего приложения

1 Ответ

1 голос
/ 08 апреля 2020

Вам нужно изменить свою БД и добавить возможность сохранять все токены устройства от одного пользователя. Затем вам нужно вызывать этот Firebase api https://fcm.googleapis.com/fcm/send столько раз, сколько имеет пользователь токенов. Вот официальная документация.

https://firebase.google.com/docs/cloud-messaging/http-server-ref

Чтобы обновить спецификационный токен устройства c при его изменении на стороне клиента, вы также должны связать этот токен с идентификатор устройства, поэтому для передачи токена Firebase необходимо передать идентификатор устройства на сервер. В качестве идентификатора устройства может служить Android уникальный идентификатор устройства или идентификатор, который предоставляет Firebase на стороне клиента FirebaseInstanceId.getInstance().id. А вот как получить Android deviceID

Существует ли уникальный Android идентификатор устройства?

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

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