平時(shí),我們大部分人估計(jì)都是用的AF自帶的檢測(cè)網(wǎng)絡(luò)狀態(tài)類來判斷當(dāng)前手機(jī)網(wǎng)絡(luò)狀態(tài),其實(shí)蘋果原生的檢測(cè)網(wǎng)絡(luò)狀態(tài)的類用著也是很方便和可行的.這里就不贅述蘋果原生的優(yōu)缺點(diǎn)直接上代碼.
1.蘋果官方提供了一個(gè)Reachability示例demo,大家可以下載看下.
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
2.從上面的demo中取出Reachability.h和Reachability.m這兩個(gè)類,拖入到自己的工程中.
3.拖入.h和.m之后我們還需要添加一個(gè)系統(tǒng)依賴庫(kù),就是SystemConfiguration.framework,(針對(duì)小白: ?找到build Phases,點(diǎn)擊Link Binary with Libraries的箭頭,然后點(diǎn)擊+號(hào),添加即可)
4.這時(shí)候我們所有的準(zhǔn)備工作都已經(jīng)完畢了,大家直接可以在appDelegate類中導(dǎo)入他的頭文件Reachability.h,然后在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ?方法中實(shí)現(xiàn)即可.具體實(shí)現(xiàn)請(qǐng)看代碼:
5.Reachability *reach = [Reachability reachabilityWithHostName:@"http://www.baidu.com"];//開啟網(wǎng)絡(luò)狀態(tài)監(jiān)聽
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(myNetStatusChange:) name:kReachabilityChangedNotification object:nil]; // 發(fā)送通知,通過kvo來實(shí)時(shí)監(jiān)聽網(wǎng)絡(luò)狀態(tài)變化.
[self.hostReach startNotifier];//開啟監(jiān)聽, ?特別注意,這步一定要寫.
//以下是通知方法的實(shí)現(xiàn).我這里用了個(gè)單例存起來來判斷.
- (void)myNetStatusChange: (NSNotification *)note
{
Reachability *currentReach = [note object];
NSParameterAssert([currentReach isKindOfClass:[Reachability class]]);
//判斷網(wǎng)絡(luò)狀態(tài)
switch (self.hostReach.currentReachabilityStatus) {
case NotReachable:
NSLog(@"網(wǎng)絡(luò)不通");
break;
case ReachableViaWiFi:
NSLog(@"wifi上網(wǎng)");
[UserInfoCenter shareInstance].netModel = @"wifi"; //我用自己的單例存起來
break;
case ReachableViaWWAN:
NSLog(@"手機(jī)上網(wǎng)");
[UserInfoCenter shareInstance].netModel = @"手機(jī)自帶網(wǎng)絡(luò)";//我用自己的單例存起來
break;
default:
break;
}
}
6.以上就是使用Reachability的方法,有什么問題和寫的不當(dāng)之處敬請(qǐng)指出留言.