Подтвердить что ты не робот

Интервал зондирования IOS WiFi

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Я создал приложение для подключения к сканеру через 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"];    
}

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

Ответ 5

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