iphone ios 3.0.1, устройство не может получить токен устройства и не сообщает об ошибке?

#iphone #push-notification #ios3.0

#iPhone #push-уведомление #ios3.0

Вопрос:

хорошо, у меня iphone с ios 3.0.1, у меня включен Wi-Fi, сотовой сети нет.

Я правильно создал свой профиль подготовки, мой сертификат. почему?… в любом случае, я расскажу вам через некоторое время, когда я запускаю приложение, я помещаю NSLog в

 - (void)application:(UIApplication *)app  didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err 
  

но когда я запускаю приложение, я ничего не получаю, ни успеха, ни ошибки.

в любом случае, я попробовал то же приложение и запустил его на iphone с ios 4.0, и это сработало, и оно напечатало токен устройства. О, и они оба используют одну и ту же сеть WiFi.

может ли это быть устройством? ios? или безопасность подключения Wi-Fi? и в этом случае не следует хотя бы выдавать мне сообщение об ошибке?

может ли это быть вызвано отсутствием файла библиотеки

 warning: Unable to read symbols for "/Library/MobileSubstrate/MobileSubstrate.dylib" (file not found).
  

Спасибо

Ответ №1:

Согласно документации Apple :

Нет обратных вызовов делегата

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

Если не вызывается ни обратный вызов делегата, application:didRegisterForRemoteNotificationsWithDeviceToken: ни application:didFailToRegisterForRemoteNotificationsWithError: , это означает, что это соединение еще не установлено.

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

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

Push-уведомления используют сеть передачи данных сотовой связи, когда это возможно, даже если устройство в данный момент использует Wi-Fi для других сетевых действий, таких как просмотр веб-страниц или электронная почта. Однако служба push-уведомления вернется к Wi-Fi, если служба передачи данных сотовой связи недоступна.

Если ваше устройство способно использовать сеть сотовой передачи данных, убедитесь, что у него активный тарифный план сотовой передачи данных. Отключите Wi-Fi в настройках и посмотрите, можете ли вы по-прежнему просматривать веб-страницы, например, с помощью Safari. С другой стороны, если служба push использует Wi-Fi, любые брандмауэры между вашим устройством и Интернетом должны разрешать TCP-трафик на порт 5223 и из него.

ПРИМЕЧАНИЕ: Для каждой среды существует отдельное постоянное подключение к push-сервису. iOS устанавливает постоянное соединение со средой изолированной среды для сборок разработки; специальные сборки и сборки распространения подключаются к производственной среде.

Что касается второй части вашего вопроса, MobileSubstrate это не виновник, это обычное сообщение журнала … с взломанного iPhone 🙂

Комментарии:

1. большое спасибо, я не смог найти такую вещь в их документации. Я разберусь с этим и посмотрю, может быть, это причина моей сетевой безопасности. Я не думаю, что это из-за подключения устройства, потому что я могу выйти в Интернет. может быть проблема с портом. В любом случае, большое спасибо… И я прошу прощения, но это не iPhone с джейлбрейком: D. В любом случае, это то, что мне сказали в компании; это не мое, и мне действительно все равно: P. Основная проблема — это совместимость

2. developer.apple.com/search / … > 2-я справочная ссылка 🙂