Firebase setBackgroundMessageHandler не вызывается - PullRequest
0 голосов
/ 14 декабря 2018

Я видел несколько людей, задававших этот вопрос, и я попробовал ответы там, у меня нет ничего под названием "уведомление" в моей полезной нагрузке.

Сообщения, когда страница находится впередний план получен полностью, как ожидалось.

Код клиента:

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 никогда не регистрируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...