Importante : esta verificación siempre debe realizarse de forma asíncrona. La mayoría de las respuestas a continuación son sincrónicas, así que tenga cuidado, de lo contrario, congelará su aplicación.
Rápido
1) Instalar a través de CocoaPods o Carthage: https://github.com/ashleymills/Reachability.swift
2) Prueba de accesibilidad a través de cierres
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")
}
C objetivo
1) Agregue SystemConfiguration
marco al proyecto pero no se preocupe por incluirlo en ningún lado
2) Agregue la versión de Tony Million Reachability.h
y Reachability.m
al proyecto (que se encuentra aquí: https://github.com/tonymillion/Reachability )
3) Actualiza la sección de interfaz
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) Luego implemente este método en el archivo .m de su controlador de vista al que puede llamar
// 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
clase es una de las clases más utilizadas en los proyectos, por lo que puede tener conflictos de nombres con otros proyectos. Si esto sucede, deberá cambiar el nombre de uno de los pares de Reachability.h
y Reachability.m
archivos a otra cosa para resolver el problema.
Nota: El dominio que usa no importa. Solo está probando una puerta de enlace a cualquier dominio.
return (BOOL)URLString;
, o incluso mejor,return !!URLString
oreturn URLString != nil