IOS网络访问之获取网络状态

苹果设备的网络状况多变,既可能有网,也可能网络断开,既可能通过wifi联网,也可能通过蜂窝数据联网,很多时候我们需要获知程序当前运行在何种网络状况下

我们可以在苹果官方下载工具类Reachability,解压后将Reachability.h和Reachability.m添加到我们的项目中

示例1:查看当前的网络环境(通过访问一个页面测试网络状况)

Reachability *reach = [Reachability reachabilityWithHostName:@"http://www.cnblogs.com/zanglitao/"];

    switch([reach currentReachabilityStatus]) {
        case NotReachable:
        NSLog(@"无法访问");
        break;

        case ReachableViaWiFi:
        NSLog(@"使用wifi");

        case ReachableViaWWAN:
        NSLog(@"使用蜂窝数据");
    }

示例2:测试手机是否连接wifi(或者蜂窝)

if([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable) {
        NSLog(@"wifi网络可用");
    }

if([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable) {
        NSLog(@"蜂窝网络可用");
    }

示例3:监听网络变化

我们通过Reachability对象的startNotifier方法开启通知,当网络变化时Reachability会发出kReachabilityChangedNotification的通知给默认的通知中心

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(netStatusChange:) name:kReachabilityChangedNotification object:nil];
    Reachability *reach = [Reachability reachabilityWithHostName:@"http://www.cnblogs.com/zanglitao/"];
    [reach startNotifier];//[reach stopNotifier];

    return YES;
}

- (void)netStatusChange:(NSNotification *)note {
    Reachability *reach = [note object];
    //获取当前网络状态
    NetworkStatus *status = [reach currentReachabilityStatus];

}
时间: 2024-10-05 11:30:17

IOS网络访问之获取网络状态的相关文章

Android网络编程之获取网络上的XML

Android网络编程之获取网络上的XML 请尊重他人的劳动成果,转载请注明出处:Android网络编程之获取网络上的XML 为要获取网络上的XML所以需要服务器端提供的支持. 一.创建服务器端: 服务器端项目结构: 服务器端运行效果图: 第一步:创建业务所需的JavaBean package com.jph.server.model; import java.util.Date; /** * 新闻实体类 * @author jph * Date:2014.09.26 */ public cla

Android网络编程之获取网络上的Json

Android网络编程之获取网络上的Json 请尊重他人的劳动成果,转载请注明出处:Android网络编程之获取网络上的Json 为要获取网络上的Json所以需要服务器端提供的支持. 一.创建服务器端: 服务器端项目结构: 服务器端运行效果图: 第一步:创建业务所需的JavaBean package com.jph.sj.model; import java.util.Date; /** * 新闻实体类 * @author jph * Date:2014.09.26 */ public clas

iOS 获取网络状态

在iOS开发者,获取网络状态比较常用 -(NSString *)getNetWorkStates{ UIApplication *app = [UIApplication sharedApplication]; NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews]; NSString *state = nil; int n

iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)

前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也分为2G/3G/4G等不同制式.而不同的网络制式又对用户体验产生 较为明显的影响(对于依赖网络的项目而言).因此很有必要对不同的网络制式作相应的优化. 而在iOS当中,无论是苹果官方提供的Reachability类还是较为常用的第三方网络类AFNetworking,它们提供的网络环境判断也仅限 于W

IOS网络访问之使用AFNetworking

IOS网络访问之使用AFNetworking AFNetworking是IOS上常用的第三方网络访问库,我们可以在github上下载它,同时github上有它详细的使用说明,最新的AFNetworing2.0与1.0有很大的变化,这里仅对2.0常用的使用方法进行总结 基于NSURLConnection的API 提交GET请求 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [man

ios网络访问接口-NSURLSession与NSURLConnection的区别

AFNetworking是日常开发中最常用的网络框架,现在我们使用的版本是3.0版,3.0与2.0版最大的区别就是,AFNetworking 2.0使用NSURLConnection的基础API ,而3.0是完全基于NSURLSession的API,已经抛弃了NSURLConnection.而NSURLSession可以看作是是NSURLConnection 的替代者,在2013年苹果全球开发者大会(WWDC2013)随ios7一起发布,是对NSURLConnection进行了重构优化后的新的网

IOS网络访问之使用AFNetworking<2>

IOS网络访问之使用AFNetworking AFNetworking是IOS上常用的第三方网络访问库,我们可以在github上下载它,同时github上有它详细的使用说明,最新的AFNetworing2.0与1.0有很大的变化,这里仅对2.0常用的使用方法进行总结 基于NSURLConnection的API 提交GET请求 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [man

IOS网络访问之NSURLConnection

IOS网络访问主要建立在http协议上 IOS提供了几个重要的对象完成http请求响应 NSURLRequest:代表一个请求,通过NSURLRequest可以设置请求的URL地址以及缓存策略 NSMutableURLRequest:NSURLRequest的子类,可以方便地设置请求头的各种信息以及请求方式 NSURLConnection:网络访问对象,可以通过同步或者异步的方式发送请求 - (void)viewDidLoad { [super viewDidLoad]; // Do any a

IOS网络访问之NSURLSession

NSURLSession是IOS7中新添加的网络访问接口,作用与NSURLConnection一致,在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.如果用户强制将程序关闭,NSURLSession会断掉. NSURLSession中关键类有下面几种 1:NSURLSessionConfiguration:用于配置NSURLSession工作模式以及网络设置 工作模式分为下面三种: 普通模式(default):可以使用缓存 + (NSURLSessionC