2015-08-13 4 views
0

Мне нужно знать, как определить состояние WiFi, когда я получаю true возврат при проверке isNetworkconnected() через ConnectivityManager, но на самом деле отклик обрабатывается уважаемым WIFI-сервером.Определите, включена ли информация WiFi или нет?

Предположим, что я посетил какое-то место, где Wi-Fi является бесплатным, но мне нужно, чтобы войти в эту сеть для доступа, но в то же время, если я начну мое приложение без входа в систему, чтобы этого Wi-Fi, я буду получать WIFI подключен обратный true через ConnectivityManager (поскольку андроид только проверяет, подключен ли WIFI или нет) и неожиданный ответ от этого хоста wifi.

Как я могу обнаружить такую ​​связь? Я видел, как в таком случае запускается несколько загрузчиков приложений, но как они его обнаруживают?

ответ

0

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

Так что, как я понимаю, у вас есть два варианта:

1) Вы проверить SSID Wi-Fi на как утвержденный список или что-то, и если пользователь не находится на этом SSID, вы оповещение их.

Вот метод, чтобы получить идентификатор SSID подключенного в данный момент маршрутизатор (IOS 7+):

@import SystemConfiguration.CaptiveNetwork; 

/** Returns first non-empty SSID network info dictionary. 
* @see CNCopyCurrentNetworkInfo */ 
- (NSDictionary *)fetchSSIDInfo 
{ 
    NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces()); 
    NSLog(@"%s: Supported interfaces: %@", __func__, interfaceNames); 

    NSDictionary *SSIDInfo; 
    for (NSString *interfaceName in interfaceNames) { 
     SSIDInfo = CFBridgingRelease(
     CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName)); 
     NSLog(@"%s: %@ => %@", __func__, interfaceName, SSIDInfo); 

     BOOL isNotEmpty = (SSIDInfo.count > 0); 
     if (isNotEmpty) { 
      break; 
     } 
    } 
    return SSIDInfo; 
} 

2) Я полагаю, что вы забыли, пытаясь проверить Wi-Fi со стандартными методами, и вы просто прогоните запрос с тайм-аутом как 3s, прежде чем пытаться использовать Wi-Fi. Если вы получите действительный ответ, вы подключены, иначе он потерпел неудачу.

+0

Спасибо, Бен .. Вы можете объяснить, как это сделать в андроиде .... –

+0

Привет, Шарма, мне трудно сказать, поскольку я не знаю, что вы пытаетесь сделать с помощью Wi-Fi-соединения. Данные, которые вы собираетесь получать по Wi-Fi, - это запрос, который вы должны сделать. – Ben

+0

Если это не имеет смысла, дайте мне знать :) – Ben