如果用戶拒絕啓用推送通知,我們將通過didFailToRegisterForRemoteNotificationsWithError獲取錯誤。有人知道在這種情況下NSError對象中的代碼是什麼(爲了區分它,比如說沒有可用的連接)?didFailToRegisterForRemoteNotificationsWithError:用戶拒絕錯誤?
回答
我不認爲你的初始陳述(總是)成立。如果應用使用有效的配置文件正確簽名,則無論用戶在「設置」應用中的「通知」選項如何,調用registerForRemoteNotificationTypes:
都將導致application:didRegisterForRemoteNotificationsWithDeviceToken:
。根據我的經驗,我看到application:didFailToRegisterForRemoteNotificationsWithError:
被調用的唯一時間是因爲未正確簽名的應用程序。有問題的錯誤提到「沒有有效的APS環境權利找到應用程序」。
雖然這個問題很老,並且同意@ Jerred的大部分答案,我還是想過發佈一個更新的答案。
該主題中主要問題的答案是NO。
應用程序:didFailToRegisterForRemoteNotificationsWithError:在應用程序使用不正確的置備配置文件進行簽名時被調用。
此外,
應用:didRegisterForRemoteNotificationsWithDeviceToken:被稱爲只有當用戶能夠在,至少在通知中心的徽章,旗幟/警報或聲音設置的一個(在設置應用)爲您的應用程序。
有場景中的iOS不會調用這些方法之一
- 當用戶拒絕授予權限的應用程序發送推送通知
- 當沒有網絡連接和用戶授予權限發送推送通知。
- 當用戶在設置應用程序中禁用來自通知中心的應用程序推送通知時。
除了一部分外,這是一篇很好的文章:「APNS有獨立的環境:** sandbox(用於開發和特別構建)**和production。每個環境都有自己的證書,並且需要在他們倆。」。 Ad-hoc構建實際上擊中了生產APNS:「操作系統爲開發構建建立了與沙箱環境的持久連接;臨時和分佈構建連接到生產環境。」從https://developer.apple.com/library/ios/technotes/tn2265/_index。html#// apple_ref/doc/uid/DTS40010376-CH1-TNTAG42 – 2014-05-08 15:15:40
將文章中描述爲最佳實踐的答案更新是非常好的,因爲現在它不再可用。 – leolobato 2015-05-08 13:31:13
同意@leolobato,該文章的鏈接無效。 – Zorayr 2015-05-18 02:09:33
根據我的經驗,didFailToRegisterForRemoteNotificationsWithError:
方法是保留給更嚴重的情況,防止應用程序甚至向用戶顯示通知權限請求對話框。我所知道的情況包括應用程序在不支持推送通知的設備上運行(例如模擬器),或者在應用程序二進制文件中的aps環境權限中存在一些錯誤配置。
- 1. 錯誤:權限被拒絕:'/用戶
- 2. ThreadPoolExecutor拒絕錯誤
- 3. 錯誤:用戶1/repo.git被拒絕給用戶2的權限
- 4. MySQL導出/導入錯誤 - 用戶被拒絕+訪問被拒絕
- 5. MONO FTP客戶端錯誤 - 530用戶拒絕訪問
- 6. Laravel連接拒絕錯誤
- 7. ASP.net拒絕訪問錯誤
- 8. '連接被拒絕' 錯誤
- 9. Android:連接拒絕錯誤
- 10. jQuery「拒絕訪問」錯誤
- 11. 拒絕訪問錯誤2010
- 12. TorCtl拒絕連接錯誤
- 13. 「錯誤,拒絕訪問」(Swift)
- 14. CC.Net拒絕訪問錯誤
- 15. 拒絕錯誤SQL 1142
- 16. 連接拒絕錯誤
- 17. 錯誤:[$ injector:unpr]轉換拒絕
- 18. 訪問被拒絕錯誤
- 19. 錯誤1045(28000):訪問被拒絕用戶(使用密碼:是)
- 20. Mysql2 ::錯誤(訪問拒絕用戶'root'@'localhost'(使用密碼:否)):
- 21. 錯誤:拒絕訪問用戶'''localhost'(使用密碼:否)
- 22. iOS應用拒絕2.10錯誤
- 23. 權限被拒絕的錯誤使用
- 24. 錯誤:MySQLSyntaxErrorException - 選擇命令拒絕用戶
- 25. PHP MYSQL訪問被拒絕用戶錯誤
- 26. Magento的錯誤 - SQLSTATE [HY000] [1045]訪問被拒絕的用戶
- 27. 訪問被拒絕?錯誤的用戶/通
- 28. 在django註冊中註冊用戶時拒絕錯誤連接
- 29. 錯誤#1045 - 在phpmyadmin中拒絕用戶'root'@'localhost'的訪問
- 30. 主義錯誤創建數據庫:拒絕訪問用戶
你應該真的獎勵傑瑞德的答案 - 他是正確的答案。我只需要重新驗證一下我公司的客戶。下載我們的企業應用程序(使用生產推送服務),當被問到時不允許所有通知,並且應用程序仍然有一個令牌。在「設置」中啓用它們,重新啓動應用程序,然後在「設置」中禁用它們,重新啓動應用程序 - 在所有情況下,令牌都會正確返回。 – 2014-12-02 19:23:57