我的PushRegistration对象上不存在keys属性

时间:2016-03-26 00:30:59

标签: service-worker web-push progressive-web-apps

我尝试在渐进式网络应用中实施推送通知,并在Chrome中使用新的Payload支持。

我尝试将端点和密钥发送到服务器,但是没有看到PushSubscription对象上的keys属性...

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

1 个答案:

答案 0 :(得分:3)

这些密钥可用,但正如您所说,不能直接以这种方式使用。

您可以选择:

  1. 调用 return dec2bin(x, extra); ,这将创建一个包含序列化键的字符串(如果您真的需要,可以JSON.stringify(subscription))或
  2. 获取JSON.parse的特定键,返回一个ArrayBuffer,然后自己将其转换为字符串,例如subscription.getKey('p256dh')
  3. 请注意,第一种方法是创建" URL Safe Base 64"编码密钥,而第二个创建" Base 64(非URL安全)"。虽然web-push节点库将接受键的编码,但您可能需要注意为库选择的编码。