обнаружение интернет-соединения iPhone SDK - PullRequest
39 голосов
/ 27 февраля 2009

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

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

Любые идеи будут оценены.

Ответы [ 3 ]

48 голосов
/ 28 февраля 2009

Если ваше приложение должно иметь доступ к сети, проще всего добавить следующие параметры в ваш info.plist в качестве логических значений.

  • SBUsesNetwork - Убедитесь, что устройство имеет активное соединение (Редактировать: не применимо, похоже, это частный API, который кто-то нашел в какой-то момент. Его нет в документации разработчика Apple.)
  • UIRequiresPersistentWiFi - гарантирует, что устройство подключено через WiFi

Если ваш выбор неверен, пользователю будет предложено соответствующее сообщение при запуске приложения. Лучше всего это сообщение от ОС и, следовательно, локализовано.

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

28 голосов
/ 28 февраля 2009

Apple Developer Connection имеет пример приложения ( Reachability ), которое использует платформу конфигурации системы для определения состояния сети. Он скажет вам, есть ли у вас WiFi, EDGE / 3G или нет подключения к Интернету.

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

4 голосов
/ 21 февраля 2011

Предупреждающее слово: остерегайтесь SBUsesNetwork. Мне бы очень хотелось узнать, откуда взялась SBUsesNetwork, потому что в документах Apple нигде не упоминается. Когда я добавляю ключ в plist моего приложения (в виде логического значения) и устанавливаю значение true, это, похоже, не влияет на поведение моего приложения - я не получаю предупреждения о режиме «В самолете», будь то запуск приложения полностью заново или выделение предыдущий запуск, который был сделан на заднем плане.

В моем приложении для UIRequiresPersistentWifi установлено значение true, что, по-видимому, также делает работу, которую, как утверждают люди, выполняет SBUsesNetwork (плюс другие вещи!).

(я использую iOS4.2.1 на iPhone 4, 64-битный XCode 3.2.5).

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