Firebase имеет 2 различных способа отправки сообщений FCM:
- Либо через topi c с, как вы делаете.
- Или с помощью registrationToken, который предназначен для одного пользователя / устройство с указанным c ключом.
ссылка на документацию FCM Токен генерируется на стороне клиента и вам необходимо очень надежно отправить в БД (если у кого-то есть доступ к этому токену, он сможет отправлять уведомления вашему пользователю).
Вот код для отправки уведомления:
// This registration token comes from the client FCM SDKs.
var registrationToken = 'YOUR_REGISTRATION_TOKEN';
var message = {
data: {
score: '850',
time: '2:45'
},
token: registrationToken
};
// Send a message to the device corresponding to the provided
// registration token.
admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
Теперь просит вопрос о том, как получить токен от пользователя: Больше информации там
Вот код для WEB:
// Get Instance ID token. Initially this makes a network call, once retrieved
// subsequent calls to getToken will return from cache.
messaging.getToken().then((currentToken) => {
if (currentToken) {
sendTokenToServer(currentToken);
updateUIForPushEnabled(currentToken);
} else {
// Show permission request.
console.log('No Instance ID token available. Request permission to generate one.');
// Show permission UI.
updateUIForPushPermissionRequired();
setTokenSentToServer(false);
}
}).catch((err) => {
console.log('An error occurred while retrieving token. ', err);
showToken('Error retrieving Instance ID token. ', err);
setTokenSentToServer(false);
});