Надеюсь, я не получу отрицательных голосов по этому поводу, я пытался настроить веб-уведомления для моей CMS с помощью Firebase, и я заметил, что Документация Google Firebase по этой теме огромны, я имею в виду, очень огромны, вы запутались.
До сих пор мне удалось добавить функцию, позволяющую людям подписываться на уведомление, позволяя браузеру запрашивать их разрешение на отправку им уведомлений, затем я получаю уникальные токены после того, как они принимают и сохраняют эти токены в моей базе данных, мне также удалось изменить расположение service worker и все выглядит хорошо и модно.
Теперь я хочу отправить уведомление всем моим пользователям (токенам), которые хранятся в моей базе данных, Я думаю, что перебирать их и отправлять уведомление с помощью CURL каждому отдельно - неприятное решение. Я не могу найти документацию о том, как отправить уведомление всем моим токенам за один вызов CURL.
Это мой код на данный момент:
<!-- Firebase Technologies -->
<!-- Firebase App is always required and must be first -->
<script src = "https://www.gstatic.com/firebasejs/5.1.0/firebase-app.js">
</script>
<script src = "https://www.gstatic.com/firebasejs/5.1.0/firebase-
messaging.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "AIzaSyAR84lF2vbnfUWPZ2899dnqiTthgvfv7Ms",
authDomain: "lazemnicms.firebaseapp.com",
databaseURL: "https://lazemnicms.firebaseio.com",
projectId: "lazemnicms",
storageBucket: "lazemnicms.appspot.com",
messagingSenderId: "268754114869"
};
firebase.initializeApp(config);
messaging = firebase.messaging();
//Registering the service worker
navigator.serviceWorker.register("firebase-messaging-sw.js", {scope: "firebase-cloud-messaging-push-scope"}).then(function (registration) {
messaging.useServiceWorker(registration);
}).catch(function (err) {
// registration failed :(
console.info('ServiceWorker registration failed: ', err);
});
permissionGranted = false;
messaging.getToken().then(function(currentToken) {
if (currentToken) {
console.info(currentToken);
permissionGranted = true;
//sendTokenToServer(currentToken);
//updateUIForPushEnabled(currentToken);
} else {
permissionGranted = false;
}
}).catch(function(err) {
permissionGranted = false;
});
А также, если у пользователя есть refreshedToken, как я могу узнать старый токен этого пользователя, чтобы я мог удалить его из своей базы данных после того, как сохраню его / ее новый токен?
Эти вопросы меня действительно беспокоят.
Заранее спасибо.

API v1 в настоящее время позволяет отправлять только один токен за раз. Планируется добавить многоадресную рассылку (это присутствовал в предыдущем API), но у меня нет графика, когда она будет доступна. Итак, прямо сейчас это означает, что вам нужно выполнить вызов API FCM для каждого токена.
Нет ничего встроенного, чтобы узнать предыдущий токен для пользователя. Типичный способ сделать это - сохранить «последний известный токен» в локальном хранилище и отменить его регистрацию, когда вы получите новый токен. В качестве альтернативы вы можете вместо этого перехватить ошибки, указывающие на недопустимый токен при отправке сообщений, и таким образом удалить их из базы данных (см. пример этого здесь). Сочетание этих двух подходов, вероятно, лучше всего.
Идеально, поэтому я думаю, что сохраню токен в файле cookie, и всякий раз, когда приходит новый токен, я могу просто получить старый токен из файлов cookie и отправить его на сервер, чтобы удалить его и вместо этого сохранить новый на сервере и в файлах cookie.