Intereting Posts
Как узнать, когда UITableViewCell выполняется с его пропуском AutoLayout Как правильно связать пользовательские элементы UITableViewCell и доступа BOOL против bool на iOS7 Резервное копирование и восстановление файлов AVAssetWriter Почему этот код iOS постоянно отображает все UIBarButtonItems? Закрытие Facebook Facebook iOS SDK Войти с UIWebView вместо сафари (Родной трюк / решение) Как настроить параметры разработчика_certificate_path и developer_certificate_password с помощью Forge Ошибка компилятора Swift 3: «байты» недоступны: вместо этого используйте withUnsafeBytes Количество выполняемых операций поиска регулярных выражений достигло своего предела. (Код: 154, Версия: 1.2.20) parse json из почтового запроса ios afnetworking Заголовок UIButton в .xib Переопределение изменения названия программы Основные данные продолжают создавать сохраненные документы … папки Получить текущую отметку времени AudioQueueRef при поиске Удаление файлов cookie на iOS Simulator для автоматизации тестирования пользовательского интерфейса

Оповещения о толковании продукции перестают работать после того, как они ранее работали

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

Одно из моих приложений, которое у меня есть в магазине, использует push-уведомления. Версия 1 приложения работала нормально. Нет проблем.

Я создал версию 1.1, протестировал ее на песочнице APNS (работал отлично) и отправил ее. Когда-то после одобрения 1.1 я заметил, что push-уведомления не работали. Мое устройство не получало никаких push-уведомлений и не было другого пользователя. Это, естественно, заставило меня поверить, что я придумал что-то с сертификатами или что-то в этом роде, когда я создал v 1.1. Я проверил все нормальные вещи – песочницу против производства, сертификаты, профили подготовки и т. Д. Никаких кубиков.

– Настройка сервера

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

(этот следующий бит является ключом к проблеме)

В записи пользователя в моей БД я отслеживаю, если пользователь установил версию приложения или производственную версию приложения. Я сохраняю это как флаг в записи пользователя. Я делаю это для удобства использования.

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

Все это прекрасно работает. Я сохраню вам все шаги по повторной аттестации и другое горе, которое я сделал.

Насколько я мог сказать, все работает нормально, и все настроено правильно. Поэтому я последовал совету мисс Рэнд: «Противоречия не существуют. Всякий раз, когда вы думаете, что сталкиваетесь с противоречием, проверьте свои помещения. Вы обнаружите, что один из них ошибается.

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

  1. Я превратил разработчика (iPhone моей жены) в производственного пользователя, так как я думал, что она загрузила производственный выпуск приложения
  2. Для этого пользователя мой сервер использовал идентификатор устройства, сгенерированный из приложения для разработки, и отправил его на сервер APNS
  3. Всякий раз, когда я отправлял этот идентификатор устройства на рабочий сервер в качестве одного из сообщений APNS, даже если бы я получил положительный ответ от серверов, ни одно из сообщений APNS для каких-либо других устройств не будет работать.

Как только я перевернул ее пользовательскую запись, чтобы стать устройством разработки, все снова начало работать.

Я несколько раз проверял, что это проблема.

Таким образом, похоже, что использование идентификатора deviceID, предназначенного для взаимодействия APNS с песочницей и отправки его в APNS, действительно подталкивает.

Надеюсь, это поможет кому-то в будущем.