Я видел несколько людей, задававших этот вопрос, и я попробовал ответы там, у меня нет ничего под названием "уведомление" в моей полезной нагрузке.
Сообщения, когда страница находится впередний план получен полностью, как ожидалось.
Код клиента:
var config = {
apiKey: "<API_KEY>",
authDomain: "AUTH_DOMAIN",
databaseURL: "DATABASE",
projectId: "PROJECT_ID",
storageBucket: "STORAGE_BUCKET",
messagingSenderId: "SENDER_ID"
};
firebase.initializeApp(config);
const messaging = firebase.messaging()
messaging.requestPermission()
.then(() => {
console.log('Permission granted')
return messaging.getToken()
})
.then((token) => {
console.log(token)
})
.catch(() => {
console.log('Permission denied')
})
messaging.onMessage((payload)=>{
console.log("message: ", payload)
// TODO: handle message
})
Код рабочего сервиса (тот же конфиг, что и у клиента)
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function (payload) {
console.log('Handling background message ', payload);
return self.registration.showNotification(payload.data.title, {
body: payload.data.body,
});
});
Код сервера:
var express = require('express');
var router = express.Router();
var firebase = require('firebase');
var admin = require('firebase-admin');
var serviceAccount = require('./../../../web-quickstart-e2909-1896918629ac.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: '<DB_URL>'
});
const registrationToken = <REGISTRATION_TOKEN>
var message = {
data: {
body: "Hello world!",
title: "Hi",
// icon: "<ICON_SOURCE>"
},
token: registrationToken
};
const sendMessage = () => {
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);
});
}
sendMessage()
/* GET home page. */
router.get('/', function(req, res, next) {
sendMessage()
res.json({ title: 'Express' });
});
module.exports = router;
Вкод сервера Я получаю журнал, в котором говорится, что сообщение было успешно отправлено, но клиентская сторона не получает никакого сообщения, журнал insetBackgroundMessageHandler никогда не регистрируется.