保存推送订阅

Posted

技术标签:

【中文标题】保存推送订阅【英文标题】:Saving push subscriptions 【发布时间】:2017-07-27 16:35:32 【问题描述】:

我目前正在developers.google.com 上阅读有关推送通知的信息。

我已经到了获得推送订阅对象的地步。 但我不确定保存它的最佳方法。

这是来自谷歌的代码

function subscribeUserToPush() 
    return getSWRegistration().then(function(registration) 
        const subscribeOptions = 
            userVisibleOnly: true,
            applicationServerKey: urlBase64ToUint8Array('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
        ;

        return registration.pushManager.subscribe(subscribeOptions);
    ).then(function(pushSubscription) 
        console.log('Received PushSubscription: ', JSON.stringify(pushSubscription));
        return pushSubscription;
    );

我有一个数据库,有一个用户表,所以我应该在那里创建一个新列,并将字符串化的 JSON 订阅对象存储在那里吗?

或者更好地为订阅创建一个新表? 比如这样的表?

user_id |端点 | p256dh |授权

一个用户可以有多个订阅吗?在这种情况下,我认为首选专用订阅表。

关于 VAPID 密钥,我应该像上面那样将公共权限放入代码中吗?然后将私有的存储在安全的地方?

谢谢。

【问题讨论】:

【参考方案1】:

如果用户通过多种设备(例如移动设备和桌面设备)使用您的网站,则他们可能有多个订阅。

关于 VAPID,是的,您的公钥可以在 javascript 客户端代码中。你的私钥应该只有你自己知道,所以应该放在服务器上安全的地方。

【讨论】:

以上是关于保存推送订阅的主要内容,如果未能解决你的问题,请参考以下文章

何时从服务器删除推送订阅

Worklight:如何获取推送订阅的当前设备 ID

基于Hyperf实现RabbitMQ+WebSocket消息推送

Hyperf+RabbitMQ+WebSocket实现大屏幕消息推送

CloudKit 通知的动态 alertBody

扒房源线索消息推送设计