2011-08-19 9 views
7

He importado Accesibilidad en mi aplicación, y tengo un par de preguntas prácticas para todos ustedes. Permítanme explicar mi aplicación y otras herramientas primero.Accesibilidad Ayuda - Detección de WiFi

Esta aplicación se comunica con dos cosas AL MISMO TIEMPO, una red ad-hoc e Internet a través de 3G. Nota: La red ad-hoc NO ESTÁ conectada a internet. Esto funciona a la perfección, ya está implementado y lo prueba maravillosamente.

Dicho esto, quiero implementar Reachability para detectar dos cosas.

1) ¿Está el usuario conectado a una red wifi ad-hoc? (Aún mejor, si es posible, es detectar si está conectado a la red wifi ad-hoc con un prefijo de WXYZ. Por ejemplo, si hay dos redes enumeradas, una llamada Linksys y la otra llamada WXYZ-Testing_Platform, sabe ya sea que esté conectado a WXYZ).

2) ¿Puede el usuario conectarse a internet a través de 3G (o 2G, etc.) y acceder a nuestro servidor?

Gracias de antemano

Editar para INCLUYEN RESPUESTA PARA FUTUROS Lookers:

Para 1), mi código es el siguiente:

.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; 
    } 
} 

y durante 2) , Importé Accesibilidad y lo tengo usando este método cada vez que voy a conectarme al servidor ... NOTA: reemplace http://www.google.com con la información del servidor

-(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]; 
    } 
} 

Respuesta

7

Accesibilidad única le permite saber si el dispositivo puede enviar paquetes de datos a cabo éxito. Entonces para 1) debe consultar iPhone get SSID without private library. Para 2) usará Accesibilidad solo para buscar una conexión a Internet, entonces necesitaría usar NSURLConnection u otra biblioteca de red para asegurarse de que pueda comunicarse con su servidor.

+0

Voy a ver esto ahora, gracias! – Baub