2

我有一個模式,首先詢問用戶是否想要接收特殊優惠,如果他們點擊是,然後我拉入推送通知的代碼,以便他們可以允許通知。如果他們已經允許通知,我不希望模式彈出。我正在尋找一種方法來檢查通知是否已被用戶允許使用谷歌瀏覽器。如何檢查谷歌瀏覽器中的用戶是否已經允許通知?

回答

4

檢查通知對象的permission屬性:

if (Notification.permission !== "granted") { 
    // ask for permission 
+0

謝謝!完美的作品。 – cmac

+1

另外,Notification.permission!==「拒絕」。 – Satys

1

除了Notification.permission通過Denys Séguret作爲回答有更新的,較差的支持,但更普遍的Permissions API.

下面是一個簡單的使用例子,基於上the one from MDN:

function handlePermission() { 
    return navigator.permissions 
      .query({name:'notifications'}) 
      .then(permissionQuery) 
      .catch(permissionError); 
} 

function permissionQuery(result) { 
    console.debug({result}); 
    var newPrompt; 

    if (result.state == 'granted') { 
     // notifications allowed, go wild 

    } else if (result.state == 'prompt') { 
     // we can ask the user 
     newPrompt = Notification.requestPermission(); 

    } else if (result.state == 'denied') { 
     // notifications were disabled 
    } 

    result.onchange =() => console.debug({updatedPermission: result}); 

    return newPrompt || result; 
} 

//// 

handlePermission(); 
+0

謝謝!我也會記住這一點。 – cmac

相關問題