Gatsby 推送通知将如何与盖茨比&x2B;Netlify+;Netlify-lambda函数
在阅读了Google关于的教程后,我将推送通知功能添加到我的Gatsby+Netlify驱动的PWA网站 它可以工作,但有一个bug 步骤1 从客户端,它订阅以获得服务人员注册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 =
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
);