Подтвердить что ты не робот

Обнаружение интернет-соединения iPhone SDK

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Apple Developer Connection имеет пример приложения (Reachability), который использует структуру System Configuration для определения состояния сети. Он расскажет вам, есть ли у вас Wi-Fi, EDGE/3G или нет подключения к Интернету.

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

Ответ 3

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

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

(я запускаю iOS4.2.1 на iPhone 4, XCode 3.2.5 64 бит).