it-swarm.com.ru

Push-уведомления iOS работают для Dev, но не для Enterprise Distribution

Я прочитал много постов здесь и просматривал документы Apple весь день. Ни один из постов здесь не имеет ответов, и документы не ясны по этому вопросу.

У нас есть приложение, которое получает Push-уведомления при использовании профиля Dev, но не при использовании нашего профиля распределения Enterprise.

Идентификатор приложения включен для Push-уведомлений в песочнице.

Сертификат и оба профиля связаны с идентификатором приложения.

Если я создаю форму, Xcode Push-уведомления приходят нормально. Если я архивирую и распространяю, сервер возвращает:

[Failed to Push 6dje7djksis7hyhdjshsjksjd74jdjskshdjd8dhjjdkwu for reason 8]

Это неверный токен.

Одна вещь, которую я заметил, состояла в том, что наш профиль обеспечения dev имеет следующее для aps-environment:

<key>aps-environment</key>
<string>development</string>

В то время как профиль распределения Enterprise имеет:

<key>aps-environment</key>
<string>production</string>

Когда я запускаю отладочную сборку на моем телефоне (Push работает), права на файл .app:

<key>aps-environment</key>
<string>development</string>

Когда я архивирую, они всегда (независимо от того, какой профиль обеспечения я использую или схему):

<key>aps-environment</key>
<string>production</string>

Кто-нибудь может сказать мне, если это ожидается? Ни один из других вопросов на этом сайте, которые мне удалось найти, на самом деле не дал причины, по которой Dev работал бы, а Enterprise Distribution - нет.

Почему архивирование всегда приводит к созданию aps-среды?

Спасибо за ваше время.

Обновление Это интересно.

От:

http://developer.Apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ProvisioningDevelopment/ProvisioningDevelopment.html

"Необходимо получить отдельные сертификаты для среды" песочницы "(разработки) и производственной среды. Сертификаты связаны с идентификатором приложения, являющегося получателем push-уведомлений; этот идентификатор включает в себя идентификатор пакета приложения. При создании профиля обеспечения для одной из сред необходимые права автоматически добавляются в профиль, включая права, относящиеся к push-уведомлениям. Два профиля обеспечения называются "Разработка" и "Распространение". Профиль обеспечения распространения является требование о подаче заявки в App Store. "

Это может означать, что вы не используете профиль распространения, если не собираетесь работать. Это правда? Это кажется странным, поскольку вы можете создать профиль корпоративного распространения, прежде чем идти в магазин приложений.

У кого-нибудь есть идеи по этому поводу? Я не могу найти какую-либо конкретную информацию в документах об этом.

Спасибо

12
addzo

Для вашего приложения есть 2 Push-сертификата. 1 для разработки и 1 для производства. Посмотрите в разделе Push-сертификата портала обеспечения.

Поэтому любой механизм Push, который вы используете для отправки push-сообщений, должен быть настроен с правильным сертификатом. В вашем случае корпоративная версия получит толчки с использованием сертификата производства/распространения.

11
Dancreek
  1. Используйте производственные сертификаты.
  2. Используйте производственный APN Host: gateway.Push.Apple.com вместо разработки APN: gateway.sandbox.Push. Apple.com
  3. Используйте производственный APN Feedback Host: feedback.Push.Apple.com .

Для дополнительной проверки здесь

2
Blerd

Как в версии для разработки, так и в рабочей версии AppID необходимо включить Push-уведомления на веб-сайте Apple "Профиль обеспечения".

2
GoZoner