verificação de acessibilidade iPhone
-
13-09-2019 - |
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
(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.
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 ??p>
reachability = [Reachability reachabilityForInternetConnection];
a esta ??p>
reachability = [[Reachability reachabilityForInternetConnection] retain];