利用Reachability实现网络状态监听
時(shí)刻檢查設(shè)備的聯(lián)網(wǎng)狀態(tài),并作出相應(yīng)的處理,基本上是所有的聯(lián)網(wǎng)程序需要考慮的問題,以前自己寫個(gè)NSTimer 每多少賣哦循環(huán)一次,后來覺得這個(gè)思維有些不爽,就直接用Reachability來實(shí)現(xiàn)了
首先考慮要在每一個(gè)類都能用這個(gè)網(wǎng)絡(luò)的判定結(jié)果,可以用一個(gè)單例寫,怕麻煩的話 直接寫在 AppDelegate也行。
.h的操作
@property (strong,nonatomic)Reachability *reachiability;
@property (assign,nonatomic)BOOL isReachable;//是否可用
@property (assign,nonatomic)NetworkStatus status;//判定狀態(tài)用的
.m里
?//開啟網(wǎng)絡(luò)狀況的監(jiān)聽
? ? [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(reachabilityChanged:) name:kReachabilityChangedNotificationobject:nil];
? ??self.reachiability?= [ReachabilityreachabilityWithHostname:@"www.baidu.com"];
? ? [self.reachiability?startNotifier];? //開始監(jiān)聽,會(huì)啟動(dòng)一個(gè)run loop
OK 剩下的就是實(shí)現(xiàn)reachabilityChanged:這個(gè)帶有參數(shù)的方法了
//網(wǎng)絡(luò)鏈接改變時(shí)會(huì)調(diào)用的方法
-(void)reachabilityChanged:(NSNotification *)note
{
? ? Reachability *currReach = [note object];
? ? NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
? ? //對(duì)連接改變做出響應(yīng)處理動(dòng)作
? ? self.status = [currReach currentReachabilityStatus];
? ? //如果沒有連接到網(wǎng)絡(luò)就彈出提醒實(shí)況
? ? self.isReachable = YES;
? ??switch (self.status) {
? ? ? ? case?NotReachable:
? ? ? ? {
? ? ? ? ? //各種操作
? ? ? ? ? ? self.isReachable = NO;
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? caseReachableViaWiFi:
? ? ? ? {
? ? ? ? ??//各種操作
? ? ? ? ??self.isReachable = YES;
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? caseReachableViaWWAN:
? ? ? ? {
? ? ? ? ? ? //各種操作
? ? ? ? ? ? self.isReachable = YES;
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? break;
? ? }
}
在其他類里就可以用了~ 想判斷是否有網(wǎng)絡(luò)可以用?isReachable ?想判斷是什么網(wǎng)絡(luò)可以用status~~
轉(zhuǎn)載于:https://www.cnblogs.com/superhappy/archive/2013/04/24/3039682.html
總結(jié)
以上是生活随笔為你收集整理的利用Reachability实现网络状态监听的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打火机会不会引起火灾?
- 下一篇: 数字2怎么读?