我正在使用Push Notification API,并且遇到了JavaScript执行问题。
我具有以下功能:
function subscribeUserToPush() {
return navigator.serviceWorker.register('/firebase-messaging.js')
.then(function (registration) {
const subscribeOptions = {
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array('BEjboIY283xz3XTcjiFGVBGWazp20_LArGgplbQw0h91bafKBIT2zl7BSKZBgOV9tg1Tb_X0BXxrB1BjxX6WZvQ')
};
return registration.pushManager.subscribe(subscribeOptions);
})
.then(function (pushSubscription) {
console.log('Received PushSubscription: ', JSON.stringify(pushSubscription));
const subscriptionObject = JSON.stringify(pushSubscription);
subscription = subscriptionObject;
console.log('EndPoint url: ', pushSubscription.endpoint);
return pushSubscription;
});
}
subscribeUserToPush();
调用此函数后,应在以下变量中包含值:
console.log('Global scope subscription', window.subscription);
var endpoint = window.subscription.endpoint;
var key = window.subscription.getKey('p256dh');
var auth = window.subscription.getKey('auth');
但是,在我的控制台中:我首先看到全局范围订阅 未定义和错误未捕获的TypeError:无法读取属性 未定义的“端点”
尽管在调试器中,window.subscription获得更新的值。 谁能帮我解决这个问题。我是使用Promise和Web Push Notification API的新手。我想对我的ajax调用使用avove变量,以将订阅信息发送到服务器。