Importante : questo controllo deve essere sempre eseguito in modo asincrono. La maggior parte delle risposte di seguito sono sincrone, quindi fai attenzione, altrimenti congelerai la tua app.
veloce
1) Installa tramite CocoaPods o Carthage: https://github.com/ashleymills/Reachability.swift
2) Test di raggiungibilità tramite chiusure
let reachability = Reachability()!
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
reachability.whenUnreachable = { _ in
print("Not reachable")
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
Objective-C
1) Aggiungi un SystemConfiguration
framework al progetto ma non preoccuparti di includerlo ovunque
2) Aggiungi la versione di Tony Million Reachability.h
e Reachability.m
al progetto (disponibile qui: https://github.com/tonymillion/Reachability )
3) Aggiorna la sezione dell'interfaccia
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) Quindi implementare questo metodo nel file .m del controller della vista che è possibile chiamare
// Checks if we have an internet connection or not
- (void)testInternetConnection
{
internetReachableFoo = [Reachability reachabilityWithHostname:@"www.google.com"];
// Internet is reachable
internetReachableFoo.reachableBlock = ^(Reachability*reach)
{
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Yayyy, we have the interwebs!");
});
};
// Internet is not reachable
internetReachableFoo.unreachableBlock = ^(Reachability*reach)
{
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Someone broke the internet :(");
});
};
[internetReachableFoo startNotifier];
}
Nota importante: la Reachability
classe è una delle classi più utilizzate nei progetti, pertanto è possibile che si verifichino conflitti di denominazione con altri progetti. In questo caso, dovrai rinominare una delle coppie di Reachability.h
e Reachability.m
file in qualcos'altro per risolvere il problema.
Nota: il dominio che usi non ha importanza. Sta solo testando un gateway per qualsiasi dominio.
return (BOOL)URLString;
, o meglio,return !!URLString
oppurereturn URLString != nil