2012-04-17 6 views
9

Przeprowadzam badania, aby znaleźć najlepszy sposób korzystania z sieci przechwytującej na iOS. Wygląda na to, że to, co robi, popraw mnie, jeśli się mylę, pozwala użytkownikowi wprowadzić różne ssid i hasła, które mogą być użyte do automatycznego logowania, gdy ta sieć stanie się dostępna. Jeśli tak jest, jaki byłby najlepszy sposób na wykonanie poniższych czynności, odczytanie ssid i hasła od użytkownika i połączenie go z tą siecią Wi-Fi lub jest to nawet możliwe.Użycie sieci przechwytującej

Jak dotąd wszystko robie ciągnie się aktualnie podłączonej sieci z tym:

NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces(); 
id info = nil; 

for (NSString *ifnam in ifs) { 

    NSLog(@"ifnam = %@", ifnam); 

    info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge_retained CFStringRef)ifnam); 

    if (info && [info count]) { 
     break; 
    } 
} 

NSLog (@"SSID: %@", [ info objectForKey"@"SSID" ]); 

Odpowiedz

12

A „Captive Network” jest jednym jak można znaleźć w hotelach lub Starbucks, gdzie połączenie WiFi jest otwarty, ale ty Konieczne jest przejście przez stronę logowania lub stronę "Akceptuję warunki" w celu połączenia z dowolnymi witrynami internetowymi.

Zwykle po podłączeniu do takiej sieci aplikacja Ustawienia IOS przygotuje formularz internetowy, aby dokończyć logowanie. Celem interfejsów CN API jest umożliwienie Twojej aplikacji uwierzytelniania zamiast umieszczania formularza internetowego.

Pytanie dotyczy odczytu SSID od użytkownika: nie wydaje się to zbyt przydatne, ponieważ aplikacja Ustawienia już pozwala użytkownikom na określenie dowolnego SSID, a następnie na logowanie się za pomocą hasła. Interfejs API sieci przechwytującej byłby użyteczny tylko wtedy, gdy aplikacja wie dokładnie, jak zalogować się do sieci, w którym to przypadku może również znać identyfikator SSID. Możesz uzyskać hasło od użytkownika za pomocą zwykłego NSTextField.

Należy również pamiętać, że IOS nie uruchamia aplikacji po podłączeniu do sieci: ten interfejs API działa tylko wtedy, gdy aplikacja jest już uruchomiona.

+0

Świetna odpowiedź. Czy przy korzystaniu z aplikacji CaptiveNetwork Reference w aplikacji użytkownik musi najpierw wybrać Wi-Fi w Ustawieniach, czy nie? Mam nadzieję, że wystarczy uruchomić aplikację, a jeśli na przykład StarbuckWifi, jest już wykryty przez iOS, mogę uwierzytelnić się i dołączyć ... bez dotykania ustawień. – 3pic

+0

Uważam, że użytkownik musi wybrać konkretną sieć Wi-Fi, a następnie aplikację, która zarejestrowała pełne uwierzytelnienie. – Bryan

1

Zajmowałem się tym w sposób ogólny, wykonując dwustopniową procedurę. Pierwszym testem był ogólny test osiągalności, który się nie powiódł, jeśli nie ma sieci. Po awarii powiadamiam użytkownika, że ​​sieć jest wymagana. Jeśli obecna jest sieć, jako drugi krok wysyłam żądanie do mojego serwera. Jeśli przekroczy limit czasu, ostrzegam użytkownika, aby sprawdził połączenie sieciowe, które wymaga uwagi.