-1

プッシュ通知に関して問題があります。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 でイベントをプッシュすることさえできないため、問題はここにあると思います (ログは取得されません)。

4

2 に答える 2