Gatsby 推送通知将如何与盖茨比&x2B;Netlify+;Netlify-lambda函数

Gatsby 推送通知将如何与盖茨比&x2B;Netlify+;Netlify-lambda函数,gatsby,netlify,netlify-cms,netlify-function,Gatsby,Netlify,Netlify Cms,Netlify Function,在阅读了Google关于的教程后,我将推送通知功能添加到我的Gatsby+Netlify驱动的PWA网站 它可以工作,但有一个bug 步骤1 从客户端,它订阅以获得服务人员注册 swRegistration.pushManager.subscribe({ userVisibleOnly: true }) .then(subscription => { console.log('User is subscribed:', subscription); isSubscribed =

在阅读了Google关于的教程后,我将推送通知功能添加到我的Gatsby+Netlify驱动的PWA网站

它可以工作,但有一个bug

步骤1客户端,它订阅以获得服务人员注册

swRegistration.pushManager.subscribe({
  userVisibleOnly: true
})
.then(subscription => {
  console.log('User is subscribed:', subscription);
  isSubscribed = true;
})
.catch(err => {
  if (Notification.permission === 'denied') {
    console.warn('Permission for notifications was denied');
  } else {
    console.error('Failed to subscribe the user: ', err);
  }
});
步骤2 然后从服务器端(Netlify Lambda函数),我们需要粘贴注册对象,该对象从这行代码的客户端打印出来

。然后(订阅=>{ log('用户已订阅:',订阅); IssuSubscribed=true; })

为了使其正常工作(服务器端/lambda功能):

现在,您可能已经注意到了这个问题

在本地开发时,我可以通过以下方式启动我的盖茨比PWA网站:

盖茨比建造&盖茨比发球

然后它从Gatsby PWA客户端打印出注册对象。然后我可以将它(注册对象)粘贴到Netlify lambda函数中,然后通过

网络开发

但在部署Garsby+Netlify PWA网站时,lambda功能与PWA一起部署, 那么,我如何确保lambda函数使用从客户端接收的注册,这仅在用户在部署后访问网站时发生?

const webPush = require('web-push');

const pushSubscription = YOUR_SUBSCRIPTION_OBJECT;

// TODO 4.3a - include VAPID keys

const payload = 'Here is a payload!';

const options = {
  TTL: 60,

  // TODO 4.3b - add VAPID details
  vapidDetails: {
    subject: "mailto:my@gmail.com",
    publicKey: vapidPublicKey,
    privateKey: vapidPrivateKey,
  },
};

webPush.sendNotification(
  pushSubscription,
  payload,
  options
);