#node.js #firebase #push-notification #firebase-cloud-messaging
#node.js #firebase #push-уведомление #firebase-облако-обмен сообщениями
Вопрос:
Я пытаюсь заставить мои веб-уведомления FCM содержать интерактивную ссылку на мой сайт, используя firebase admin SDK (версия 7.0.0) для node.js . Насколько я могу судить, я полностью следую документации, но я не могу заставить ссылку работать. Чтобы уточнить, мои уведомления работают нормально в противном случае, это просто ссылка, с которой я не должен работать.
В документации говорится:
Для уведомлений, отправляемых с сервера приложений, JavaScript API FCM поддерживает ключ fcm_options.link. Обычно это значение задается для страницы в вашем веб-приложении
Я включил webpush.fcm_options.link
в свое уведомление. Я позаботился о том, чтобы включить в свое сообщение явную notification
полезную нагрузку, поскольку в документации указано, что data
сообщения не поддерживают fcm_options.link
.
Вот структура моего сообщения на данный момент:
{
notification: {
title: 'Title',
body: 'Body',
},
data: {
// my data here
},
webpush: {
notification: {
requireInteraction: true,
icon: '/icons/notification.png'
},
fcm_options: {
link: 'https://example.com/'
}
},
// android: {},
// apns: {},
topic: 'sometopic'
};
Вот функция, которую я использую для отправки сообщения:
const admin = require('firebase-admin')
const sendMessage = message => {
admin
.messaging()
.send(message)
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
});
};
link
Свойство должно работать в соответствии с документацией: мой URL включает https
и мое уведомление отправляется с сервера приложений и включает в себя явную полезную нагрузку уведомления. На данный момент нажатие на уведомление просто приводит к его исчезновению, и больше ничего не происходит.
Комментарии:
1. Хм… Все выглядит правильно. Я хотел убедиться, что вы используете новый FCM API, и, похоже, так оно и есть. Какую версию Admin вы используете? Тем временем я постараюсь узнать больше от команды
2. @JenPerson использует
7.1.1
несколько дней назад, и да, я использую api версии v1. большое спасибо за вашу помощь!3. Не могли бы вы также сообщить, какую версию Firebase client SDK вы используете?
4. @MertcanMermerkaya
5.8.5
5. Должно быть достаточно всего двух строк:
firebase.initializeApp(<your_app_config>); firebase.messaging();
. Если вы не вызоветеsetBackgroundMessageHandler
, SDK сам создаст уведомление иlink
должно сработать.
Ответ №1:
ОБНОВЛЕНИЕ: Я разобрался, в чем была проблема — мой сотрудник службы использовал importScripts
функцию, но я использовал устаревшую версию скрипта firebase, который не поддерживал fcm_options.link
. Я изменил его на свою текущую версию firebase ( 5.8.5
), и это работает. Все отсортировано!
Комментарии:
1. Возникла та же проблема, и оказалось то же самое, спасибо за обновление.
2. @camargue92 Спасибо. Это сделало это за меня. Думаю, мы скопировали код из руководства по firebase . Вы должны пометить это как принятое.
3. моя текущая версия 7.6.2, уже совместимая с sw.js но fcm выдает ошибку при отправке
Messaging payload contains an invalid "webpush" property. Valid properties are "data" and "notification"
каких-либо других подсказок?4. В итоге я использую тип данных FCM и обрабатываю отображение уведомления (и события щелчка) от service worker notificationclick
Ответ №2:
в уведомлении попробуйте это
"notification":{
"title":"IssA",
"body":"Lafi",
"icon": "Icon URL",
"click_action": "Your URL here"
}
Комментарии:
1. это текущее решение для javascript SDK 7.1.0
2. это для Firebase FCM
Ответ №3:
В последней версии, с использованием firebase admin в node js, это правильная конфигурация:
var message = {
notification: {
title: "",
body: ""
},
webpush: {
fcmOptions: {
link: "https://yourlink.web.app"
}
}
};