Интервал проверки Wi-Fi iOS

Я пишу приложение, которое подключается через Wi-Fi к проприетарному устройству. Фирменное устройство действует как точка доступа Wi-Fi.

Когда устройство отключается, соединение Wi-Fi разрывается, как я и ожидал.

IPhone продолжает отправлять пробные запросы в поисках сетей для подключения. Он следует экспоненциальному алгоритму отсрочки отправки зондов.

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

Я использую код Reachability, и он работает так, как я ожидал.

Похоже, что нажатие кнопки домой сбросит отсрочку и немедленно отправит пробный запрос. Кто-нибудь знает, как заставить мое приложение делать что-то подобное?

Спасибо за любую помощь.


person Idev    schedule 05.06.2012    source источник
comment
Хороший первый вопрос. Подведем итог: вы ищете способ для приложения, чтобы сообщить iOS, если вы не подключены к Wi-Fi, посмотрите сейчас !.   -  person Michael Dautermann    schedule 05.06.2012
comment
Вы пытались установить сетевое соединение?   -  person Antzi    schedule 06.05.2013
comment
А что насчет Bonjour? можно ли это реализовать на фирменном устройстве?   -  person Andrea    schedule 30.05.2013
comment
Вы уже установили для UIRequiresPersistenWiFi значение ДА в своем Info.plist?   -  person Jonathan Arbogast    schedule 10.10.2013
comment
Вы нашли конкретный ответ на проблему?   -  person alandalusi    schedule 08.03.2014
comment
@Andrea Мне нравится идея. На самом деле даже не обязательно реализовывать весь протокол Bonjour на устройстве, только ответчик mDNS   -  person Lukas1    schedule 19.08.2014


Ответы (5)


Вместо того, чтобы каждый раз проверять связь с Интернетом с помощью Reachability, проверяйте связь с хостом в локальной сети, например с DNS-сервером или маршрутизатором (192.168.1.1).

person RedOrion    schedule 11.08.2014

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

Если у вас нет серверной части в вашей локальной сети, проще всего будет выполнить команду ping. Вы можете проверить следующий пример кода на сайте разработчиков Apple: http://developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html

person atxe    schedule 23.06.2013

Я подозреваю, что если вы перенастроите соединение (переустановите конфигурацию WiFi) в своем приложении, iPhone перезапустит сканирование без отката. Таким образом, ваше приложение может отслеживать, сколько времени прошло с тех пор, как соединение было потеряно, а затем перенастраивать ссылку через соответствующий промежуток времени. Возможно, вам придется перенастроить на другой SSID, а затем переключиться обратно, в зависимости от того, насколько умны библиотеки iOS.

person Per Knytt    schedule 05.09.2013

Я не уверен, если я правильно вас понял. Вы хотите проверить, подключено ли устройство к точке доступа?

Я создал приложение для подключения к сканеру через Wi-Fi, сканер действует как точка доступа. для этого я проверяю, является ли SSID, к которому устройство в настоящее время подключено, одним из сканера. чтобы проверить CurrentSSID, вы можете использовать следующий код:

+(NSString*)currentSSID {
    CFArrayRef myArray = CNCopySupportedInterfaces();
    CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
    if (!myDict) {
        return nil;
    }
    NSDictionary *myDictionary = (__bridge_transfer NSDictionary*)myDict;
    return [myDictionary objectForKey:@"SSID"];    
}

надеюсь, это поможет.

person thorb65    schedule 01.11.2013

Боюсь, что это невозможно сделать, чтобы не получить отказ во время проверки (вы можете прочитать, как получить доступ к SBWifiManager). Apple не позволяет получить доступ к диспетчеру Wi-Fi из среды песочницы. У меня возникла аналогичная проблема при подключении моего устройства к различным точкам доступа (для поиска с помощью зондирующего запроса), до сих пор с iOS 7 зондирующие запросы отправлялись с огромными интервалами (даже 15 минут). Попробуйте изменить свои точки доступа.

person Wladek Surala    schedule 21.07.2014