2015-02-01 2 views
1

Я пытаюсь получить мой сервер для доставки 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, который я могу прочитать?

ответ

0

1) Вам необходимо использовать сертификаты производства для отправки push-уведомлений с помощью тестового полета.

2) Вам не нужен сервер CSR. Для отправки push-уведомления требуется только «.pem».

3) Вам нужно удалить sanbox (режим песочницы) из URL-адреса push-сообщения в сценарии отправки push. Также проверьте, открыт ли порт 2195 вашего сервера для связи или нет, потому что APNS связывается через этот порт.

+0

Musad Спасибо за четкий ответ, я думаю, это порт, позвольте мне проверить! –

+0

Если это проблема с портом, вы можете использовать сторонний api как синтаксический анализ. Проверьте https://parse.com/tutorials/ios-push-notifications –

+0

Я открыл порт 2195, но он, похоже, не работал. Я предпочел бы использовать стандартный APN вместо стороннего решения. Сегодня я переделаю все это, посмотрю, решает ли это что-нибудь. Одна вещь, которая будет сложной, заключается в том, что TestFlight и Xcode экспортируют в одно и то же приложение, и оба используют мой VPS как API. Я развиваюсь в Chrome на моем Mac (HTML/JS), и это использует мой локальный API, поэтому мне не нужно создавать при разработке. Трудность в этом заключается в том, что мой сервер не знает, находится ли устройство в среде разработки или разработки. –

Смежные вопросы