PushSubscription: getKey() 方法

基线 2023

新功能

2023 年 3 月起,此功能可在最新设备和浏览器版本中使用。此功能可能无法在较旧的设备或浏览器中使用。

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在一些或所有支持的浏览器中可用。

注意:此功能在Web 工作线程中可用。

PushSubscription 接口的 getKey() 方法返回一个表示客户端公钥的ArrayBuffer,该公钥可以发送到服务器并用于加密推送消息数据。

语法

js
getKey(name)

参数

name

一个字符串,表示用于生成客户端密钥的加密方法。该值可以是

p256dh

P-256 曲线上的椭圆曲线 Diffie-Hellman 公钥(即 NIST secp256r1 椭圆曲线)。生成的密钥是 ANSI X9.62 格式的非压缩点。

auth

身份验证密钥,如Web 推送消息加密中所述。

返回值

一个ArrayBuffer,如果找不到公钥则为 null

示例

js
reg.pushManager.getSubscription().then((subscription) => {
  // Enable any UI which subscribes / unsubscribes from
  // push messages.

  subBtn.disabled = false;

  if (!subscription) {
    console.log("Not yet subscribed to Push");
    // We aren't subscribed to push, so set UI
    // to allow the user to enable push
    return;
  }

  // Set your UI to show they have subscribed for
  // push messages
  subBtn.textContent = "Unsubscribe from Push Messaging";
  isPushEnabled = true;

  // initialize status, which includes setting UI elements for subscribed status
  // and updating Subscribers list via push
  const endpoint = subscription.endpoint;
  const key = subscription.getKey("p256dh");
  const auth = subscription.getKey("auth");

  // ...
});

规范

规范
Push API
# dom-pushsubscription-getkey

浏览器兼容性

BCD 表格仅在浏览器中加载