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 SystemConfiguration
cadre au projet mais ne vous inquiétez pas de l'inclure n'importe où
2) Ajoutez la version de Tony Million de Reachability.h
et Reachability.m
au 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 Reachability
classe 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.h
et Reachability.m
en 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 !!URLString
oureturn URLString != nil