更新:将Chrome从58升级到76已解决了该问题。根据{{3}},Chrome v50 +支持有效负载,而此处并非如此。 Chrome 58可能存在错误/问题,或者代码中存在某个错误。 仍然有兴趣学习。
我正在按照相同的步骤向移动设备和台式机发送推送消息。
服务器(node.js):
const webpush = require('web-push')
const vapidKeys = {
publicKey: '...',
privateKey: '...',
}
webpush.setVapidDetails(
'mailto:...',
vapidKeys.publicKey,
vapidKeys.privateKey
)
sendTestPush(user) {
webpush.sendNotification(user.subscription,
`Test Push Here!\nJust a test push!`)
.then(console.log)
.catch(console.error)
}
输出(移动设备和台式机都相似)
{ statusCode: 201,
body: '',
headers:
{ location:
'https://fcm.googleapis.com/0:15...',
'x-content-type-options': 'nosniff',
'x-frame-options': 'SAMEORIGIN',
'x-xss-protection': '0',
date: 'Tue, 10 Sep 2019 18:13:39 GMT',
'content-length': '0',
'content-type': 'text/html; charset=UTF-8',
'alt-svc': 'quic=":443"; ma=2592000; v="46,43,39"',
connection: 'close' } }
service-worker.js:
self.addEventListener("push", function(event) {
const data = event.data ? event.data.text().split('\n') : ["Title", "Body"]
const options = {
body: data[1]
}
const promiseChain = self.registration.showNotification(data[0], options)
event.waitUntil(promiseChain)
})
在台式机上,我得到:
Test Push Here!
Just a test push!
在移动设备上,我得到:
Title
Body
由service-worker.js
设置,以防丢失event.data
。是什么原因导致手机的PWA数据丢失?