Ограничить приложение iPhone до Wi-Fi

Можно ли ограничить работу приложения iPhone только при наличии соединения Wi-Fi (не 3G)?


person hpique    schedule 09.06.2010    source источник


Ответы (3)


Да. Есть два шага:

Во-первых, вам нужно добавить UIRequiresPersistentWiFi для ваших приложений Info.plist. Это гарантирует, что соединение WiFi не перейдет в спящий режим, пока ваше приложение открыто.

Во-вторых, вам нужно запросить систему (используя SCNetworkReachability API), чтобы увидеть, какое радио в данный момент включено. См. этот вопрос в документации iPhone.

person Stephen Darlington    schedule 09.06.2010
comment
-1. Это не ограничивает работу приложения только по Wi-Fi. Этот ключ позволяет вашему приложению информировать систему о том, что оно предпочитает Wi-Fi, и поддерживать его в рабочем состоянии, когда приложение неактивно (экран заблокирован, выполняется вызов и т. д.). Я использую этот ключ в своем приложении, но также разрешаю доступ к сети 3G. - person Jasarien; 09.06.2010
comment
@Jasarien Да, вы правы, это не дает прямого ответа на вопрос. (Хотя обычно говорят, что вы предпочитаете Wi-Fi, а не 3G.) Я обновил свой ответ. - person Stephen Darlington; 09.06.2010
comment
Не совсем ответ на вопрос, но, тем не менее, лучший ответ на данный момент. - person hpique; 13.06.2010

Вы также можете получить класс Reachability из примера Reachability из Apple dev center. Он предлагает способ проверить, как подключен iphone.

person dusker    schedule 09.06.2010
comment
Я бы рекомендовал этот подход. Вы можете указать, когда устройство подключено к Wi-Fi или нет, и ограничить части приложения, которым требуется WiFi. Требуемый постоянный ключ Wi-Fi не будет полностью ограничивать доступ только к Wi-Fi. - person Jasarien; 09.06.2010

инструкции по работе в сети и Интернете

Если вашему приложению требуется WiFi, вам нужно добавить ключ UIRequiresPersistentWiFi в Info.plist и установить для него значение True. Этот ключ уведомляет систему о том, что ваше приложение использует сеть WiFi для связи.

person Vladimir    schedule 09.06.2010