Подтвердить что ты не робот

Уведомление о выпуске apple не работает в производстве

Мы полностью застряли, пожалуйста, помогите.

Я и моя команда создали приложение для iPhone, и это первый раз, когда мы пытаемся использовать iOS.

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

Вот что мы сделали:

  • Мы создаем приложение, предположим, что оно называется "AppMaster".

  • Мы создали AppId в iOS Provisioning Portal под названием: "pushtest". Этот идентификатор активировал Push Notification как для разработки, так и для производства.

  • Мы создали Provisioning для разработки под названием "AppMasterPushTest" из приложения, описанного выше. Это обеспечение для внутреннего теста, каждый из команды установил его на свой Mac.

  • Наш сервер реализован Java, и мы использовали пакет java-apn. во время теста, мы загрузили файл сертификации для разработки и выписали файл .p12, и нажали наше сообщение на сервер "песочницы", используя пакет api - withSandboxDestination() с этим файлом .p12. тест идет хорошо, уведомления принимаются.

  • Я думал, что мы готовы, поэтому мы создали еще один AppId под названием "AppMaster" и включили Push Notification только для производства. Этот идентификатор написан в идентификаторе пакета приложений.

  • На шаге 5 мы сделали еще одно Provisioning для производства под названием appMaster из AppId, с методом распространения, установленным как "Магазин приложений". загрузить его и перестроить приложение. Этот был подан в яблоко, и он ожил в приложении.

  • Серверная сторона. Мы загрузили сертификацию для производства и снова записали файл .p12. и сделал программу, чтобы вывести сообщение на рабочий сервер, используя api - withProductionDestination(), только что выписанный .p12.

  • Мы установили приложение из App Store. к сожалению, уведомление никогда не доставлялось.

Есть ли что-то, что мы пропустили? BTW, идентификатор, который мы создали на шаге 5, выглядел как "XXX.com.company.appname", но в идентификаторе пакета приложения мы просто установили часть "com.company.appname" без префикса. это может быть проблемой?

любая идея приветствуется.

пожалуйста, будьте нашим хранителем. спасибо.

4b9b3361

Ответ 1

Комментарий выше неверен. Идентификатор приложения имеет префикс перед идентификатором пакета:

Идентификатор приложения состоит из идентификатора пакета приложений с префиксом десятизначный код, созданный Apple. Администратор команды должен войти в идентификатор пакета. Для сертификата он должен содержать конкретный пакет Я БЫ; вы не можете использовать идентификатор приложения "подстановочные знаки".

Вы должны проверить свой профиль обеспечения, чтобы убедиться, что он содержит правильное право доступа aps:

Убедитесь, что права доступа в файле профиля обеспечения верный. Для этого откройте файл .mobileprovision в текстовом редакторе. Содержимое файла структурировано в XML. В правах словарь найдите ключ aps-environment. Для разработки профиль инициализации, строковое значение этого ключа должно быть развитие; для профиля распределения распределения, строковое значение должно быть production.

Вы должны убедиться, что используете токены производственных устройств при отправке push-уведомлений на сервер APNS-производства (токены устройств, которые работают в среде песочницы, не работают в производственном env).

Вам нужно было протестировать ваше приложение с профилем подготовки AdHoc до его выпуска в хранилище приложений. Профиль AdHoc работает с рабочей средой push.

ИЗМЕНИТЬ:

Некоторые цитаты, касающиеся токенов устройства:

В Руководство по программированию локального и Push Notification:

Обратите внимание, что токен устройства в рабочей среде и токен устройства в среде разработки (песочница) - это не то же самое значение.

От Техническая нота TN2265:

Обработка неверных уведомлений

Простой двоичный интерфейс отключает соединение, если служба push получает уведомление, которое является некорректным. Ваш провайдер может видеть это как ошибку EPIPE или сломанной трубы в ответ на отправку уведомление. С другой стороны, расширенный двоичный интерфейс будет отправьте ответ об ошибке с более подробной информацией о том, что было неправильно с уведомлением перед удалением соединения. Быть уверенным ваш поставщик поймает и правильно справится с этими условиями.

Наиболее распространенной проблемой является недопустимый токен устройства. Если появился токен из среды песочницы, например, когда вы тестируете выстроить здание в доме, вы не можете отправить его на производство оказание услуг. Каждая среда push создает другой токен для то же устройство или компьютер. Если вы отправляете токен устройства неправильно среда, служба push увидит, что в качестве недопустимого токена и отмените уведомление.

Наконец, в этой статье есть хорошее объяснение того, как отправлять несколько уведомлений Apple, когда некоторые из уведомлений являются недействительными (наиболее распространенная причина недействительные токены устройства), может привести к тому, что некоторые из действительных уведомлений не поступят также.