使用Pubnub在渐进式Web应用程序上发送和接收推送通知

4

我有一个渐进式WebApp聊天应用程序,我希望能够在桌面上发送或接收推送通知(在移动设备上)和Web(Chrome)通知。目前,我有一个Web客户端,可以接收tickles,即没有有效负载的数据(有效负载将通过API调用从我的服务器获取)。

我正在使用PubnubGCMAPNS进行通信。我的项目有Web、iOS(本地)和Android(本地)客户端的工作应用程序。目前,我能够在我的Web应用程序上接收推送通知,但没有有效负载。

服务器没有任何地方发布任何内容。所有发布都是由客户端完成的,因为它主要是一个聊天应用程序。

从我的Web/Android客户端,我的pubnubPayload是:

var pubnubPayload = {
    "text": "no payload!",
    "pn_gcm": {
        "data": {
            "title": "shash",
            "babe": "ya"
        }
    }
}

然后像这样进行正常发布:

Pubnub.publish({
    channel: myChannel,
    message: pubnubPayload,
    callback: someFunc
});

因此,当我像这样订阅PubNub频道时:

    Pubnub.subscribe({
        channel: selectedChannel,
        message: function(m){
            console.log(m)
        },
        error: function (error) {
            // Handle error here
            console.log(JSON.stringify(error));
        }
    });

我通过Pubnub和推送通知(但没有有效载荷)在我的Web应用程序中收到消息。

我的问题是:

如何在Web上接收具有有效负载的推送通知?是否有一种方式可以让Pubnub发布加密消息,以便Web客户端能够读取GCM推送通知的有效负载,而不使用 Pubnub的Access Manager

或者使用PAM是我的唯一选择,并且应该解决没有有效载荷的问题吗?


不确定您在使用什么进行Web推送通知。这是浏览器通知吗?如果是,我认为它不是跨浏览器的,只能在Chrome中使用。也许看到更多您的代码会有所帮助。关于Access Manager,它不会加密您的数据。启用ssl参数并在PUBNUB.int中提供cipher_key即可实现加密。如果我们可以看到更多您的代码以获取有关Web推送方面的更多上下文信息,请告诉我。看起来您正在使用PubNub JavaScript SDK v3。我们建议使用PubNub JS SDK v4 - Craig Conover
@CraigConover 我想在我们使用AngularJS构建、运行你们的v3 JS SDK的渐进式Web应用程序上(在Android、iOS和Web浏览器中)接收推送通知。请参考以下链接:https://developers.google.com/web/fundamentals/getting-started/push-notifications/?hl=en。 看看这个 https://gauntface.github.io/simple-push-demo/。问题是我想接收包含推送负载的内容(该负载是从我们的客户端之一,即Android、Web或iOS发送的),但是Web应用程序需要对负载进行加密才能读取它。 - SLearner
好的,我刚刚看到PAM在所有使用层面上都是免费的。所以我可以继续实施它,但是PAM能解决这个问题吗?另外,在没有启用PAM的情况下,我们能应用cipher_key吗? - SLearner
Access Manager 不支持加密,也不提供加密功能。它只提供一种验证使用授权密钥访问通道的方式,您可以授予读写权限。 - Craig Conover
那么,当向推送服务(如GCM或APNS)发送发布负载时,您是否加密它? - SLearner
显示剩余8条评论
1个回答

1

无需使用PubNub访问管理器进行消息加密

PubNub访问管理器和消息加密没有直接关系,因此不需要使用它们来加密您的消息。但是,所有使用PubNub的应用程序应该实现访问管理器以控制谁可以在频道上执行什么操作,通过向客户端应用程序授予权限(读/写/删除)的身份验证密钥,这些应用程序将使用这些通道,以便按照您的意图使用。

使用标准TLS(以前称为SSL)进行加密

要加密消息,只需启用TLS并初始化PubNub(ssl可能是参数的名称,但它是最新的TLS,而不是已被弃用的旧SSL)。这将从您的服务器或客户端应用程序使用标准TLS加密到PubNub网络。

使用AES 256加密密码密钥加密消息

如果您希望从服务器/客户端应用程序到PubNub以及在PubNub中的所有消息都加密,只需在初始化PubNub时提供密码密钥即可。最好的部分是,您拥有密钥,而不是PubNub,因此除了那些具有密码密钥持有人外,没有人可以读取您的消息。

使用加密/解密API进行自定义加密

这里提到的问题包括移动推送通知,这意味着如果您想要PubNub将移动推送消息发送到推送服务(APNS / FCM)并由这些服务进行处理,则无法加密完整消息。实时消息将按原样 - 加密 - 发送到客户端订阅者。但是,您可以加密消息的重要/机密部分,并保留需要PubNub和推送服务准备好的部分未加密{{link1:使用encryptdecrypt API}}。文章{{link2:使用PubNub进行APNS、GCM、WMS加密}}有点旧,但应该提供所需的见解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接