0

當我編寫這樣的代碼時,在向服務工作人員註冊時獲得通知許可。 我想在啓動添加到主屏幕的應用程序後啓用通知,因此我想要防止在向服務人員註冊時顯示通知許可,有可能嗎?我可以在未經推送通知許可的情況下安裝服務人員嗎?

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

回答

1

您可以檢查這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

相關問題