重新加载页面后 Service Worker 显示为已删除 [英] Service Worker showing as deleted after reloading the page

查看:71
本文介绍了重新加载页面后 Service Worker 显示为已删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 react 并尝试实现 Service Worker,我编写了一个用于推送通知的微型 Service Worker 文件,当用户单击按钮时正在注册 Service Worker,现在如果我发送推送消息,它会按预期工作,但是当我重新加载页面时,即使注册成功,应用程序中的 Service Worker 仍显示为已删除,请参考截图

Am using react and trying to implement service worker, I had written a mini service worker file for push notifications, when the user clicks a button am registering a service worker, now if i send a push message it working as expected, but when i reload the page, the service worker in application shows as deleted even though the registration was successful, please refer screenshot

服务工作者代码

    const self = this;

    function receivePushNotification(event) {
      console.log('[Service Worker] Push Received.');
      console.log(event);

      // const { image, tag, url, title, text } = event.data.json();

      const options = {
        data: '/neworders',
        body: 'New order request',
        vibrate: [200, 100, 200],
        badge: 'https://spyna.it/icons/favicon.ico',
        actions: [
          {
            action: 'Detail',
            title: 'View',
            icon: 'https://via.placeholder.com/128/ff0000',
          },
        ],
      };
      event.waitUntil(self.registration.showNotification('Hello', options));
    }

    function openPushNotification(event) {
      console.log(
        '[Service Worker] Notification click Received.',
        event.notification.data
      );

      event.notification.close();
      event.waitUntil(clients.openWindow(event.notification.data));
    }

    self.addEventListener('install', function (event) {
      console.log({ event });
      // The promise that skipWaiting() returns can be safely ignored.
      self.skipWaiting();

      // Perform any other actions required for your
      // service worker to install, potentially inside
      // of event.waitUntil();
    });

    self.addEventListener('activate', (event) => {
      console.log('V1 now ready to handle fetches!');
    });
    self.addEventListener('push', receivePushNotification);
    self.addEventListener('notificationclick', openPushNotification);

注册 service worker 函数

Register service worker function

function registerServiceWorker() {
  return navigator.serviceWorker.register('/newsw.js');
}

Service Worker 删除的截图

Service worker deleted screenshot

推荐答案

我怀疑它发生是因为你打开了重新加载时更新"

I suspect it happens because you turned "update on reload" on.

这会强制 Service Worker 在您重新加载页面时进行更新.(在此处阅读更多信息)

This forces the service worker to update whenever you reload the page. (read more here)

这篇关于重新加载页面后 Service Worker 显示为已删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆