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

浏览器兼容性