Ответ 1
Вместо того, чтобы каждый раз пинговать Интернет с помощью Reachability, выполните ping хост в локальной сети, например DNS-сервер или маршрутизатор (192.168.1.1).
Я пишу приложение, которое подключается через WiFi к проприетарному устройству. Проприетарное устройство действует как точка доступа WiFi.
Когда устройство отключается, соединение Wi-Fi прекращается, как и следовало ожидать.
iPhone продолжает отправлять запросы на зондирование, ища сети для подключения. Он следует за экспоненциальным алгоритмом отклика для отправки зондов.
Моя проблема заключается в том, что в конечном итоге интервалы между запросами зонда, отправленными iPhone, больше, чем таймаут на моем устройстве, поэтому они не устанавливают соединение.
Я использую код Reachability, и он работает так, как я ожидал.
Кажется, что нажатие кнопки home будет reset отсрочкой и немедленно отправить запрос на зондирование. Кто-нибудь знает, как заставить приложение сделать что-то подобное?
Спасибо за любую помощь.
Вместо того, чтобы каждый раз пинговать Интернет с помощью Reachability, выполните ping хост в локальной сети, например DNS-сервер или маршрутизатор (192.168.1.1).
Я как-то испытал аналогичную ситуацию, чтобы проверить, было ли устройство подключено к определенному VPN-соединению. Подход состоял в том, чтобы выполнить ping на машине в локальной сети, через стандартный пинг или реализовать веб-службу ping.
Если у вас нет бэкэнд в вашей локальной сети, самым простым будет ping. Вы можете проверить следующий пример кода с сайта разработчика Apple: http://developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html
Я подозреваю, что если вы перенастроете соединение (переустановите конфигурацию WiFi) в своем приложении, iPhone перезапустит сканирование без отсрочки. Таким образом, ваше приложение может отслеживать, сколько времени прошло с момента потери соединения, а затем перенастроить ссылку после соответствующего количества времени. Возможно, вам придется перенастроить другой SSID, а затем переключиться обратно, в зависимости от того, насколько интеллектуальны iOS-библиотеки.
Я не уверен, если я понимаю тебя правильно. Вы хотите проверить, все ли подключено устройство к точке доступа?
Я создал приложение для подключения к сканеру через 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"];
}
надеюсь, что это поможет.
Я боюсь, что нет никакого способа сделать это, не будучи отвергнутым во время обзора (вы могли бы прочитать о том, как получить доступ к SBWifiManager
). Apple не позволяет каким-либо образом получить доступ к wifi-менеджеру из среды песочницы. У меня возникла аналогичная проблема, связанная с подключением моего устройства к различным точкам доступа (для поиска с запросом зонда), до сих пор с iOS 7 запросы зонда были отправлены между огромными интервалами (даже 15 минут). Попробуйте изменить свои точки доступа.