PushManager
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用。
PushManager 介面是 Push API 的一部分,它提供了一種接收第三方伺服器通知以及請求推送通知 URL 的方法。
可以透過 ServiceWorkerRegistration.pushManager 屬性訪問此介面。
靜態屬性
PushManager.supportedContentEncodings-
返回一個數組,其中包含可用於加密推送訊息載荷(payload)的受支援的內容編碼。
例項方法
PushManager.getSubscription()-
檢索現有的推送訂閱。它返回一個
Promise,該 Promise 解析為一個包含現有訂閱詳細資訊的PushSubscription物件。如果沒有現有的訂閱,則解析為null值。 PushManager.permissionState()-
返回一個
Promise,該 Promise 解析為當前PushManager的許可權狀態,該狀態將是'granted'、'denied'或'prompt'之一。 PushManager.subscribe()-
訂閱推送服務。它返回一個
Promise,該 Promise 解析為一個包含推送訂閱詳細資訊的PushSubscription物件。如果當前 service worker 沒有現有的訂閱,則會建立一個新的推送訂閱。
已廢棄的方法
PushManager.hasPermission()已棄用 非標準-
返回一個
Promise,該 Promise 解析為請求的 Web 應用程式的PushPermissionStatus,該狀態將是granted、denied或default之一。已被PushManager.permissionState()替換。 PushManager.register()已棄用 非標準-
訂閱推送訂閱。已被
PushManager.subscribe()替換。 PushManager.registrations()已棄用 非標準-
檢索現有的推送訂閱。已被
PushManager.getSubscription()替換。 PushManager.unregister()已棄用 非標準-
登出並刪除指定的訂閱端點。在更新的 API 中,可以透過呼叫
PushSubscription.unsubscribe()方法來登出訂閱。
示例
this.onpush = (event) => {
console.log(event.data);
// From here we can write the data to IndexedDB, send it to any open
// windows, display a notification, etc.
};
navigator.serviceWorker
.register("serviceworker.js")
.then((serviceWorkerRegistration) => {
serviceWorkerRegistration.pushManager.subscribe().then(
(pushSubscription) => {
console.log(pushSubscription.endpoint);
// The push subscription details needed by the application
// server are now available, and can be sent to it using,
// for example, the fetch() API.
},
(error) => {
console.error(error);
},
);
});
規範
| 規範 |
|---|
| 推送 API # pushmanager-interface |
瀏覽器相容性
載入中…