iOSAPNs在測試環境下可以用,在正式環境下接收不到推送通知
阿新 • • 發佈:2019-01-29
最近在專案中,遇到了在測試環境下可以正常接收到推送通知,但是在正式環境下卻不可以接收到推送通知。並且,appstore上面的app也是可以正常接收到通知。
一開始,我覺得測試環境可以正常接收,說明程式碼可能沒問題(本身推送這塊的程式碼並沒有動)。那就可能是正式推送證書過期了,讓伺服器那邊看了,沒問題。而且,appstore上面的app可以正常使用,也說明了正式推送證書沒有過期。但是,問題出現在哪裡???
後來看到一篇文章,裡面有這句話:
如果你手機中的App是通過XCode直接安裝的話,那麼你的App就屬於開發環境,想要推送成功就需要建立開發環境的證書;如果你的App是打包成ipa檔案安裝的(不管是正式上線還是自己測試),那麼就是生產環境,需要建立生產環境證書,這兩個環境的Device token是不同的。
這句話,前部分正確,後部分我覺得不正確。我的理解是:
用Xcode直接安裝的,都是使用的測試證書;打包成ipa檔案的,可以使測試證書,也可以是正式證書
。
通過實驗,發現如下:
1. 通過Xcode直接安裝(都是測試證書)
測試伺服器+測試證書:xcode直接安裝,正常推送。
正式伺服器+測試證書:xcode直接安裝,不正常推送。
2. 打包成ipa檔案(兩種證書可選)
測試伺服器+測試證書:打包上傳到bugly,正常推送。
正式伺服器+測試證書:打包上傳到bugly,正常推送。
測試伺服器+正式證書:沒必要,不會把測試伺服器扔appstore上。
正式伺服器+正式證書:打包上傳到appstore或TestFlight,正常推送。
問題原因:
解決辦法:用正式伺服器+測試證書,打包成ipa檔案,上傳到bugly,下載測試,沒有問題。
總結:
- 通過Xcode直接安裝的,都是測試證書。
- 打包成ipa檔案,有兩種證書可選。
- 正式證書只用在appstore上。