Pregunta

Encontré varios ejemplos de código para hacer lo que quiero (verificar la accesibilidad), pero ninguno parece ser lo suficientemente exacto como para serme útil.No puedo entender por qué esto no quiere ser agradable.

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

#import <SystemConfiguration/SystemConfiguration.h>

Y tengo el marco agregado.Tambien tengo:

#import "Reachability.h"

en la parte superior del .m en el que intento utilizar 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, simplemente me resulta difícil cuando llega el momento de descubrir qué se debe colocar y dónde habilitar lo que quiero hacer, independientemente de si quiero saber lo que quiero hacer o no.(Muy frustrante)

Actualizar:Esto es lo que está pasando.Esto está en mi controlador de vista, que tengo el

#import <SystemConfiguration/SystemConfiguration.h>

y

#import "Reachability.h"

configurar con.Esta es, con diferencia, la parte que menos me gusta de la programación.reachability problems
(fuente: furtivo.com)


FWIW, nunca terminamos implementando esto en nuestro código.Las dos funciones que requerían acceso a Internet (participar en el sorteo y comprar el DVD) no eran funciones principales.Nada más requería acceso a Internet.

En lugar de agregar más código, simplemente configuramos el fondo de ambas vistas de Internet con un aviso que indica a los usuarios que deben estar conectados a Internet para usar esta función.Estaba en sintonía con el resto de la interfaz de la aplicación y se hizo bien y 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 artículos que realmente pertenecían a la película.Según su acuerdo generalmente vago, de lo contrario no se le permite realizar sorteos.

También creo que esto se adhiere más estrictamente a su ideaología de "solo usa las cosas si las necesitas absolutamente".

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

¿Fue útil?

Solución

A partir de la captura de pantalla, parece que usted no tiene Accesibilidad añade al proyecto. Debe descargar de accesibilidad de Apple:

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

Y añadir tanto .hy archivos .m a su proyecto.

Actualización: Usted ha señalado que tiene de accesibilidad. Pero al mirar a la versión más reciente, puedo ver por qué tiene los errores que enumeró - cambiaron el API y probablemente están utilizando código de ejemplo que pueda encontrar en otro lugar. Proveedores:

en el archivo .h:

//import Reachability class
#import "Reachability.h"

// declare Reachability, you no longer have a singleton but manage instances
Reachability* reachability;

en el 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"); }
}

Otros consejos

[reachability setHostName:@"http://www.google.com"];

¡Atención! Me encontré con el problema que siempre es "NotReachable" si el http:. Se utiliza el prefijo //

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 el código es la accesibilidad del ejemplo de manzana, entonces usted necesita para hacer eso antes de que pueda comenzar a informar sobre actualizaciones de estado para ti.

cambia esto

reachability = [Reachability reachabilityForInternetConnection];

a esto

reachability = [[Reachability reachabilityForInternetConnection] retain];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top