我有這個問題約2周,當時我突然停止發送生產通知。我正在使用django-push-notifications庫和django admin,我可以發送測試消息,但不會通過系統發送消息。APNS_CERTIFICATE - 推送通知不會在生產中發送
在我的本地計算機上,一切都完美無瑕。我發現了一個命令來測試證書:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-cert.pem
了大量的研究有了這一個我不得不返回:超時:7200(秒)檢查返回 碼:20(無法獲取本地頒發者證書)擴展主 祕密:是的
所以,我發現我需要把「CA」的路徑:
openssl s_client -CApath /etc/ssl/certs/ -connect gateway.push.apple.com:2195 -cert apns-cert.pem
是誰帶我去:驗證返回碼:0(OK)
然而,在庫中使用,我需要把一個。質子交換膜的文件的完整路徑。然後我發現這個命令:
ls /etc/ssl/certs/Entrust*
我測試了所有在那裏的.PEM文件,直到我達到什麼似乎已經完美工作:不久
openssl s_client -CAfile /etc/ssl/certs/Entrust.net_Premium_2048_Secure_Server_CA.pem -connect gateway.push.apple.com:2195 -cert apns-cert.pem
,我格式化我PUSH_NOTIFICATIONS_SETTINGS:
PUSH_NOTIFICATIONS_SETTINGS = {
"GCM_API_KEY": "xxxx",
"APNS_CERTIFICATE": os.path.join(BASE_DIR, "apns-cert.pem"),
"APNS_CA_CERTIFICATES": "/etc/ssl/certs/Entrust.net_Premium_2048_Secure_Server_CA.pem",
"APNS_ERROR_TIMEOUT": 3,
}
IOS_VERIFY_RECEIPT_API = 'https://buy.itunes.apple.com/verifyReceipt'
ANDROID_VERIFY_RECEIPT_API = 'https://www.googleapis.com/androidpublisher/v2/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}'
不幸的是,它仍然不會發送PUSH,也沒有錯誤,因爲我已將它配置爲彈出錯誤以通過電子郵件發送。
PS:記住,通過發送測試文本通過django管理員:好的。通過沙盒發送(調試):確定。
我並不孤單!我遇到了同樣的問題,這隻發生在生產環境中!所以問題可能出在蘋果身上,或者在django-push-notifications中出現任何可能的折舊。 – Fian
我發現它停止工作的原因。我的查詢集選擇設備發送消息,最終爆發「令牌無效」錯誤,針對基礎的較舊設備。這導致功能被取消。我通過循環和忽略錯誤來解決問題,通過循環內的設備發送設備。 –
感謝您的分享。將檢查我的項目。 – Fian