我可以在未经推送通知许可的情况下安装服务人员吗?

问题描述:

当我编写这样的代码时,在向服务工作人员注册时获得通知许可。 我想在启动添加到主屏幕的应用程序后启用通知,因此我想要防止在向服务人员注册时显示通知许可,有可能吗?我可以在未经推送通知许可的情况下安装服务人员吗?

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

谢谢你的回答! 确认通知的许可后,我会努力注册! – aiosl

+0

我看到一个“Handle Permission Denied”的例子,并得到了一个解决方案提示。 有些地方在提交的代码以外的地方完成“订阅()”, 请求通知的权限。 谢谢你的帮助! – aiosl