我可以在未经推送通知许可的情况下安装服务人员吗?
问题描述:
当我编写这样的代码时,在向服务工作人员注册时获得通知许可。 我想在启动添加到主屏幕的应用程序后启用通知,因此我想要防止在向服务人员注册时显示通知许可,有可能吗?我可以在未经推送通知许可的情况下安装服务人员吗?
if ('serviceWorker' in navigator && 'PushManager' in window){
navigator.serviceWorker.register(pathServiceWorker)
.then(function(swReg){
swReg.pushManager.subscribe({userVisibleOnly: true})
.then(function(sub) {
console.log('endpoint:', sub.endpoint);
}).catch(function(error){
console.error('subscribeError',error);
});
}).catch(function(error){
console.error('ServiceWorkerError',error);
});
} else {
console.warn('Pushmessagingisnotsupported');
}
答
您可以检查这Handle Permission Denied文档。您可以参考示例代码,了解如何在用户尚未订阅时禁用按钮。
function updateBtn() {
if (Notification.permission === 'denied') {
pushButton.textContent = 'Push Messaging Blocked.';
pushButton.disabled = true;
updateSubscriptionOnServer(null);
return;
}
if (isSubscribed) {
pushButton.textContent = 'Disable Push Messaging';
} else {
pushButton.textContent = 'Enable Push Messaging';
}
pushButton.disabled = false;
}
谢谢你的回答! 确认通知的许可后,我会努力注册! – aiosl
我看到一个“Handle Permission Denied”的例子,并得到了一个解决方案提示。 有些地方在提交的代码以外的地方完成“订阅()”, 请求通知的权限。 谢谢你的帮助! – aiosl