Как заставить приложение iOS использовать 3G вместо WiFi?

Я хочу использовать протокол обмена сообщениями, который отлично работает через 3G, но не через некоторые корпоративные брандмауэры. Как мое приложение может принудительно использовать сотовую сеть, если оно не может подключиться через WiFi, даже если сеть WiFi доступна?

РЕДАКТИРОВАТЬ: После прочтения реализации класса Reachability я не уверен, действительно ли они оба являются взаимоисключающими. Вполне может быть возможно обнаружить оба интерфейса черезgethostbyname()что я мог бы попытаться просто посмотреть, что выходит.

 Marcelo Cantos22 авг. 2013 г., 01:27
@entropy: боюсь, что нет. Я отвлекся на другие проекты, прежде чем получил возможность глубже исследовать.
 onmyway13321 авг. 2013 г., 11:53
ты нашел ответ?

Ответы на вопрос(3)

fa_name, которое начинается с «pdp». Это будет сотовый интерфейс (например, pdp_ip0). Проверьте (ifa_flags & IFF_UP), чтобы убедиться, что интерфейс работает, и получите IP-адрес из ifa_addr. Затем используйте bind () для привязки вашего сокета к этому адресу.

Не уверен, как вы активируете сотовый интерфейс, если он еще не включен. Обычно я просто выполняю http-вызов высокого уровня, чтобы заставить iOS пробудить сеть, но не уверен, при каких условиях услуга сотовой связи становится активной, когда также доступен Wi-Fi. Я подозреваю, что это обычно там, как запасной вариант к Wi-Fi.

 Shiva Reddy03 апр. 2015 г., 08:36
Хорошая информация Спасибо!

чтобы заставить использовать сотовую связь. Найдите сотовый интерфейс из getifaddrs, передайте интерфейс функции сокета, привязка сокета произойдет с сотовой связью. напримерCocoaAsyncSocket

http://iphonedevsdk.com/discussion/comment/120957

Судя по внешнему виду этой темы, кажется невозможным. Лучше всего попытаться использовать протокол и сказать что-то вроде «пожалуйста, отключитесь от Wi-Fi и повторите попытку», если он не работает.

Эта тема говорит примерно об одном и том же:

как программно запустить 3g соединение на iphone?

Вы можете использоватьдостижимость класс, который написал apple, чтобы проверить, является ли сетевое соединение в настоящее время через 3G или WiFi, и даже проверить, доступен ли определенный ресурс в сети.

 Marcelo Cantos17 окт. 2012 г., 03:57
Спасибо за ссылки. Я сталкивался с несколькими такими сообщениями, но я надеялся на что-то более определенное. Смотрите мой исправленный вопрос для моих мыслей о классе Reachability.

Ваш ответ на вопрос