檢測網(wǎng)絡(luò)是否可以訪問域名:
Reachability *reach = [Reachability reachabilityWithHostname:@“www.baidu.com"];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
[reach startNotifier];
通過KVO我們可以監(jiān)聽網(wǎng)絡(luò)是否改變,當網(wǎng)絡(luò)改變時,會發(fā)送消息給reachabilityChanged,reachabilityChanged的代碼為
- (void)reachabilityChanged:(NSNotificationCenter *)note
{
NetworkStatus internetStatus = [self.reach currentReachabilityStatus];
if (internetStatus) {
//可以訪問網(wǎng)絡(luò)
} else {
//沒有可以訪問的網(wǎng)絡(luò)
}
}
其中NetworkStatus有三個狀態(tài)
typedef NS_ENUM(NSInteger, NetworkStatus) {
// Apple NetworkStatus Compatible Names.
NotReachable = 0,
ReachableViaWiFi = 2,
ReachableViaWWAN = 1
};
名字很直觀了
如果不想用KVO,可以用Block的方式
Reachability *reach = [Reachability reachabilityWithHostname:@“www.baidu.com"];
reach.reachableBlock = ^(Reachability*reach)
{
};
reach.unreachableBlock = ^(Reachability*reach)
{
};
[reach startNotifier];
KVO與Block的方式都需要
[reach startNotifier];
如果只是想驗證一下網(wǎng)絡(luò)是否可用,可以用
Reachability *reach = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reach currentReachabilityStatus];
if (internetStatus) {
//可以訪問網(wǎng)絡(luò)
} else {
//沒有可以訪問的網(wǎng)絡(luò)
}
這樣就不需要
[reach startNotifier];