iphone SDK обнаруживает Wi-Fi и сеть оператора мобильной связи

StackOverflow https://stackoverflow.com/questions/1625158

Вопрос

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

apple создала пример такой "Достижимости"

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

я думаю, что он просто обнаруживает Wi-Fi, а не сеть оператора

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top