PushManager:getSubscription() 方法
Baseline 2023Newly available
Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
备注: 此特性在 Web Worker 中可用。
PushManager
接口的 PushManager.getSubscription()
方法尝试获取已有的推送订阅。
它返回一个 Promise
,其会兑现包含现有订阅的详细信息的 PushSubscription
对象。如果不存在已有的推送订阅,则兑现 null
值。
语法
js
getSubscription()
参数
无。
返回值
一个会兑现为 PushSubscription
对象或 null
的 Promise
。
示例
这个代码片段来自推送消息和通知示例。(没有可用的在线演示。)
js
// 我们需要 service worker 注册才能检查订阅
navigator.serviceWorker.ready.then((serviceWorkerRegistration) => {
// 我们已经有推送消息订阅了吗?
serviceWorkerRegistration.pushManager
.getSubscription()
.then((subscription) => {
// 启用订阅/取消订阅推送消息的 UI
const pushButton = document.querySelector(".js-push-button");
pushButton.disabled = false;
if (!subscription) {
// 我们没有订阅推送,因此设置 UI 以允许用户启用推送
return;
}
// 与服务器保持最新的订阅 ID 的同步
sendSubscriptionToServer(subscription);
showCurlCommand(subscription);
// 设置 UI 以显示他们已订阅推送消息
pushButton.textContent = "禁用消息推送";
isPushEnabled = true;
})
.catch((err) => {
console.error(`在 getSubscription() 期间遇到错误:${err}`);
});
});
规范
Specification |
---|
Push API # dom-pushmanager-getsubscription |