2016-03-21 277 views
1

我有一個可以正常工作的Web通知腳本。但是,當我使用chrome版本43進行測試時,出現錯誤「DOMException:註冊失敗 - 權限被拒絕」。訂閱階段發生此錯誤。DOMException:註冊失敗 - 權限被拒絕

下面的代碼片斷是登記

navigator.serviceWorker.register('sw.js').then(function(reg) { 
    console.log('[ServiceWorker] Registration Obj', reg); 
    reg.pushManager.subscribe({ 
     userVisibleOnly: true 
    }).then(function(sub) { 
     //This never executes and catch gets called 
     console.log('Subscription successful, Subscription endpoint:', sub.endpoint); 
    }).catch(function(error) { 
     console.log("Error during subscription ", error); 
    }); 
}).catch(function(error) { 
    if (Notification.permission === 'denied') { 
     console.warn('Permission for Notifications was denied'); 
    } else { 
     console.error('Unable to subscribe to push.', error); 
    } 
}); 

在上面的代碼的通常處理中,在步驟其中i做reg.pushManager.subscribe()發生錯誤。

  • 這不會發生鉻49
  • 此錯誤總是發生在Chrome版本43

[注]我認爲它是一個普遍的問題與Chrome版本43,但是當我檢查網站像goroost.com和pushcrew,他們似乎工作正常。只有我的不工作

+0

您是否擁有鏈接到頁面的清單,其中包含正確的gcm_sender_id和gcm_user_visible_only值? – Marco

+0

是的,明顯有這兩個領域。它也適用於其他版本的Chrome。 –

+0

這兩個catch函數中的哪一個被調用?最後一個?如果是這樣,兩個消息中的哪一個被記錄?最後一個問題,爲什麼你需要支持這樣一箇舊版本的Chrome?它在近一年前發佈! – Marco

回答

5

我遇到了類似的問題。 你特別看的Chrome版本43

  1. 檢查manifest.json。既然你已經告訴它它適用於更高版本,我假設你已經錯過了清單中的某些東西。在此link中,Matt Gaunt建議如果清單出現問題,則可能會發生此錯誤。

  2. 確保最後沒有尾隨逗號。

  3. 此外,版本43不支持通知對象中的數據屬性,並且不允許在點擊通知時打開窗口,因此您也需要關注這些問題。

5

我遇到了這個問題。 除了prajnavantha的回答之外,這可能是由於意外地點擊瀏覽器通知時發生的。 要在Chrome中修復此問題,請轉至設置 - >點擊「顯示高級設置」 - >在「隱私」下點擊「內容設置」 - >然後在「通知」下選擇「管理強制」。進入此處後,請通知受影響的網址。

+0

這個解決方案對我來說很有效,因爲我以前從來沒有實現過推送,更不用說在網站上通過錯誤了。這將如何發生? – zoltar

+0

爲我工作,因爲我有問題也設置了新的訂閱。非常感謝你。順便說一句,Chrome版本62.0.3202.94。 – natterstefan