Home / Programmazione / Objective-C / Controllo della connessione in iPhone e iPad
Mattepuffo

Controllo della connessione in iPhone e iPad

Controllo della connessione in iPhone e iPad

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.

Questo metodo controlla sia la connessione a internet in generale (3G, ecc) e poi quella wirless.

Sotto fa un controllo richiamando il metodo check, che richiede un parametro di tipo Reachability.

Con uno switch controlla i due tipi di connessione e ritorna un parametro BOOL.

Nel complesso non c'è molto da capire, in quanto la classe è sviluppata direttamente da Apple, e quindi a parte ARC tutto funziona alla perfezione.

La classe da noi creata serve solo come "appoggio" di implementazione della suddetta classe, in modo da rendere il tutto più trasparente.

A voi non rimane che istanziare un oggetto ControllaConnessione e richiamare il metodo controllaConnessione.

Enjoy!!