4

我正在尝试在渐进式网络应用程序中实现推送通知,并在 Chrome 中使用新的有效负载支持。

我正在尝试将端点和密钥发送到服务器,但在 PushSubscription 对象上看不到 keys 属性...

如何访问密钥以便将它们发送到服务器?

4

1 回答 1

9

密钥可用,但正如您所注意到的那样,不能直接以这种方式使用。

您可以选择:

  1. 调用JSON.stringify(subscription)将创建一个包含序列化键的字符串(JSON.parse如果你真的想要的话,你可以这样做),或者
  2. 用 获取特定的key subscription.getKey('p256dh'),返回一个ArrayBuffer,然后自己转换成字符串,例如btoa(String.fromCharCode.apply(null, new Uint8Array(subscription.getKey('p256dh'))))

请注意,第一种方法创建“URL Safe Base 64”编码密钥,而第二种方法创建“Base 64(非 URL 安全)”。虽然 web-push 节点库将接受任一密钥编码,但您可能需要注意为库选择的编码。

于 2016-03-26T00:30:59.230 回答