PushManager: getSubscription() 方法

Baseline 已廣泛支援

此功能已成熟,並可在許多裝置和瀏覽器版本上執行。自 2023 年 3 月以來,它已在各種瀏覽器中可用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

PushManager 介面的 PushManager.getSubscription() 方法用於檢索現有的推送訂閱。

它返回一個 Promise,該 Promise 解析為一個 PushSubscription 物件,其中包含現有訂閱的詳細資訊。如果不存在現有訂閱,則解析為 null 值。

語法

js
getSubscription()

引數

無。

返回值

一個 Promise,它解析為一個 PushSubscription 物件或 null

示例

此程式碼片段摘自一個 推送訊息和通知示例。(無即時演示可用。)

js
// We need the service worker registration to check for a subscription
navigator.serviceWorker.ready.then((serviceWorkerRegistration) => {
  // Do we already have a push message subscription?
  serviceWorkerRegistration.pushManager
    .getSubscription()
    .then((subscription) => {
      // Enable any UI which subscribes / unsubscribes from
      // push messages.
      const pushButton = document.querySelector(".js-push-button");
      pushButton.disabled = false;

      if (!subscription) {
        // We aren't subscribed to push, so set UI
        // to allow the user to enable push
        return;
      }

      // Keep your server in sync with the latest subscriptionId
      sendSubscriptionToServer(subscription);

      showCurlCommand(subscription);

      // Set your UI to show they have subscribed for
      // push messages
      pushButton.textContent = "Disable Push Messages";
      isPushEnabled = true;
    })
    .catch((err) => {
      console.error(`Error during getSubscription(): ${err}`);
    });
});

規範

規範
推送 API
# dom-pushmanager-getsubscription

瀏覽器相容性