2014-07-06 62 views
1

按照Apple Documentation的說明,允許具有Safari的用戶訪問網站並獲取Apple推送通知服務的推送通知。OSX網站推送通知 - Safari requestPermission回撥從未呼叫

我正在使用SSL,擁有來自Apple的證書,並生成了推送包文件。

Safari在運行提示requestPermission時下載此內容,顯示用戶權限請求提示,但在用戶單擊'批准'時,從不會調用回調函數。

window.safari.pushNotification.requestPermission(url, websitePushID, userInfo, callback); 
  1. 回調函數不會被調用。
  2. 不引發任何異常。
  3. 對於任何成功或錯誤,不會向服務器發送POST。
  4. 該網站現在列在「系統首選項」>「通知」下。
  5. 網站是而不是在Safari Preferences中的Notifications下列出。
  6. 立即拒絕進一步嘗試請求權限或查詢權限。

重置被拒絕的權限的唯一方法是編輯OSX的內部sqllite文件並刪除Safari中的一組配置文件,然後重新嘗試請求。

什麼可能導致這種不尋常的行爲?

回答

0

如果沒有您使用的確切javascript,很難判斷,但您在Apple文檔中看到的3種權限類型是默認,授予和拒絕。

如果權限被授予或拒絕,那麼用戶已經設置他們是否想要接收這些推送通知。一旦用戶拒絕了推送通知,那麼Apple已做出決定,他們不能再次被詢問(不改變設置)。如果他們已經被授予許可,則不需要調用window.safari.pushNotification.requestPermission

唯一一次你會調用window.safari.pushNotification.requestPermission是當權限沒有被拒絕或授予。只有在這種情況下,您才需要調用該函數並期望響應觸發回調函數。如果您看到許可請求提示,則意味着請求許可已起作用。

+0

在調用requestPermission之前,權限處於「默認」狀態,但仍不會進行回調。正在運行的代碼與樣本中的字面相同,只是回調函數將其參數寫入控制檯。我有一個蘋果公司的bug報告。 – simbolo

+0

@simbolo你有沒有想過解決?我們看到了同樣的事情。 – Casey

+0

@Casey不要!我打開了許多開發人員技術支持案例,只是被告知Safari不是受支持的產品。因此,有一個開放的bug報告(#17565372),在這幾個月後仍然是開放的。最後,我放棄了實施,因爲它始終無法解決它爲什麼不起作用。一些安慰是因爲我無法訂閱任何其他網站,所以它不僅僅是我。我得出的結論是,在小牛隊的比賽中有一些闖入Safari,並且至今仍然被打破。 – simbolo