推送事件未触发

时间:2019-06-24 09:53:55

标签: javascript php service-worker

我已经下载了此https://github.com/Minishlink/web-push-php-example。其中有一个发送通知按钮,其中fetch是一个php文件,该文件使用webpush https://github.com/web-push-libs/web-push-php推送通知。

它工作了一段时间,然后才停止工作。停止工作后,我换了一个拥有但仍然不显示通知的工作副本。

fetchsend_push_notification.php的响应显示了

[v] Message sent successfully for subscription https://fcm.googleapis.com/wp/f6ST-d7Ek3o:APA91bH3ZaT_QYo...

但是我没有看到推送通知。我在service-worker的console.log事件处理程序中有一个push,但没有看到推送通知

调用fetch到php文件(send_push_notification.php)的js

sendPushButton.addEventListener('click', () =>
navigator.serviceWorker.ready
  .then(serviceWorkerRegistration => serviceWorkerRegistration.pushManager.getSubscription())
  .then(subscription => {

    const contentEncoding = (PushManager.supportedContentEncodings || ['aesgcm'])[0];
    const jsonSubscription = subscription.toJSON();
    fetch('send_push_notification.php', {
      method: 'POST',
      body: JSON.stringify(Object.assign(jsonSubscription, { contentEncoding })),
    });
  })

);

服务工作者文件:

    self.addEventListener('push', function (event) {
  console.log("PUSHRECEived");

  const sendNotification = body => {
        return self.registration.showNotification(title, {
            body,
        });
    };

    if (event.data) {
        const message = event.data.text();
        event.waitUntil(sendNotification(message));
    }
});

编辑,它在我重新启动PC后可以使用。可能是什么原因。

0 个答案:

没有答案