iphone SDK определяет сеть Wi-Fi и операторскую сеть - PullRequest
11 голосов
/ 26 октября 2009

мое приложение имеет доступ к Интернету, и я просто хочу определить, есть ли соединение через Wi-Fi или через сеть передачи данных оператора или нет

яблоко подало пример для этой «достижимости»

https://developer.apple.com/iphone/library/samplecode/Reachability/

я думаю, что он просто определяет Wi-Fi, а не сеть оператора

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

Ценю вашу помощь!

Ответы [ 5 ]

13 голосов
/ 26 октября 2009

Этот образец именно то, что вам нужно.

Посмотрите на Reachability.m. он сообщит вам, есть ли у вас какое-либо соединение, а затем скажет, какое у вас соединение.

9 голосов
/ 26 октября 2009

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

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

3 голосов
/ 10 января 2010

Как только вы делаете запрос к любому веб-ресурсу, iPhone использует любое обнаруженное соединение, использует Wi-Fi (в качестве более высокого приоритета), а если Wi-Fi не подключен, он использует сеть оператора. Там нет настроек кода, которые мешают сети оператора.

Все, что вам нужно сделать:

  • Проверьте сигнал на месте тестирования.
  • Проверьте ссылку, которую вы пытаетесь открыть в сафари, чтобы убедиться, что проблема не в вашем приложении.
  • Обратитесь в службу поддержки вашего оператора, если в Safari не работает ссылка (обязательно используйте сеть оператора)
2 голосов
/ 09 февраля 2011

Эти методы полезны, но имейте в виду, что путь устройства к Интернету может состоять из нескольких различных типов соединений. Например, iPhone или iPod touch могут использовать WiFi для подключения к мобильной точке доступа, которая, в свою очередь, имеет собственное беспроводное соединение 3G. Поэтому небезопасно предполагать, что наличие WiFi-соединения подразумевает более высокую пропускную способность, чем 3G.

0 голосов
/ 19 мая 2015

Доступность (и пример кода Apple, и аналогичный код других людей, и базовая SCNetworkReachability сообщат вам, что нет доступа в Интернет, или что вы получите доступ в Интернет через WiFi, или что вы получите доступ в Интернет через мобильный телефон данные.

Если у вас есть данные как по WiFi, так и по мобильному телефону, он сообщит вам «WiFi». Нет никакого способа узнать, что мобильные данные доступны, когда у вас есть WiFi. (Вы можете легко узнать, что мобильные данные доступны, когда нет WiFi). Вы не можете узнать, включен ли режим полета (который будет отличаться от WiFi и мобильных данных отключен).

Доступный WiFi не гарантирует, что для загрузки будет использоваться WiFi, а не мобильные данные. Вы можете начать загрузку дома, уйти через минуту, WiFi исчезнет, ​​и iOS с радостью продолжит загрузку через 3G. Вы можете установить флаг в вызове загрузки, чтобы запретить 3G. Код ошибки будет -1009 = Нет доступа в интернет, не говоря уже о том, что 3G был бы доступен.

Используя CTTelephonyNetworkInfo, вы можете узнать, что вы находитесь на устройстве, которое может иметь мобильные данные (не iPod Touch или iPad без мобильных данных, и в устройстве есть SIM-карта).

...