虽然只是一个小功能,感觉还是挺实用的吧!
首先去苹果的官网上下载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]; }
时间: 2024-12-25 22:30:56