在Android的PWA上缺少推送数据,但在台式机上却没有

时间:2019-09-11 18:06:14

标签: push-notification firebase-cloud-messaging service-worker progressive-web-apps

更新:将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数据丢失?

0 个答案:

没有答案