Pergunta

Eu encontrei vários exemplos de código para fazer o que eu quero (cheque de acessibilidade), mas nenhum deles parece ser exato o suficiente para ser de utilidade para mim. Eu não consigo descobrir por que isso não quer jogar bonito.

Eu tenho o reachability.h / m no meu projeto, eu estou fazendo

#import <SystemConfiguration/SystemConfiguration.h>

E eu tenho a estrutura acrescentou. Eu também tenho:

#import "Reachability.h"

no topo da .m em que eu estou tentando usar a acessibilidade.

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

Isso está me dando todos os tipos de problemas. O que estou fazendo errado? Eu sou um certo codificador, eu só tenho um tempo difícil quando se trata tempo para descobrir o que precisa ser colocado onde a permitir o que eu quero fazer, independentemente se eu quero saber o que eu quero fazer ou não. (Tão frustrante)

Update: Isto é o que está acontecendo. Esta é, na minha viewcontroller, que tenho a

#import <SystemConfiguration/SystemConfiguration.h>

e

#import "Reachability.h"

configurado com. Esta é a minha parte menos favorita de programação de longe problemas acessibilidade
(fonte: sneakyness.com )


FWIW, nunca acabou implementando isso em nosso código. As duas características que exigiam acesso à Internet (inserindo os sorteios, e comprar o dvd), não foram principais características. Nada mais necessário acesso à internet.

Em vez de adicionar mais código, nós apenas definir o fundo de ambos os pontos de vista de internet para um aviso dizendo que os usuários devem ser conectados à internet para usar este recurso. Foi no tema com o resto da interface do aplicativo, e foi bem feito / bom gosto. Eles não disseram nada sobre isso durante o processo de aprovação, no entanto, não receber um telefonema pessoal para verificar que estávamos dando itens que realmente pertenceram ao filme. De acordo com a sua geralmente vago acordo, você não está autorizado a ter sorteios contrário.

Eu também acho que isso adere mais estritamente aos seus "apenas usar as coisas se você realmente precisa deles" ideaology também.

Aqui está o iTunes link para o aplicativo, EvoScanner.

Foi útil?

Solução

Na Tela tiro, parece que você não tem acessibilidade adicionado ao seu projeto. Você deve baixar acessibilidade da Apple:

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

E adicione ambos os arquivos .h e .m ao seu projeto.

Update: Você notou que você tem acessibilidade. Mas olhando para a versão mais recente, eu posso ver porque você tem os erros que você listou - eles mudaram o API e você provavelmente está usando o código de exemplo que você encontrou em outro lugar. Tente:

no arquivo .h:

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

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

no arquivo 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"); }
}

Outras dicas

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

Atenção! Eu encontrei o problema que é sempre "NotReachable" se a http:. // prefixo é usado

Raphael

Aqui está o código certo como ele funciona para mim hoje !!!

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

Você tem o seguinte em qualquer código?

[reachability startNotifier];

Se o seu código de acessibilidade é o exemplo de maçã, então você precisa fazer isso antes que possa começar a relatar atualizações de status para você.

alterar esta

reachability = [Reachability reachabilityForInternetConnection];

a esta

reachability = [[Reachability reachabilityForInternetConnection] retain];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top