我尝试在渐进式网络应用中实施推送通知,并在Chrome中使用新的Payload支持。
我尝试将端点和密钥发送到服务器,但是没有看到PushSubscription对象上的keys属性...
如何访问密钥以便将其发送到服务器?
答案 0 :(得分:3)
这些密钥可用,但正如您所说,不能直接以这种方式使用。
您可以选择:
return dec2bin(x, extra);
,这将创建一个包含序列化键的字符串(如果您真的需要,可以JSON.stringify(subscription)
)或JSON.parse
的特定键,返回一个ArrayBuffer,然后自己将其转换为字符串,例如subscription.getKey('p256dh')
请注意,第一种方法是创建" URL Safe Base 64"编码密钥,而第二个创建" Base 64(非URL安全)"。虽然web-push节点库将接受键的编码,但您可能需要注意为库选择的编码。