Я использую push-уведомления Firebase в нашем веб-приложении.
Сообщение, отправленное с FCM, никогда не отображается, когда приложение не активно или не открыто.Ошибки не генерируются.
Код переднего плана:
<script src="https://www.gstatic.com/firebasejs/5.6.0/firebase.js"></script>
<script>
MsgElem = document.getElementById("msg")
TokenElem = document.getElementById("token")
NotisElem = document.getElementById("notis")
ErrElem = document.getElementById("err")
// Initialize Firebase
// TODO: Replace with your project's customized code snippet
var config = {
apiKey: "<apikey>",
authDomain: "<app>.firebaseapp.com",
databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
storageBucket: "<app>.appspot.com",
messagingSenderId: "<id>",
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging
.requestPermission()
.then(function () {
MsgElem.innerHTML = "Notification permission granted."
console.log("Notification permission granted.");
// get the token in the form of promise
return messaging.getToken()
})
.then(function(token) {
TokenElem.innerHTML = "token is : " + token
})
.catch(function (err) {
ErrElem.innerHTML = ErrElem.innerHTML + "; " + err
console.log("Unable to get permission to notify.", err);
});
messaging.onMessage(function(payload) {
console.log("Message received. ", payload);
NotisElem.innerHTML = NotisElem.innerHTML + JSON.stringify(payload)
});
</script>
firebase-messaging-sw.js
importScripts ('https://www.gstatic.com/firebasejs/5.6.0/firebase-app.js');
importScripts ('https://www.gstatic.com/firebasejs/5.6.0/firebase-messaging.js');
firebase.initializeApp ({'messagingSenderId': 'id'});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler (function(payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
const data = payload.data;
const notificationTitle = data.title;
const notificationOptions = {
body: data.body
};
return self.registration.showNotification (notificationTitle, notificationOptions);
});
Запрос FCM:
{
"to":"ids",
"data":{
"body":"clicktoaction",
"title":"Simplext Notification"
}
}
Событие messaging.onMessage (функция (полезная нагрузка) всегда вызывается независимо от того, находится приложение на переднем или заднем плане.
Я попытался изменить запрос FCM с «данных» на «уведомление».то же самое.
Я использую Chrome v 70.