我有一个 Progressive WebApp Chat 应用程序,我希望能够在桌面上发送或接收推送通知(在移动设备上)和 Web (Chrome) 通知。现在,我有一个网络客户端能够接收 tickles,即没有有效负载的数据(然后通过 API 调用从我的服务器获取有效负载)
我正在使用 Pubnub 与 GCM 和 APNS 对话。我在项目的Web、iOS( native )和 Android( native ) 客户端上有可用的应用程序。现在,我可以在我的网络应用程序上接收推送通知,但没有负载。
没有服务器在哪里发布任何东西。所有的发布都是由客户完成的,因为它主要是一个聊天应用程序。
在我的 Web/Android 客户端中,我的 pubnubPayload 是:
var pubnubPayload = {
"text": "no payload!",
"pn_gcm": {
"data": {
"title": "shash",
"babe": "ya"
}
}
}
然后像这样进行正常的发布:
Pubnub.publish({
channel: myChannel,
message: pubnubPayload,
callback: someFunc
});
所以,当我订阅这样的 pubnub channel 时:
Pubnub.subscribe({
channel: selectedChannel,
message: function(m){
console.log(m)
},
error: function (error) {
// Handle error here
console.log(JSON.stringify(error));
}
});
我通过 Pubnub 收到消息并在我的网络应用程序上收到推送通知(但没有负载)。
我的问题是:
如何在 Web 上接收具有负载的推送通知?有没有 pubnub 可以让你为网络客户端发布加密消息,以便能够读取 GCM 推送通知的有效负载而无需使用 Pubnub's Access Manager ?
或者使用 PAM 是我唯一的选择并且应该解决无负载问题吗?
最佳答案
消息加密不需要 PubNub Access Manager
PubNub Access Manager和消息加密没有直接关系,不需要加密您的消息,但所有使用 PubNub 的应用程序 should implement Access Manager to control who can do what on channels通过 granting permissions (read/write/delete) to auth-keys您的客户端应用程序将初始化 PubNub,以按您的预期使用这些 channel 。
使用标准 TLS(以前称为 SSL)加密
要加密消息,只需在启用 TLS 的情况下初始化 PubNub(ssl
可能是参数的名称,但它是最新的 TLS,而不是已弃用的旧 SSL)。这将从您的服务器或客户端应用程序到 PubNub 网络使用标准 TLS 加密。
使用 AES 256 加密的密码 key 加密消息
如果您希望将您的消息从您的服务器/客户端应用程序加密到 PubNub 以及整个 PubNub,只需 provide a cipher key when you initialize PubNub .最好的部分是您持有 key ,而不是 PubNub,因此除了那些密码 key 的持有者之外,没有人可以阅读您的消息。
使用加密/解密 API 的自定义加密
此处提出的问题包括移动推送通知,这意味着如果您希望 PubNub 将移动推送消息发送到推送服务 (APNS/FCM) 并由这些服务正确处理,则您无法加密完整消息。实时消息将按原样(加密)发送给客户端订阅者。但是您可以加密消息的重要/ secret 部分,并保留需要由 PubNub 和推送服务准备好的部分未加密 using the encrypt
and decrypt
APIs .文章,Encryption for APNS, GCM, WMS with PubNub , 有点旧,但应该提供所需的见解。
关于google-cloud-messaging - 使用 Pubnub 在渐进式 Web 应用程序上发送和接收推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435807/