У меня был этот вопрос около 2 недель, когда я внезапно прекратил отправлять уведомления на производство. Я использую библиотеку django-push-уведомлений, а django admin могу отправить тестовое сообщение, но оно не отправляет сообщения через систему.APNS_CERTIFICATE - Push Notification не отправляется в производство
На моем локальном компьютере все работает безупречно. Я обнаружил команду, чтобы проверить сертификат:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-cert.pem
С этим у меня было возвращение: Тайм-аут: 7200 (сек) Verify обратный код: 20 (не удалось получить локальный сертификат выдавшей) Расширенный мастер секретном : да
Так с большим количеством исследований, я обнаружил, что мне нужно поставить путь «CA»:
openssl s_client -CApath /etc/ssl/certs/ -connect gateway.push.apple.com:2195 -cert apns-cert.pem
Кто принимает меня: Проверка кода возврата: 0 (ОК)
Однако, для использования в библиотеке, мне нужно, чтобы поставить полный путь к файлу .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: ОК. Отправка через песочницу (отладка): ОК.
Я не один! У меня такая же проблема, что происходит только в производственной среде! Таким образом, проблема может быть на стороне Apple или любой возможной амортизации в django-push-уведомлениях. – Fian
Я обнаружил, почему он прекратил работать. Мой запрос, который выбирает устройства для отправки сообщения, заканчивает разрывание ошибки «токена недействительной» для более старых устройств базы. Это вызвало отмену функции. Я решил, зациклившись и проигнорировав ошибку, отправив устройство через устройство внутри цикла. –
Спасибо за обмен. Будет проверять мой проект. – Fian