Torniamo a parlare di Objective-C con un argomento abbastanza importante: il controllo della connessione.
Fino a iOS 6 non sono previsti strumenti integrati, ma Apple stessa ha messo a disposizione una classe che si chiama Reachability, che si può scaricare dal web; un esempio completo da qua.
Per questa classe bisogna disabilitare ARC se lo avete attivato; sennò in giro c'è anche una classe compatibile con ARC.
Una volta agguinta la classe al progetto, sviluppiamo una classe per usarla; io l'ho chiamata molto banalmente ControlloConnessione:
// ControlloConnessione.h
#import
#import "Reachability.h"
@interface ControlloConnessione : NSObject {
Reachability *internet;
Reachability *wifi;
}
- (BOOL)controllaConnessione;
- (BOOL)check: (Reachability *)curReach;
@end
Questo il file di implementazione:
// ControlloConnessione.m
#import "ControlloConnessione.h"
@implementation ControlloConnessione
- (BOOL)controllaConnessione {
internet = [Reachability reachabilityForInternetConnection];
wifi = [Reachability reachabilityForLocalWiFi];
if ([self check:internet] || [self check:wifi]) {
return YES;
}
return FALSE;
}
- (BOOL)check:(Reachability*)curReach{
NetworkStatus netStatus = [curReach currentReachabilityStatus];
switch (netStatus){
case NotReachable:{
return NO;
break;
}
case ReachableViaWWAN:{
return YES;
break;
}
case ReachableViaWiFi:{
return YES;
break;
}
}
return FALSE;
}
@end
Come vedete ci sono due metodi, di cui il primo sarà quello richiamato dove ci serve.