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 (как показано в контексте)?

1 ответ

Похоже, есть проблема в процессе, который вы используете для преобразования сертификатов.

Используйте fastlane, чтобы сразу генерировать push-сертификаты в нужном формате. Вот сообщение в блоге, охватывающее весь процесс

Другие вопросы по тегам