Comprobación de accesibilidad del iPhone


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

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

#import <SystemConfiguration/SystemConfiguration.h>

Y he añadido el framework. También tengo:

#import "Reachability.h"

En la parte superior de la .m en el que estoy tratando de 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 codificador bien, solo tengo un tiempo difícil cuando llega el momento de averiguar lo que necesita ser puesto donde para habilitar lo que quiero hacer, independientemente de si quiero saber lo que quiero hacer o no. (Tan frustrante)

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

#import <SystemConfiguration/SystemConfiguration.h>

Y

#import "Reachability.h"

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


FWIW, nunca terminamos implementando esto en nuestro código. Las dos características que requerían acceso a Internet (participar en el sorteo y comprar el dvd), no eran características 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 en un aviso que indica a los usuarios que deben estar conectados a Internet para usar esta función. Estaba en el tema con el resto 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 artículos que realmente pertenecían a la película. De acuerdo con su acuerdo generalmente vago, no se le permite tener sorteos de lo contrario.

También creo que esto se adhiere más estrictamente a su ideología de "solo use las cosas si las necesita absolutamente" también.

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

Author: Kara, 2009-12-07

5 answers

Desde su captura de pantalla, parece que no tiene accesibilidad añadida a su proyecto. Debe descargar la accesibilidad de Apple:

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

Y añadir ambos .h y .m archivos a su proyecto.

Actualización: Notó que tiene accesibilidad. Pero mirando la versión más reciente, puedo ver por qué tiene los errores que enumeró: cambiaron la API y probablemente esté usando código de ejemplo que encontraste en otro lugar. Try:

In .archivo h:

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

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

In .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"); }
}
 65
Author: Kendall Helmstetter Gelner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-02 16:58:52
[reachability setHostName:@"http://www.google.com"];

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

Raphael

 28
Author: Raphael Schaad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-16 03:26:25

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"); }
 7
Author: nikoz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-15 10:39:02

¿Tiene el siguiente código en algún 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.

 3
Author: Kevlar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-07 17:59:12

Cambiar esto

reachability = [Reachability reachabilityForInternetConnection];

A esto

reachability = [[Reachability reachabilityForInternetConnection] retain];
 -3
Author: mhrrt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-11 11:12:29