监听网络状态

如果用系统的方法需要导入 Reachability.h Reachability.m

@interface ViewController ()
@property (nonatomic, strong) Reachability r1; /*< <#属性名#> */

@end

@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    /*
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// nullable : 代表可以为nil
// __nonnull : 代表不能为nil
[manager GET:@"www.520it.com" parameters:nil success:^ void(NSURLSessionDataTask * task, id responseObjc) {
NSLog(@"成功的回调");
} failure:^ void(NSURLSessionDataTask * task, NSError * error) {
NSLog(@"失败的回调");
}];
*/

// 1.创建Reachability对象
self.r1 = [Reachability reachabilityForLocalWiFi];
// 2.给Reachability对象注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
// 3.让Reachability对象发送网络改变的通知
[self.r1 startNotifier];

}

  • (void)dealloc
    {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    }

  • (void)getNetworkStatus
    {
    if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
    NSLog(@"当前是蜂窝网");
    }else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable)
    {
    NSLog(@"当前是蜂窝网");
    }else
    {
    NSLog(@"没有网络");
    }
    }

  • (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent )event
    {
    /

    // 1.创建Reachability对象
    // 创建一个蜂窝网的Reachability对象
    Reachability *r1 = [Reachability reachabilityForInternetConnection];
    // 2.获取当前对象的网络状态, 如果不是NotReachable值, 那么就代表当前的网络状态是我们创建的类型
    if(r1.currentReachabilityStatus != NotReachable)
    {
    NSLog(@"当前是蜂窝网");
    }
    // 创建一个局域网的Reachability对象
    Reachability *r2 = [Reachability reachabilityForLocalWiFi];
    if(r2.currentReachabilityStatus != NotReachable)
    {
    NSLog(@"当前是蜂窝网");
    }
    */

}

  • (void)afnReachability
    {
    // 1.创建网络监听管理者
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

    // 2.设置网络变化的回调
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    // 只要用户的网络发生改变, 就会调用这个block
    /*
    AFNetworkReachabilityStatusUnknown = 不能识别,
    AFNetworkReachabilityStatusNotReachable = 没有网络,
    AFNetworkReachabilityStatusReachableViaWWAN = 蜂窝网,
    AFNetworkReachabilityStatusReachableViaWiFi = 局域网,
    */
    switch (status) {
    case AFNetworkReachabilityStatusReachableViaWWAN:
    NSLog(@"蜂窝网");
    break;
    case AFNetworkReachabilityStatusReachableViaWiFi:
    NSLog(@"局域网");
    break;
    case AFNetworkReachabilityStatusNotReachable:
    NSLog(@"没有网络");
    break;
    default:
    NSLog(@"不能识别");
    break;
    }
    }];

    // 3.开始监听
    [manager startMonitoring];
    }

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 项目中用到了BroadcastReceiver监听网络状态的改变用以控制下载任务的暂停或继续,原来是在And...
    小贱嘎嘎阅读 5,135评论 0 0
  • 一般我们在开发iOS项目的过程中,会使用第三方库Reachability来监听网络状态,区分网络类型(2G,3G,...
    Daniel_颜世玉阅读 12,299评论 4 10
  • 监听网络状态 在日常开发中,我们经常会遇到这种情况,需要我们对手机的网络状态进行监听 比如:播放视频需要提示是4G...
    Coder007阅读 3,008评论 0 0
  • 晨练 晨练 清风徐徐拂面 健康需要锻炼 愿我亲们平安 蓝天 蓝天 雄鹰翱翔天边。
    高原_4697阅读 1,846评论 1 1
  • 文:微笑鱼儿图片来自网络 刷朋友圈时看到有老干部的新片《28岁未成年》,看了简介。 大意是说28岁轻熟女青年凉夏与...
    微笑鱼儿阅读 5,679评论 9 3