保存推送订阅

时间:2017-07-27 16:35:32

标签: javascript push-notification endpoint progressive-web-apps

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

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

以下是Google的代码

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 | AUTH

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

关于VAPID,是的,您的公钥可以在JavaScript客户端代码中。您的私钥应该只为您所知,因此应该放在服务器上安全的地方。