私は突然本番環境で通知を送信しなくて約2週間この問題が発生しました。私はdjango-push-notificationsライブラリを使用していますが、django管理者はテストメッセージを送信できますが、システムからメッセージを送信しません。APNS_CERTIFICATE - プッシュ通知が本番環境で送信されない
ローカルコンピュータでは、すべてが問題なく動作します。タイムアウト::7200(秒)を確認し、戻り コード:20(現地発行者証明書を取得できません)拡張マスター 秘密私はリターンを持っていた、この1で
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-cert.pem
:私は、証明書をテストするためのコマンドを発見しました:はい
だから多くの研究で、私は、「CA」のパスを置くために必要なことを発見:
openssl s_client -CApath /etc/ssl/certs/ -connect gateway.push.apple.com:2195 -cert apns-cert.pem
に私を取っていた:リターン・コードを確認します。0(OK)
しかし、図書館での使用のために、私は.pemのファイルのフルパスを配置する必要がありました。私は完全に働いているように見えるものに達するまで、
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の管理者からテストテキストを送信することで覚えています:OK。サンドボックス経由での送信(デバッグ):OK。
私は一人ではありません!私は同じ問題を抱えています、それは実稼働環境でのみ起こっています!だから、問題はアップル側やdjango-push-notificationsでの減価償却の可能性があります。 – Fian
なぜそれが動作を停止したかを発見しました。メッセージを送信するデバイスを選択する私のquerysetは、ベースの古いデバイスに対して、 "token invalid"というエラーを破裂させてしまいます。これにより、機能がキャンセルされました。私は、ループ内でデバイスごとにデバイスを送信することで、ループしてエラーを無視することで解決しました。 –
共有いただきありがとうございます。私のプロジェクトをチェックします。 – Fian