开源中国iOS客户端学习——(六)网络连接检测

转载 2013年12月02日 17:44:33

         开源中国iOS客户端基于网络同步数据,从而达到与网页看到同样数据效果,所以在启动程序的时候需要检查网络;这也是每一个联网应用启动的第一步,如果联网应用没有检查网络,苹果公司将不予以审核通过;

       开源中国iOS客户端大牛们在写网络检测时很迷惑人,开始以为他们用的是ASI类库做的网络检测,今天才看明白,他们并不是用的ASI类库检测,而是用到AFNetworking这个类库里一个实例方法做网络连接检测;


先看Appdelegate文件:

在application:didFinishLaunchingWithOptions:方法里

  1. //检查网络是否存在 如果不存在 则弹出提示  
  2.     [Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork];  

在applicationDidBecomeActive:方法里

  1. - (void)applicationDidBecomeActive:(UIApplication *)application  
  2. {  
  3.       
  4.     [Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork];  
  5.     if ([Config Instance].isNetworkRunning == NO) {  
  6.         UIAlertView *myalert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"未连接网络,将使用离线模式" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:nil,nil];  
  7.         [myalert show];  
  8.     }  
  9. }  

都用到了[Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork];再看看Config和CheckNetwork这两个类定义

Config类的Instance方法,

  1. static Config * instance = nil;  
  2. +(Config *) Instance  
  3. {  
  4.     @synchronized(self)  
  5.     {  
  6.         if(nil == instance)  
  7.         {  
  8.             [self new];  
  9.         }  
  10.     }  
  11.     return instance;  
  12. }  
从字面意思也能推测出是给Cinfig类实例化用的,isNetworkRunning是BOOL型变量

CheckNetwork在ASIHttp文件里,和ASI类库放到一块的,(里面汉字出现乱码)

  1. +(BOOL)isExistenceNetwork  
  2. {  
  3. //  BOOL isExistenceNetwork;  
  4. //  Reachability *r = [Reachability reachabilityWithHostName:@"www.oschina.net"];  
  5. //    switch ([r currentReachabilityStatus]) {  
  6. //        case NotReachable:  
  7. //          isExistenceNetwork=FALSE;  
  8. //            //   NSLog(@"娌℃湁缃戠粶");  
  9. //            break;  
  10. //        case ReachableViaWWAN:  
  11. //          isExistenceNetwork=TRUE;  
  12. //            //   NSLog(@"姝e湪浣跨敤3G缃戠粶");  
  13. //            break;  
  14. //        case ReachableViaWiFi:  
  15. //          isExistenceNetwork=TRUE;  
  16. //            //  NSLog(@"姝e湪浣跨敤wifi缃戠粶");          
  17. //            break;  
  18. //    }  
  19. //  return isExistenceNetwork;  
  20.       
  21.     return YES;  
  22. }  
本来是使用苹果官方提供的Reachability来检测网络连接状况,但是大牛们又给注释掉了,return YES;

也就是[Config Instance].isNetworkRunning=YES;

但是当我把iMac网线拔掉运行的时候却能检测出网络无连接,通过查找 “错误 网络无连接”

  

发现他们都在AFNetworking类库

- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure  方法里面,

这个方法使用AFHTTPRequestOperation和“PATCH”请求HTTP客户端操作队列,使用到了block块(iOS 4.0+特性),URL请求成功执行success块里操作,这里面block块没有返回值,接受两个参数,创建请求操作和响应数据请求,URL请求失败执行failure里面的方法,这个block块里仍没有返回值,接受两个参数创建请求操作和NSError对象,描述网络或解析错误状况;

所以才有了上面截图中网络的连接检测,拿源码中一处来举例




正在学习过程中,错误之处请指正,欢迎交流,共同学习;

欢迎转载分享,请注明出处http://blog.csdn.net/duxinfeng2010

开源中国iOS客户端学习——(六)网络连接检测

开源中国iOS客户端基于网络同步数据,从而达到与网页看到同样数据效果,所以在启动程序的时候需要检查网络;这也是每一个联网应用启动的第一步,如果联网应用没有检查网络,苹果公司将不予以审核通过;     ...
  • duxinfeng2010
  • duxinfeng2010
  • 2013年01月03日 10:06
  • 19427

开源中国iOS客户端学习——(六)网络连接检测

开源中国iOS客户端基于网络同步数据,从而达到与网页看到同样数据效果,所以在启动程序的时候需要检查网络;这也是每一个联网应用启动的第一步,如果联网应用没有检查网络,苹果公司将不予以审核通过;  ...
  • qingsi00
  • qingsi00
  • 2013年01月07日 14:28
  • 799

开源中国源码分析(一)

咨讯详情页面分析 布局页面文件fragment_general_news_detail.xml布局文件中包含上滑评论条隐藏,下滑评论条显示 相关推荐、相关评论布局是通过继承LinearLayout再填...
  • hard_working1
  • hard_working1
  • 2016年08月19日 18:21
  • 2687

ios学习(六) 网络连接检测

开源中国iOS客户端基于网络同步数据,从而达到与网页看到同样数据效果,所以在启动程序的时候需要检查网络;这也是每一个联网应用启动的第一步,如果联网应用没有检查网络,苹果公司将不予以审核通过; 开...
  • zengdeqing2012
  • zengdeqing2012
  • 2015年05月15日 10:13
  • 291

开源中国IOS客户端学习

上一篇博客  开源中国iOS客户端学习——(十一)AES加密 中提到将用户名和密码保存到了本地沙盒之中,在从本地读取用户名和密码,这是一个怎样的过程? [cpp] view ...
  • q790522091
  • q790522091
  • 2014年08月30日 17:45
  • 346

iOS开发之网络连接检测

开源中国iOS客户端基于网络同步数据,从而达到与网页看到同样数据效果,所以在启动程序的时候需要检查网络;这也是每一个联网应用启动的第一步,如果联网应用没有检查网络,苹果公司将不予以审核通过;  ...
  • Bonway_Huang
  • Bonway_Huang
  • 2015年12月14日 22:24
  • 3048

开源中国IOS客户端

大牛新开发的开源中国研究!
  • superchaoxian
  • superchaoxian
  • 2014年05月05日 10:34
  • 1051

用开源中国(oschina)Git管理代码

简介 开源中国提供了Git服务(地址:http://git.oschina.net/),在速度上比国外的github要快很多。使用了一段时间,感觉很不错。oschina git提供了演示平台...
  • luanxuye
  • luanxuye
  • 2016年12月27日 10:12
  • 652

开源中国iOS客户端学习——(一)Prefix.pch文件

当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文件的文件,pch全称是“precompiled header”,也就是预编译头文件,该文件...
  • hwj2012
  • hwj2012
  • 2013年08月04日 20:43
  • 996

开源中国iOS客户端学习——MBProgressHUD特效

在开源中国iOS客户端中也用到了MBProgressHUD这个特效,主要作用为应用显示一个过渡的作用,常用于打开一个联网页面加载过程,防止出现假死现象,如果网速慢则告诉用户已经在很努力很努力的加载中。...
  • junjianzhang
  • junjianzhang
  • 2015年04月13日 23:14
  • 132
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开源中国iOS客户端学习——(六)网络连接检测
举报原因:
原因补充:

(最多只允许输入30个字)