2011-08-19 17 views
7

Zaimportowałem Zasięg do mojej aplikacji, a ja mam dla was kilka pytań dotyczących instrukcji. Pozwól mi najpierw wyjaśnić moją aplikację i inne narzędzia.Zasięg pomocy - wykrywanie Wi-Fi

Ta aplikacja komunikuje się z dwiema rzeczami W TYM SAMYM CZASIE, sieci typu ad-hoc i Internetu przez sieć 3G. Uwaga: Sieć ad-hoc NIE jest połączona z Internetem. Działa to doskonale - jest już zaimplementowane i przetestowane cudownie.

Powiedziawszy to, chcę zaimplementować Zasięg, aby wykryć dwie rzeczy.

1) Czy użytkownik jest podłączony do sieci Wi-Fi ad-hoc? (Jeszcze lepiej, jeśli to możliwe, jest wykrywanie, czy jest on podłączony do sieci wifi ad-hoc z prefiksem WXYZ.Na przykład, jeśli są wymienione dwie sieci, jedna nazywa się Linksys, a druga nazywa się WXYZ-Testing_Platform, to wie czy jest podłączony do WXYZ).

2) Czy użytkownik może połączyć się z Internetem przez sieć 3G (lub 2G itp.) I uzyskać dostęp do naszego serwera?

góry dzięki

EDIT DO ZAWIERAJĄ ODPOWIEDŹ dla przyszłych lookers:

za 1), mój kod wygląda następująco:

.h 
#import <SystemConfiguration/CaptiveNetwork.h> //for checking wifi network prefix 

.m 
- (BOOL) connectedToWifi 
{ 

    CFArrayRef myArray = CNCopySupportedInterfaces(); 
    // Get the dictionary containing the captive network infomation 
    CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); 

    NSLog(@"Information of the network we're connected to: %@", captiveNtwrkDict); 

    NSDictionary *dict = (__bridge NSDictionary*) captiveNtwrkDict; 
    NSString* ssid = [dict objectForKey:@"SSID"]; 

    if ([ssid rangeOfString:@"WXYZ"].location == NSNotFound || ssid == NULL) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

i przez 2) , Zaimportowałem opcję zasięgu i używam tej metody za każdym razem, gdy łączę się z serwerem ... UWAGA: zamień http://www.google.com z informacjami o serwerze

-(void) checkIfCanReachServer 
{ 
UIAlertView *errorView; 
    Reachability *r = [Reachability reachabilityWithHostName:@"http://www.google.com"]; 
    NetworkStatus internetStatus = [r currentReachabilityStatus]; 


    if(internetStatus == NotReachable) { 
     errorView = [[UIAlertView alloc] 
        initWithTitle: @"Network Error" 
        message: @"Cannot connect to the server." 
        delegate: self 
        cancelButtonTitle: @"OK" otherButtonTitles: nil]; 
     [errorView show]; 
    } 
} 

Odpowiedz

7

osiągalności tylko pozwala wiedzieć, czy urządzenie może wysyłać pakiety danych się pomyślnie. Tak więc dla 1) powinieneś zapoznać się z iPhone get SSID without private library. W przypadku 2) będziesz korzystać z zasięgu tylko w celu sprawdzenia połączenia z Internetem, wtedy musisz użyć NSURLConnection lub innej biblioteki sieciowej, aby upewnić się, że możesz połączyć się z serwerem.

+0

Zajmę się tym teraz, dziękuję! – Baub