Push-уведомление Django - Не удается прочитать файл сертификата ANPS
Я пытаюсь реализовать push-уведомление в своем приложении для iOS, которое использует серверную часть Django. Я объясню некоторый контекст раньше, на случай, если в нем будет раскрыта информация. Если вы хотите перейти к проблеме напрямую, перейдите в раздел "Проблема ".
контекст
Следуя этому руководству, я смог убедиться, что мои сертификаты и профили обеспечения настроены правильно, поскольку мое устройство фактически получает push-уведомления, отправленные APN Tester Free.
Конечно, чтобы иметь какой-либо смысл, мой бэкэнд Django должен будет отправлять уведомления. Для этого я установил django-push-уведомления. В моем файле настроек django я установил пути к сертификату APNS. Этот файл должен быть файлом.pem, а не обычным файлом.cer, который экспортирует портал разработчиков Apple.
Чтобы преобразовать файл.cer, можно щелкнуть правой кнопкой мыши Сертификат push-уведомлений в Access Keychain и экспортировать файл.p12. Чтобы преобразовать файл.p12 в требуемый.pem, необходимо использовать терминал и выполнить следующую команду:
openssl pkcs12 -in [export p12 file].p12 -out [final pem file].pem -nodes -clcerts
Чтобы убедиться, что мой.pem файл действительно работает, я использовал следующую команду
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert [final pem file].pem -key [final pem file].pem
Кажется, я получаю успешный ответ (CONNECTED(00000003)...
)
Эта проблема
После установки django-push-уведомлений, хотя я могу создать APNSDevice
случаи, я не могу отправлять сообщения. Это ошибка, которую я получаю:
File "/Users/joao/Code/code-vitae.com/env/lib/python3.4/site-packages/push_notifications/models.py", line 93, in send_message
return apns_send_message(registration_id=self.registration_id, alert=message, **kwargs)
File "/Users/joao/Code/code-vitae.com/env/lib/python3.4/site-packages/push_notifications/apns.py", line 209, in apns_send_message
_apns_send(registration_id, alert, **kwargs)
File "/Users/joao/Code/code-vitae.com/env/lib/python3.4/site-packages/push_notifications/apns.py", line 153, in _apns_send
with closing(_apns_create_socket_to_push()) as socket:
File "/Users/joao/Code/code-vitae.com/env/lib/python3.4/site-packages/push_notifications/apns.py", line 58, in _apns_create_socket_to_push
return _apns_create_socket((SETTINGS["APNS_HOST"], SETTINGS["APNS_PORT"]))
File "/Users/joao/Code/code-vitae.com/env/lib/python3.4/site-packages/push_notifications/apns.py", line 46, in _apns_create_socket
raise ImproperlyConfigured("The APNS certificate file at %r is not readable: %s" % (certfile, e))
django.core.exceptions.ImproperlyConfigured: The APNS certificate file at '/Users/joao/Documents/Circli/Certificates/Pro_Key.pem' is not readable: 'utf-8' codec can't decode byte 0xe3 in position 4783: invalid continuation byte
Эта ошибка заставляет меня подозревать, что я как-то допустил ошибку при создании файла pem. Но как это так, если я могу без проблем подключиться к push-серверам Apple (как показано в контексте)?