iOS开发之联网状态检测

虽然只是一个小功能,感觉还是挺实用的吧!

首先去苹果的官网上下载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

iOS开发之联网状态检测的相关文章

iOS开发之应用内检测手机锁屏,解锁状态

iPhone的锁屏监测分为两种方式监听: 1. 程序在前台,这种比较简单.直接使用Darwin层的通知就可以了: #import #define NotificationLock CFSTR("com.apple.springboard.lockcomplete") #define NotificationChange CFSTR("com.apple.springboard.lockstate") #define NotificationPwdUI CFSTR(&

iOS开发实践之网络检测Reachability

在网络应用开发中,有时需要对用户设备的网络状态进行实时监控,以至于对用户进行友好提示 或者根据不同网络状态处理不一样的逻辑(如视频播放app,根据当前的网络情况自动切换视频清晰度等等).用Reachability实现网络的检测. 苹果官方提供了Reachability的示例程序,便于开发者检测网络状态 https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip 1. 网络状态枚举NetworkS

iOS开发之监测网络状态

一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态 https://developer.apple.com/library/ios/samplecode/Reachabil

iOS开发-关于网络状态的判断

在判断网络状态这个问题上,苹果提供了一个叫Reachability的第三方库,但是这个库并不能真正的检测我们的网络状态,我也是在调试程序的时候发现的.详情可以阅读这个博客http://blog.csdn.net/openglnewbee/article/details/50705146 但是我并没有使用上面博客的方法,而是使用另外一种方法. 因为[Reachability reachabilityWithHostName:]完全没用,所以我把以下代码作为Reachablity类的成员函数添加到R

iOS开发中使用CIDetector检测人脸

在iOS5 系统中,苹果就已经有了检测人脸的api,能够检测人脸的位置,包括左右眼睛,以及嘴巴的位置,返回的信息是每个点位置.在 iOS7中,苹果又加入了检测是否微笑的功能.通过使用 CIDetector可以实现上述功能,一个小demo如下: #import <CoreImage/CoreImage.h> //首先包含响应的头文件 /** * 用来存储检测到的信息 */ @property (nonatomic,strong) NSArray *features; //正式代码如下: UIIm

iOS开发之一句代码检测APP版本的更新-Swift版本

//新建一个NSObject类,将以下代码拷贝到此类中. // // HKCheckVersionManager.swift // ProjectManager // // Created by isHakan on 2017/12/29. // Copyright ? 2017年 liuhuakun. All rights reserved. // import UIKit class HKCheckVersionManager: NSObject { /// app版本更新检测 /// //

李洪强iOS下的实际网络连接状态检测

iOS下的实际网络连接状态检测 序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求.为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示.对绝大部分iOS开发者来说,从苹果示例代码改变而来的各种Reachablity框架是实现这个需求的普遍选择,比如这个库.但事实上,基于此方案的所有实现,都无法帮助我们检测真正的网络连接状态,它们能检测的只是本地连接状态:这种情况包括但不限于如下场景: 1.现在很流行的公用wifi,需要网页鉴权,鉴权之前无法

iOS开发网络篇—监测网络状态

iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态 https://developer.apple.com/library/ios/samp

[iOS 多线程 &amp; 网络 - 2.8] - 检测网络状态

A.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的:(1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)(2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态https://developer.apple.com/library/ios/samplecode/Reachability