Push-уведомления iOS работают в dev, но не в prod - PullRequest
3 голосов
/ 08 ноября 2011

Сначала позвольте мне сказать, что я искал решение, чтобы найти решение в течение нескольких часов.Я прочитал почти каждый вопрос об этом, и ни одно из решений не сработало.Я также прочитал официальные документы Apple на эту тему и несколько других уроков.По сути, я говорю это, чтобы избежать таких очевидных предложений, как (убедитесь, что это не «песочница» и т. Д.).

У меня есть сертификаты уведомлений dev и prod push для моего приложения на портале обеспечения.Я выполнил шаги по созданию pem-файла как dev, так и prod, используя собственную документацию Apple.

У меня есть профили dev и hoc, связанные с этим приложением.

Я могу собратьМое приложение либо напрямую с xcode на устройство, используя профиль dev, либо заархивируйте его, используя специальный профиль распространения (затем я использую beta builder для установки на устройство).специальный профиль (с помощью бета-компоновщика) работают push-уведомления при использовании файла sandbox + dev pem.Но как только я тестирую с использованием файлов prod server + prod pem, push-уведомления не отправляются.

У меня есть два php-скрипта для тестирования, один для dev, другой для prod.Они по сути идентичны, за исключением URL-адреса сервера (песочница против песочницы) и файла pem, на который ссылаются (dev или prod).

Мне кажется странным, что даже со специальной сборкой я все еще могу отправить pushуведомления с использованием песочницы и dev pem, это нормально?

Есть ли что-то еще, что я должен сделать при переходе от dev к prod?Я чувствую, что перепробовал все на этом этапе.Я повторно генерировал сертификаты и профили много раз.Я следую почти той же самой процедуре генерации файлов dev и prod pem и моих сценариев php и почти идентичных (для prod и dev).

Я понятия не имею, если это проблема сервера или клиента (приложение) вопрос?Есть ли где-то настройка, о которой я могу забыть?

Я надеюсь, что кто-то может пролить свет на это, так как это начинает сводить меня с ума!

Приветствия.

Ответы [ 2 ]

11 голосов
/ 09 ноября 2011

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

Ключевым моментом, который я не знал, является то, что токен устройства отличается для dev и prod (для одного и того же устройства). Я использовал токен устройства, полученный при тестировании в dev, для тестирования в prod. В dev это работало нормально, но когда я переключился на prod, я сохранил тот же токен устройства в скрипте php (предполагая, что ошибочно токен устройства будет одинаковым для того же устройства), но фактический токен устройства, зарегистрированный в prod, был отличается.

На практике этого не происходит, поскольку токен устройства отправляется на сервер, но когда я тестировал, я использовал жестко закодированный токен устройства, поскольку не хотел подключать сервер.

Надеюсь, это спасет кого-то от разочарования.

0 голосов
/ 26 сентября 2017

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

...