我可以在未经推送通知许可的情况下安装服务工作进程吗?



当我像这样编写代码时,我在向服务工作者注册时获得了通知权限。我想在启动添加到主屏幕的应用程序后允许通知,所以我想阻止在向服务工作者注册时显示通知权限,可以吗?

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');
}

您可以查看此处理权限被拒绝文档。您可以参考示例代码,了解如何在用户尚未订阅时禁用按钮。

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;
}

相关内容

最新更新