Important : cette vérification doit toujours être effectuée de manière asynchrone. La majorité des réponses ci-dessous sont synchrones, alors faites attention sinon vous ferez geler votre application.
Rapide
1) Installez via CocoaPods ou Carthage: https://github.com/ashleymills/Reachability.swift
2) Test d'accessibilité via les fermetures
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")
}
Objectif c
1) Ajoutez un SystemConfigurationcadre au projet mais ne vous inquiétez pas de l'inclure n'importe où
2) Ajoutez la version de Tony Million de Reachability.het Reachability.mau projet (disponible ici: https://github.com/tonymillion/Reachability )
3) Mettre à jour la section interface
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) Ensuite, implémentez cette méthode dans le fichier .m de votre contrôleur de vue que vous pouvez appeler
// 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];
}
Remarque importante: la Reachabilityclasse est l'une des classes les plus utilisées dans les projets, vous pouvez donc rencontrer des conflits de dénomination avec d'autres projets. Si cela se produit, vous devrez renommer l'une des paires de fichiers Reachability.het Reachability.men quelque chose d'autre pour résoudre le problème.
Remarque: le domaine que vous utilisez n'a pas d'importance. Il s'agit simplement de tester une passerelle vers n'importe quel domaine.
return (BOOL)URLString;, ou encore mieux,return !!URLStringoureturn URLString != nil