С Java-сервера вы можете использовать Firebase Admin SDK для отправки сообщений . Из этой документации вытекает этот минимальный пример:
// This registration token comes from the client FCM SDKs.
String registrationToken = "YOUR_REGISTRATION_TOKEN";
// See documentation on defining a message payload.
Message message = Message.builder()
.putData("score", "850")
.putData("time", "2:45")
.setToken(registrationToken)
.build();
// Send a message to the device corresponding to the provided
// registration token.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
Обратите внимание, что при этом отправляется сообщение data , так что оно всегда будет доставлено на ваш код , где вы можете решить, отображать уведомление или нет. Чтобы отправить уведомление сообщение, что делает консоль Firebase, вы должны использовать:
Message message = Message.builder()
.setNotification(new Notification("This is the title", "This is the body"))
.setToken(registrationToken)
.build();
Оба они отправляют сообщение на определенный регистрационный токен, то есть только на один экземпляр устройства / приложения. Это означает, что вам нужно будет вести список этих токенов, чтобы вы могли отправлять сообщения в соответствии с вашими потребностями. Например. Обычный способ - хранить токены для каждого пользователя. Пример этого см. В functions-samples repo . Хотя этот пример находится в Node.js, ту же логику можно применить к серверу Java.
Наконец: вы также можете отправлять сообщения по темам. В качестве примера этого (опять же: с использованием сервера Node.js) посмотрите этот пост в блоге Отправка уведомлений между устройствами Android с помощью базы данных Firebase и Cloud Messaging .