我正在尝试在渐进式网络应用程序中实现推送通知,并在 Chrome 中使用新的有效负载支持。
我正在尝试将端点和密钥发送到服务器,但在 PushSubscription 对象上看不到 keys 属性...
如何访问密钥以便将它们发送到服务器?
我正在尝试在渐进式网络应用程序中实现推送通知,并在 Chrome 中使用新的有效负载支持。
我正在尝试将端点和密钥发送到服务器,但在 PushSubscription 对象上看不到 keys 属性...
如何访问密钥以便将它们发送到服务器?
密钥可用,但正如您所注意到的那样,不能直接以这种方式使用。
您可以选择:
JSON.stringify(subscription)
将创建一个包含序列化键的字符串(JSON.parse
如果你真的想要的话,你可以这样做),或者subscription.getKey('p256dh')
,返回一个ArrayBuffer,然后自己转换成字符串,例如btoa(String.fromCharCode.apply(null, new Uint8Array(subscription.getKey('p256dh'))))
请注意,第一种方法创建“URL Safe Base 64”编码密钥,而第二种方法创建“Base 64(非 URL 安全)”。虽然 web-push 节点库将接受任一密钥编码,但您可能需要注意为库选择的编码。