Я пытаюсь получить мой сервер для доставки push-уведомлений с помощью службы Push Notification от Apple. (APNs)Push-уведомление поставляет из локального env, но не с сервера
Моя установка выглядит следующим образом:
- Кордова HTML/JS приложения
- API в Rails на VPS через HTTPS
- Houston находкой для Push Notifications
Я ve создал сертификат для разработки на моем mac. Когда я запускаю свой сервер локально, он успешно отправляет уведомление на мой iPhone.
Теперь я пытаюсь заставить его работать на моем сервере, но без везения. Я создал локальную сеть CSR, загрузил ее в редактор приложений Apple iOS App ID и загрузил CER. Затем я экспортировал CER к p12 с Keychain Access и конвертируюсь, что в PEM файл со следующей командой:
openssl pkcs12 -in apn_production.p12 -out apn_production.pem -nodes -clcerts
Хьюстона нуждается этот PEM файла отправить уведомления нажимных, я сделал то же самое для развития, и она работала , но он должен отправить с сервера сейчас, что может быть проблемой, но я не получаю никаких ошибок. Уведомления просто не приходят, что может быть ошибкой производства/развития, которую я делаю.
Я также попытался создать файл CSR на своем сервере и загрузить его через редактор идентификаторов приложений iOS, но когда я загружаю CER и открываю его в Keychain Access, я не могу экспортировать его на P12, только в CER , PEM и P7B. Также в этом файле нет закрытого ключа, который есть в моем локально созданном сертификате разработки. Также, когда я экспортирую его в PEM и использую его с Хьюстоном на моем сервере, он выдает сообщение об ошибке, что сертификат недействителен.
Еще одна вещь, которую я пробовал, - это загрузить CSR, созданную моим VPS на портале Apple Push Certificates Portal. Это вызывает ошибку, указывающую, что сертификат недействителен.
Там есть пара вещей, которые я не уверен:
1. Am I в разработке или рабочем режиме?
Приложение еще не находится в магазине приложений, но в режиме бета-тестирования загружается через TestFlight, а push-уведомление необходимо отправлять с моего сервера. Является ли это производственной средой или разработкой или мне нужно определить это вручную где-нибудь, прежде чем создавать приложение?
2. Возможно ли использовать локально созданный CSR для PEM, который будет использоваться на моем сервере?
Я прав, что мне нужен сервер, созданный CSR, для начала, когда мне, наконец, понадобится PEM для отправки push-уведомлений с моего сервера?
3. Что делать теперь, как мне отлаживать?
PEM, сгенерированный из моего локально созданного CSR, теперь загружается на мой сервер, и Хьюстон не бросает ошибок вообще. Однако push-уведомления не поступают, поэтому, что мне делать, могу ли я отслеживать эти push-уведомления где-нибудь? Есть ли какой-то файл журнала APN, который я могу прочитать?
Musad Спасибо за четкий ответ, я думаю, это порт, позвольте мне проверить! –
Если это проблема с портом, вы можете использовать сторонний api как синтаксический анализ. Проверьте https://parse.com/tutorials/ios-push-notifications –
Я открыл порт 2195, но он, похоже, не работал. Я предпочел бы использовать стандартный APN вместо стороннего решения. Сегодня я переделаю все это, посмотрю, решает ли это что-нибудь. Одна вещь, которая будет сложной, заключается в том, что TestFlight и Xcode экспортируют в одно и то же приложение, и оба используют мой VPS как API. Я развиваюсь в Chrome на моем Mac (HTML/JS), и это использует мой локальный API, поэтому мне не нужно создавать при разработке. Трудность в этом заключается в том, что мой сервер не знает, находится ли устройство в среде разработки или разработки. –