问题描述
按照Google关于Push Notification的教程进行操作之后,我向Gatsby + Netlify支持的PWA网站添加了推送通知功能。
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函数),粘贴从该行代码从客户端打印出来的注册对象
.then(subscription => { console.log('用户已订阅:',subscription); isSubscribed = true; })
以使其正常运行(服务器端/ 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
);
现在,您可能已经注意到了这个问题。
在本地开发时,我可以通过以下方式启动我的盖茨比PWA网站
gatsby构建&& gatsby服务
然后从Gatsby PWA客户端打印出注册对象。然后,可以将其(注册对象)粘贴到Netlify lambda函数中,然后通过以下方式启动我的Netlify Lambda函数:
netlify开发人员
但是,在部署Garsby + Netlify PWA网站时,lambda函数与PWA一起部署, 那么我如何确保lambda函数使用从客户端接收到的注册,这种注册仅在用户在部署后访问该网站时发生?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)