说明
用于判断网络是否可用包括Wi-Fi和移动网络(2/3/4G)。
Reachability Github 地址
Github版本Reachability相对于苹果官网的,这个更加高级、更加好用的Reachability,支持ARC、支持block、使用GCD方式来通知网络的变化。
- 定义网络状态的枚举类型NetworkStatus
typedef NS_ENUM(NSInteger, NetworkStatus) {
// Apple NetworkStatus Compatible Names.
NotReachable = 0, // 不可到达
ReachableViaWiFi = 2, // 通过WiFi可到达
ReachableViaWWAN = 1 // 通过无线广域网可到达(WWAN,即Wireless Wide Area Network,无线广域网。
};
- 定义网络链接变化通知标志符
extern NSString *const kReachabilityChangedNotification;
官方使用例程
Block Example
//定义Reachability类 同时初始化链接地址
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];
//配置链接成功后的代码
reach.reachableBlock = ^(Reachability*reach)
{
// 这就是所谓的后台线程,如果你要更新的用户界面,它需要发生在主线程,就像这样:
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"REACHABLE!");
});
};
//配置链接失败后的代码
reach.unreachableBlock = ^(Reachability*reach)
{
NSLog(@"UNREACHABLE!");
};
// 启动通知
[reach startNotifier];
NSNotification Example
//定义Reachability类 同时初始化链接地址
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];
// 不使用移动运营商的网络
reach.reachableOnWWAN = NO;
// 添加观察者当网络发生变化时调用`reachabilityChanged:`方法处理
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
// 启动通知
[reach startNotifier];