Ошибка DOMException при попытке зарегистрировать PUSH для push-уведомлений - PullRequest
0 голосов
/ 30 декабря 2018

Я новичок в работе с сервисными работниками и push-уведомлениями, поэтому я пробую этот тестовый проект для создания push-уведомлений с сервисными работниками и node.js.Я продолжаю получать эту ошибку DOMException в моей консоли, пытаясь зарегистрировать push.

Это мой код

    const publicVapidKey =
  "BA6iGR7K3KfA_xn9XZTDqKMjUZcA6o8IsnDtnkvxtmkg4GwuTCsqNU-8YUoEIkfYCpuF7PraFKVI0zvNfNsPjy0";

//check for service worker
if ("serviceWorker" in navigator && "PushManager" in window) {
  console.log("Service Worker and Push is supported");
  send().catch(err => console.error(err));
}

// Register the service worker
async function send() {
  console.log("Registering Service Worker...");
  const register = await navigator.serviceWorker.register("/worker.js", {
    scope: "/"
  });
  console.log("Service Worker Registered...");

  //Register push
  console.log("Registering Push...");
  const subscription = await register.pushManager.subscribe({
    userVisibleOnly: true,
    applicationServerKey: urlBase64ToUint8Array(publicVapidKey)
  });
  console.log("Push Registered...");

  //send push notification
  console.log("Sending Push... ");
  await fetch("/subscribe", {
    method: "POST",
    body: JSON.stringify(subscription),
    headers: {
      "content-type": "application/json"
    }
  });
  console.log("Push Sent...");
}
//

function urlBase64ToUint8Array(base64String) {
  const padding = "=".repeat((4 - (base64String.length % 4)) % 4);
  const base64 = (base64String + padding)
    .replace(/\-/g, "+")
    .replace(/_/g, "/");

  const rawData = window.atob(base64);
  const outputArray = new Uint8Array(rawData.length);

  for (let i = 0; i < rawData.length; ++i) {
    outputArray[i] = rawData.charCodeAt(i);
  }
  return outputArray;
}

1 Ответ

0 голосов
/ 01 января 2019

О, оказывается, я отключил уведомления в настройках браузера Chrome.Я включил его сейчас и все отлично работает

...