不发送推送通知

时间:2018-06-18 08:36:27

标签: javascript firebase web-push pwa

我有关于推送通知的问题。我在firebase函数日志中有这个错误:

  

错误:要发送带有效负载的消息,订阅必须具有   'auth'和'p256dh'键。

 exports.storePostData = functions.https.onRequest(
 (request, response) => {
     cors(request, response, () => {
         admin.database().ref('posts').push({
             id: request.body.id,
             title: request.body.title,
             location: request.body.location,
             image: request.body.image
         }).then(() => {
             webpush.setVapidDetails('mailto: xxxx@gmail.com', 'BLl7xIPAyJNzsMi5vo_aG-4RdXdyZ4Q4ZFpTgnm902qN79MIiSORBk9N-rfFEGiKNPuJu5SJmUX35Wwce9nuH94', 'M8E6hw7jCmu7qNQJ88FV5o02OAiLefEFJK8jyJimk7g')

             return admin.database().ref('subscriptions').once('value');
         }).then(subscriptions => {
             subscriptions.forEach(sub => {
                 var pushConfig = {
                     endpoint: sub.val().endpoint,
                     keys: {
                         auth: sub.val().keys,
                         p256dh: sub.val().p256dh
                     }
                 }
                 webpush.sendNotification(pushConfig, JSON.stringify({
                     title: 'New Post',
                     content: 'New post added',
                     openUrl: '/help'
                 })).catch(err => {
                     console.log(err)
                 })
             })
             response.status(201).json({
                 message: 'Data stored',
                 id: request.body.id
             })
         }).catch(err => {
             response.status(500).json({
                 error: err
             })
         })
     })
 });

这是我存储帖子数据的功能,我认为问题出在这里是因为它甚至无法在serviceWorker中推送事件(我没有得到任何日志)。

1 个答案:

答案 0 :(得分:0)

我认为它需要像:

                     keys: {
                     auth: sub.val().keys.auth,
                     p256dh: sub.val().keys.p256dh
                 }