comprobación de accesibilidad de iPhone

He encontrado varios ejemplos de código para hacer lo que quiero (verificar la accesibilidad), pero ninguno de ellos parece ser lo suficientemente exacto como para ser útil para mí. No puedo entender por qué esto no quiere jugar bien.

Tengo la accesibilidad.h / m en mi proyecto, lo estoy haciendo

#import  

Y tengo el marco agregado. Tambien tengo:

 #import "Reachability.h" 

en la parte superior del .m en el que trato de usar la accesibilidad.

 Reachability* reachability = [Reachability sharedReachability]; [reachability setHostName:@"http://www.google.com"]; // set your host name here NetworkStatus remoteHostStatus = [reachability remoteHostStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFiNetwork) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaCarrierDataNetwork) {NSLog(@"cell"); } 

Esto me está dando todo tipo de problemas. ¿Qué estoy haciendo mal? Soy un buen codificador, me cuesta mucho encontrar el modo de habilitar lo que quiero hacer, independientemente de si quiero saber qué quiero hacer o no. (Muy frustrante)

Actualización: Esto es lo que está pasando. Esto está en mi viewcontroller, que tengo el

 #import  

y

 #import "Reachability.h" 

configurar con. Esta es mi parte menos favorita de la progtwigción de lejos. problemas de accesibilidad http://sneakyness.com/reachability.png


FWIW, nunca terminamos de implementar esto en nuestro código. Las dos características que requerían acceso a internet (ingresar al sorteo y comprar el dvd) no eran características principales. Nada más requiere acceso a internet.

En lugar de agregar más código, simplemente establecemos el fondo de ambas vistas de Internet en un aviso que indica a los usuarios que deben estar conectados a Internet para usar esta función. Estaba en tema con el rest de la interfaz de la aplicación, y se hizo bien / con buen gusto. No dijeron nada al respecto durante el proceso de aprobación, sin embargo, recibimos una llamada telefónica personal para verificar que estábamos regalando elementos que realmente pertenecían a la película. De acuerdo con su acuerdo generalmente vago, no está permitido tener sorteos de otra manera.

También creo que esto se adhiere más estrictamente a su ideación “solo usa cosas si las necesitas absolutamente” también.

Aquí está el enlace de iTunes a la aplicación, EvoScanner.

Desde su captura de pantalla, parece que no tiene Reachability agregado a su proyecto. Debes descargar Reachability de Apple:

https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html

Y agregue ambos archivos .h y .m a su proyecto.

Actualización: notó que tiene accesibilidad. Pero al mirar la versión más reciente, puedo ver por qué tiene los errores que enumeró: cambiaron la API y probablemente esté usando el código de muestra que encontró en otro lugar. Tratar:

en archivo .h:

 //import Reachability class #import "Reachability.h" // declare Reachability, you no longer have a singleton but manage instances Reachability* reachability; 

en archivo .m:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } ..... - (void) handleNetworkChange:(NSNotification *)notice { NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } } 
 [reachability setHostName:@"http://www.google.com"]; 

¡Atención! Encontré el problema de que siempre es “No Accesible” si se usa el prefijo http: //.

Raphael

¡Aquí está el código correcto ya que funciona para mí hoy!

 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNetworkChange:) name: kReachabilityChangedNotification object: nil]; reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } 

¿Tiene el siguiente código en cualquier lugar?

 [reachability startNotifier]; 

Si su código de accesibilidad es del ejemplo de Apple, entonces debe hacerlo antes de que pueda comenzar a informarle las actualizaciones de estado.

cambia esto

 reachability = [Reachability reachabilityForInternetConnection]; 

a esto

 reachability = [[Reachability reachabilityForInternetConnection] retain];