Web推送异常:AbortError:注册失败-存储错误

时间:2018-06-21 06:53:02

标签: javascript service-worker web-push

对于具有网络推送服务的网站,我有以下代码:

service-worker.js

self.addEventListener('push', function(event) {
  console.log('[Service Worker] Push Received.');
  console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);

  const title = 'Push Codelab';
  const options = {
    body: 'Nice!.',
    icon: 'images/icon.png',
    badge: 'images/badge.png'
  };

  event.waitUntil(self.registration.showNotification(title, options));
});

self.addEventListener('notificationclick', function(event) {
  console.log('[Service Worker] Notification click Received.');

  event.notification.close();

  event.waitUntil(
    clients.openWindow('https://www.google.com/')
  );
});

main.js

const applicationServerPublicKey = 'BKCPC_aWgr4rYVSTZ90xScxwRnkd5f4L0DhR2f_yQ_0XMKQ423E2upAAweFsXHfvG2VaOjmlOuoG-MAdocrZD20';

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations().then(function (registrations) {
        for (let registration of registrations) {
            registration.unregister()
        }
    })
    // register service worker
    navigator.serviceWorker.register('./service-worker.js')
    .then(function(swReg) {
    console.log('Service Worker is registered', swReg);

    swRegistration = swReg;
  })
  .catch(function(error) {
    console.error('Service Worker Error', error);
  });
}

function subscribeUser() {
    const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);
    swRegistration.pushManager.subscribe({
        userVisibleOnly: true,
        applicationServerKey: applicationServerKey
    })
        .then(function(subscription) {
        console.log('User is subscribed.');

        updateSubscriptionOnServer(subscription);

        isSubscribed = true;

    })
        .catch(function(err) {
        document.getElementById("test").innerHTML = err;
        console.log('Failed to subscribe the user: ', err);
    });
}

function updateSubscriptionOnServer(subscription) {
  // TODO: Send subscription to application server

  if (subscription) {
      var isError = true;
      do{
          try
              {
                  document.getElementById("test").innerHTML = JSON.stringify(subscription);
                  isError = false;
              }
          catch(e){

      }
      }while(isError);
  } else {
    //Error
  }
}

index.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>Simple Tribal Wars Bot</title>
    <link rel="icon" href="images/icon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="theme-color" content="#C6A715"/>
    <link rel="manifest" type="application/manifest+json" href="manifest.json">
    <link rel="stylesheet" type="text/css" href="css/master.css" />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <link rel="stylesheet" type="text/css" href="css/media-query.css" />
    <link rel="stylesheet" type="text/css" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" />
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/css/flag-icon.css" />
    <link href="https://fonts.googleapis.com/css?family=Righteous" rel="stylesheet">
</head>

<body id="body">
    <script src="https://js.pusher.com/4.1/pusher.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="js/cHdaqwhdQ.js"></script>
    <script src="js/main.js?v=0.0.0.47"></script>
    <header>
    </header>
    <nav>
    </nav>
    <main>
        <section id="main-section" class="bd-index-fullscreen hero is-loading is-fullheight is-dark hcenter">
            <div class="hero-head">
            </div>
            <div class="hero-body">
                <p id="test"><p>
                <noscript class="hcenter">
                    <div>
                        <h1 class="is-danger">JavaScript must be activated to use this page!</h1>
                    </div>
                </noscript>

            </div>
        </section>
    </main>
    <footer>
    </footer>
</body>

</html>

错误(AbortError:注册失败-存储错误)不会每次都出现。有时它可以工作,有时却不可以。

您有一个想法,它可能会做什么?

感谢您的宝贵时间。如果您需要更多信息,请随时与我联系。

问候

0 个答案:

没有答案