標籤:
雖然只是一個小功能,感覺還是挺實用的吧!
首先去蘋果的官網上下載Reachability這個庫。
因為連網的狀態是要即時監聽的,當網路的情況發生變化的時候要及時通知使用者,所以應該使用通知中樞。
具體實現:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //不能寫在viewDidLoad網路的情況發生變化的時候要提醒 //判斷能否串連到某一個主機(一般使用百度,他的伺服器基本不會斷) self.reach = [Reachability reachabilityWithHostName:@"baidu.com"]; //添加一個通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(abilityChanged) name:kReachabilityChangedNotification object:nil]; [self.reach startNotifier];}- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context { NSLog(@"%@",change);}- (void)abilityChanged { //狀態 switch (self.reach.currentReachabilityStatus) { case NotReachable: { [self showMessage:@"小夥子沒有串連哦"]; } break; case ReachableViaWiFi: { [self showMessage:@"小夥子有WIFI咯"]; NSLog(@"不用花錢"); } break; case ReachableViaWWAN: {
[self showMessage:@"當前網路狀態為2G/3G/4G"]; NSLog(@"要流量"); } break; default: { NSLog(@"不太清楚"); } break; }}- (void)showMessage:(NSString *)title { UIAlertController *alertCtr = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:alertCtr animated:YES completion:nil];}- (void)dealloc { //停止監聽 [self.reach stopNotifier]; //移除監聽 [[NSNotificationCenter defaultCenter] removeObserver:self];}
iOS開發之連網狀態檢測