Domanda

Ho trovato diversi esempi di codice per fare quello che voglio (verificare la presenza di raggiungibilità), ma nessuna di queste sembra essere abbastanza precisa per essere di utilità per me. Io non riesco a capire perché questo non vuole giocare piacevole.

Ho il reachability.h / m nel mio progetto, sto facendo

#import <SystemConfiguration/SystemConfiguration.h>

E ho il quadro aggiunto. Ho anche:

#import "Reachability.h"

nella parte superiore della .m in cui sto cercando di utilizzare la raggiungibilità.

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

Questo mi sta dando problemi di ogni genere. Che cosa sto facendo di sbagliato? Sono un programmatore va bene, ho solo un momento difficile quando arriva il momento di capire cosa deve essere messo dove abilitare quello che voglio fare, a prescindere se voglio sapere quello che voglio fare o non. (Così frustrante)

Aggiornamento: Questo è quello che sta succedendo. Questo è a mio viewcontroller, che ho l'

#import <SystemConfiguration/SystemConfiguration.h>

e

#import "Reachability.h"

impostato con. Questa è la mia parte meno favorita della programmazione di gran lunga problemi di raggiungibilità
(fonte: sneakyness.com )


FWIW, non abbiamo mai finito per l'attuazione del presente nel nostro codice. Le due caratteristiche che hanno richiesto l'accesso a Internet (entrando la lotteria, e l'acquisto del DVD), non erano le caratteristiche principali. Nient'altro richiesto l'accesso a Internet.

Invece di aggiungere più codice, dobbiamo solo impostare lo sfondo di entrambe le viste in internet di un bando raccontando gli utenti devono essere collegati a Internet per utilizzare questa funzione. E 'stato in tema con il resto dell'interfaccia dell'applicazione, ed è stato fatto bene / con gusto. Hanno detto nulla durante il processo di approvazione, ma abbiamo avuto una telefonata personale per verificare che stavamo dando via gli oggetti che in realtà appartenevano al film. Secondo il loro solito vaga accordo, non è permesso di avere lotterie altrimenti.

Vorrei anche che questo si attiene più strettamente alla loro "utilizzare solo le cose se assolutamente bisogno di loro" ideaology pure.

Ecco il link iTunes per l'applicazione, EvoScanner.

È stato utile?

Soluzione

Dalla schermata, sembra che non si dispone di raggiungibilità aggiunto al progetto. È necessario scaricare raggiungibilità da Apple:

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

E aggiungere sia i file .m .he al vostro progetto.

Aggiornamento: annotato avete raggiungibilità. Ma guardando la versione più recente, posso capire perché si hanno gli errori che hai elencato - hanno cambiato le API e probabilmente si sta utilizzando il codice di esempio che avete trovato da qualche altra parte. Prova:

nel file h:

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

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

nel file di .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"); }
}

Altri suggerimenti

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

Attenzione! Ho incontrato il problema che è sempre "NotReachable" se la http:. Viene utilizzato // prefix

Raphael

Ecco il codice giusto come funziona per me oggi !!!

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

Avete il seguente codice da qualche parte?

[reachability startNotifier];

Se il codice è raggiungibilità dall'esempio di mela, allora avete bisogno di farlo prima di poter iniziare la segnalazione aggiornamenti di stato da voi.

cambiare questo

reachability = [Reachability reachabilityForInternetConnection];

a questo

reachability = [[Reachability reachabilityForInternetConnection] retain];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top