2010-05-18 6 views
10

¿Existe alguna propiedad u otro mecanismo en el iPhone OS para verificar durante el tiempo de ejecución si la aplicación se está ejecutando en un iPad 3G o iPad con Wi-Fi? Parece que la clase UIDevice no proporciona nada de eso.iPhones OS: ¿cómo diferenciar por programación el iPad 3G del iPad con Wi-Fi?

Mi aplicación utiliza ampliamente el acceso a Internet y me gustaría advertir explícitamente al usuario que con retrasos 3G o costos adicionales pueden esperarse O incluso prohibir que la aplicación se ejecute en el iPad 3G con alguna ventana emergente de lujo.

Respuesta

4

Supongo que, aparte de las capacidades de red 3G, no es necesario marcar la diferencia. Usando la clase Reachability.h proporcionada por Apple, puede verificar si la conexión a Internet está disponible y si es una red móvil o inalámbrica.

Código de ejemplo aquí: http://developer.apple.com/iphone/library/samplecode/Reachability/Introduction/Intro.html

clase de la alcanzabilidad proporciona los siguientes valores:

ReachableViaCarrierDataNetwork, ReachableViaWiFiNetwork o NotReachable.

+1

Mi aplicación está utilizando el acceso a Internet ampliamente y me gustaría advertir explícitamente usuario que sobre los retrasos 3G o adicional se pueden esperar costos O incluso prohibir que la aplicación se ejecute en el iPad 3G con algunas ventanas emergentes de lujo. ¿La clase de Accesibilidad permitiría implementar esto? – matm

+0

Pensé que ReachableViaWWAN significa "3G o Wi-Fi" y ReachableViaWifi como "Wi-Fi solamente". ¿Estoy en lo correcto? – matm

+0

Puede diferenciar entre CarrierDataNetwork y ReachableVieaWifiNetwork. – texmex5

2

Puede diferenciar entre WiFi y 3G iPads si su aplicación se está ejecutando en una segunda generación de iPad:

+ (NSString *) iPadModelName 
{ 
    size_t size; 
    sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
    char *machine = malloc(size); 
    sysctlbyname("hw.machine", machine, &size, NULL, 0); 
    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding]; 
    free(machine); 
    if ([platform isEqualToString:@"iPad2,1"])  return @"iPad 2 (WiFi)"; 
    if ([platform isEqualToString:@"iPad2,2"])  return @"iPad 2 (GSM)"; 
    if ([platform isEqualToString:@"iPad2,3"])  return @"iPad 2 (CDMA)"; 

    return platform; 
} 
Cuestiones relacionadas