Не удается подключиться к производственному серверу Apple Push Notification - PullRequest
4 голосов
/ 23 февраля 2010

У нас не было проблем с отправкой уведомлений на подготовленные устройства с использованием сертификата разработки и gateway.sandbox.push.apple.com. Но теперь, когда наше приложение находится в магазине, кажется, что мы даже не можем подключиться к производственному серверу apn (gateway.push.apple.com) для отправки запросов, даже когда мы используем машины, которые создали сертификаты в первое место.

Мы выполнили это через PushMeBaby, и похоже, что соединение с gateway.push.apple.com отклоняется. Когда он выполняет рукопожатие (SSLHandshake (context)), результатом является код ошибки -9044 или errSSLConnectionRefused - узел отклонил соединение, прежде чем ответить.

Я достаточно знаю о ssl и шифровании, чтобы знать, что ничего не знаю, но я почти уверен, что проблема в (или начинается с) нашем производственном SSL-сертификате. Push-уведомление включено для производства на портале iPhone (у нас зеленый свет). Сертификат был установлен на машине с PushMeBaby, и я вижу сертификат и ключ подписи в моей цепочке для ключей. Когда я экспортировал push-сертификат разработки и использовал его в PushMeBaby, я смог подключиться (и отправить push-сообщения) без проблем. Но с производственным сертификатом мы никуда не денемся. Мы неоднократно отзывали и воссоздали как сертификат разработчика, так и сертификат продукта на двух разных компьютерах, поэтому, если это человеческая ошибка, мы повторяем это.

Одна вещь, которая может быть фактором, - это то, что у меня есть ключ «агент команды» на моей цепочке для ключей, но я не она. Я могу и отправил двоичные файлы в магазин приложений без каких-либо проблем.

Кроме того, мы не настроили профиль обеспечения после создания производственного сертификата. Я не уверен, является ли это фактором, но я не понимаю, как это может быть для приложения в магазине.

Я, конечно, надеюсь, что у кого-то есть идеи, потому что у меня их нет!

Ответы [ 3 ]

15 голосов
/ 23 февраля 2010

Как сказано в документации, существует 2 сертификата и 2 IP-адреса для push-уведомлений:

  • Песочница: gateway.sandbox.push.apple.com, порт 2195. (для разработки)
  • Производство: gateway.push.apple.com, порт 2195. (для выпуска)

Вы всегда используете шлюз для разработки. Попробуйте использовать другой шлюз (для производства).

Для получения дополнительной информации см. Здесь: Подготовка и разработка

4 голосов
/ 22 июля 2010

Да, я решил эту ошибку. Я потерял несколько дней, чтобы найти решение.

Проблема в строке:

result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30); 

NSLog(@"SSLSetPeerDomainName(): %d", result);

Вы должны изменить порт на номер 30. Это решает проблему.

1 голос
/ 26 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...