Включение соединения iPhone 3G - PullRequest
2 голосов
/ 29 апреля 2009

Мое приложение требует подключения к Интернету. Похоже, что если я некоторое время оставляю свой iPhone бездействующим, он отключает соединение 3G. Как только я его разбудил (сдвиньте, чтобы разблокировать) и запустил мое приложение, оно не может подключиться к Интернету. Сначала я должен запустить Youtube или Safari, затем он получает подключение к Интернету, затем я должен закрыть Youtube / Safari, а затем я могу использовать свое приложение для входа в свой сервис.

Не могли бы вы сообщить мне, как я могу активировать соединение 3G из своего приложения (чтобы я мог использовать свое приложение сразу после его выхода из состояния ожидания, и мне не нужно запускать другие приложения, такие как Youtube / Safari? *) 1003 *

Спасибо.

Ответы [ 5 ]

2 голосов
/ 29 апреля 2009

Чтобы отключить таймер простоя, посмотрите на свойство idleTimerDisabled класса UIApplication.

от Apple:

Значение этого свойства по умолчанию: NO. Когда большинство приложений не имеют касается как пользовательский ввод для короткого период, система ставит устройство в состояние «сна», где экран тускнеет. Это сделано для целей сохраняющая сила. Тем не мение, приложения, которые не имеют пользователя вход за исключением акселерометр - игры, например - может, установив для этого свойства значение YES, отключить таймер простоя, чтобы предотвратить системный сон.

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

2 голосов
/ 29 апреля 2009

Очевидно, есть другое лучшее решение, но вы можете загрузить пустую страницу с помощью:

[NSString stringWithContentsOfUrl ... ]

Соединение будет установлено, если это необходимо.

1 голос
/ 29 апреля 2009

Только NSURLConnection (и любые API-интерфейсы, расположенные поверх него) повторно инициализируют соединение данных после выхода из спящего режима. Для повторной инициализации подключения к данным создайте фиктивный NSURLConnection по нелокальному адресу и сразу же отмените его; тогда API socket будет работать как положено.

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

0 голосов
/ 31 марта 2010

На самом деле, вы получаете ту же проблему, когда вы меняете настройки сети на вашем телефоне между запусками приложения. Например, предположим, что вы используете соединение WIFI при запуске приложения. Затем вы закрываете приложение и выключаете WIFI, чтобы устройство использовало сеть оператора. Когда вы перезапустите приложение, сокет не сможет подключиться, если вы не сделаете трюк с фиктивной NSURLConnection (или не запустите браузер перед запуском приложения).

Кроме того, отмена NSURLConnection сразу после его инициализации (с помощью connectionWithRequest или initWithRequest) не работала для меня. Либо не отменяйте запрос, либо подождите некоторое время, прежде чем его отменить (например, с executeSelector: withObject: afterDelay:).

0 голосов
/ 29 апреля 2009

Вы уверены, что устанавливаете соединение правильно? Мое приложение делает то же самое, используя сокеты, и у него нет проблем с восстановлением соединения после сна устройства. Используйте Reachability API в среде SystemConfiguration, чтобы получать уведомления о доступности покрытия и после этого предпринимать попытку подключения. Обратите внимание, что промежуток времени - от нескольких секунд до пары минут - должен пройти после того, как устройство проснется, чтобы получить подключение к Интернету, поэтому будьте терпеливы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...