iOS判断是否存在网络

Every iPhone developer that has integrated a network connection based application has had to follow the Apple HID (Human Interface Design) rules. This means, that in order to get the Apple reviewers to sign-off on your application,
you have to pass the network connectivity test. Basically, in the case of a catastrophic network disconnect issue with 3G and WiFi does your application properly alert the user that it will not perform properly without the usage of the network? I’ve seen a
lot of workaround techniques where users attempt to do an HTTP GET on say Google or some other website. Clearly, this kind of technique will work sporadically in an unknown environment common to the mobile device. I mean, imagine causing your application users
to sit through a 5-30 second web request timeout. The end-user will probably believe that the application is hung. The ideal solution happens to be handed to us in the API Framework SCNetworkReachability. (Make sure your codebase is linked properly with the
“SystemConfiguration” Framework).

It’s worked for me and I recommend it for doing a simple network connectivity test.

  1. #import <sys/socket.h>
  2. #import <netinet/in.h>
  3. #import <arpa/inet.h>
  4. #import <netdb.h>
  5. #import <SystemConfiguration/SCNetworkReachability.h>
  6. //Snip, you know we‘re in the implementation...

#pragma mark -是否存在网络

- (BOOL)isNetworkReachable{

// Create zero addy

struct
sockaddr_in zeroAddress;

bzero(&zeroAddress,
sizeof(zeroAddress));

zeroAddress.sin_len =
sizeof(zeroAddress);

zeroAddress.sin_family =
AF_INET;

// Recover reachability flags

SCNetworkReachabilityRef defaultRouteReachability =
SCNetworkReachabilityCreateWithAddress(NULL, (struct
sockaddr *)&zeroAddress);

SCNetworkReachabilityFlags flags;

BOOL didRetrieveFlags =
SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);

CFRelease(defaultRouteReachability);

if (!didRetrieveFlags)

{

return
NO;

}

BOOL isReachable = flags &
kSCNetworkFlagsReachable;

BOOL needsConnection = flags &
kSCNetworkFlagsConnectionRequired;

return (isReachable && !needsConnection) ?
YES : NO;

}

看到这个方法非常不错,以达提高自己,方便他人,是为记。

时间: 2024-10-15 23:49:14

iOS判断是否存在网络的相关文章

IOS判断用户的网络类型(2/3/4G、wifi)

直接贴代码吧,ios7之后是获取的较为准确,7以下我拿iphone5测试的是无法区分3g/2g.连iphone4都能升到7.1.4,而且目前主流的设备7以下的系统已经很少了,这个方案尽管不太完美,但影响不会太大   #import <CoreTelephony/CTTelephonyNetworkInfo.h> string GetNetWorkType(){    string strNetworkType = "";        //创建零地址,0.0.0.0的地址表

iOS学习之判断是否有网络的方法

在实际开发中, 会有这样一个需求: 用户在有网的状态下会直接从网络请求数据, 在没网的情况下直接从本地读取数据. 下边的方法可以判断是否有网络. - (BOOL)connectedToNetwork { // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress

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

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

移动开发在路上-- IOS移动开发系列 网络交互四(3)

接着上次的讲,这次我们讲 网络请求的封装  打开创建的项目,让我们一起来继续完成他, 上次我们说到GET请求地址的拼接: 我们接着昨天的继续完善: 下边我们要定义的是 block //定义block __block ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url]; 请求超出时间 //设置请求超出时间 [request setTimeOutSeconds:60]; POST请求参数的处理 //处理POST请求方

移动开发在路上-- IOS移动开发系列 网络交互四(2)

接着上次的讲,这次我们讲 网络请求的封装  打开创建的项目,让我们一起来继续完成他, 首先我们来创建一个NSobject 的文件 圈住出来的轻一点要注意.千万不要搞错了 创建好之后,开始编写代码, 我们第一不要要先把工程文件引用进来 看图 让后我们定义一下接口  和 一个block //block定义 typedef void(^RequestFinishBlock)(id result); 1 @interface ZWJDataService : NSObject 2 3 //定义接口 4

iOS微信支付4G网络下无法调用的坑

<iOS微信支付4G网络下无法调用的坑> 博文链接:http://www.jianshu.com/p/749cd156d598

iOS 判断是push还是present

iOS 判断是push还是present下面这种方法判断成功了  if (self.presentingViewController)   {      [weakSelf dismissViewControllerAnimated:YES completion:nil];    }    else {       [weakSelf.navigationController popViewControllerAnimated:YES];      }

iOS开发中的网络请求

今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST.今天来看一下四种网络请求的实现方式. 一.同步GET // 1.将网址初始化成一个OC字符串对象 NSString *urlStr = [NSString stringWithFormat:@"%@?query=%@&region=%@&output=json&ak=6E823

iOS判断为空或者只为空格

本文转载至 :http://www.cnblogs.com/superhappy/archive/2012/11/08/2761403.html 经常有需求 要判断不能为空,后台老是鄙视不做非空判断的前端 ,木办法 只能写一个. 第一种想法:我不就是判断 是不是nil就可以了么.结果发现太天真,用户可以输入空格. 对于这种蛋疼的用户,只能采取蛋疼的方法: -(Bool) isEmpty:(NSString *) str { if (!str) { return true; } else { //