ios网络开发 网络状态检查

http://www.cnblogs.com/hanjun/archive/2012/12/01/2797622.html

网络连接中用到的类:

一.Reachability 

    1.添加 Reachability 的.h和.m文件,再添加SystemConfiguration.framework。

    2.Reachability中定义了三种网络状态:

  typedef Num{

NotReachable = 0,  //无连接

ReachableViaWiFi,  //使用3G/GPRS网络

ReachableViaWWAN   //使用WiFi网络

       }NetworkStatus;

     3.示例:

  Reachability *reachability = [Reachablity  reachabilityWithHostName:@"www.baidu.com"];

  switch([reachabilityStatus]){

case  NotReachable:

//TODO 

break; 

case  ReachableViaWiFi:

//TODO  

break; 

case  ReachableViaWWAN:

//TODO  

break;  

 } 

      4.检查当前网络环境

程序启动时,如果想检测可用的网络环境,可以像这样来使用

  //是否wifi

+ (BOOL)isEnableWIFI 

{

return ([[Reachability reachabiliyForLocalWIFI] currentReachabilityStatus] != NotReachable); 

   }

 

   //是否3G

+ (BOOL)isEnable3G

{

return ([[Reachability reachabiliyForInternetConnetion] currentReachabilityStatus] != NotReachable); 

   }

 

   示例:

- (void)viewWillAppear:(BOOL)animated


  if (([Reachability reachabiliyForInternetConnetion].currentReachabilityStatus == NotReachable) && [Reachability                         reachabiliyForLocalWIFI].currentReachabilityStatus == NotReachable))

{

self.navigationItem.hidesBackButton = YES;

[self.navigationItem setLeftBarButtonItem:nil animated:NO]; 


 

 } 

 

       5.链接状态的实时通知

实时检查,持续状态发生变化时,需要及时地通知用户:

 

复制代码
Reachability 1.5版本
//MyAppDelegate.h

#import "Reachability"

@interface MyAppDelegate:NSObject<UIApplicationDelegate>
{
    
}

@property NetworkStatus remoteHostStatus;

@end 
复制代码

 

 //MyAppDelegate.m

复制代码

#import "MyAppDelegate.h"

@implementation MyAppDelegate
@synthesize remoteHostStatus;

//更新网络状态
- (void)updateStatus
{
    self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus];
}

//通知网络状态
- (void)reachabilityChanged:(NSNotification *)note
{
    [self updateStatus];
    if (self.remoteHostStatus == NotReachable)
   {
       UIAlert *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName",nil)
  message: NSLocalizedString (@"NotReachable",nil);
  delegate:nil cancelButtonTitle:@"OK" 
  otherButtonTitles:nil];

   [alert show];
   [alert release];
    }
}


//程序启动器,启动网络监视
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
   //设置网络监测的站点
   [[Reachability sharedReachability] setHostName:@"www.baidu.com"];
   [[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES];

   //设置网络状态变化时的通知函数
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) 
name:@"kNetworkReachabilityChangedNotification" object:nil];
   [self updateStatus];


}

- (void)dealloc
{
    //删除通知对象
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [window release];
    [super dealloc];
}
复制代码

 

 

复制代码
Reachability 2.0版本
//MyAppDelegate.h

#import "Reachability"
@class Reachability;
@interface MyAppDelegate:NSObject<UIApplicationDelegate>
{
     Reachability *hostReach;
}


@end 
 
 //MyAppDelegate.m

#import "MyAppDelegate.h"

@implementation MyAppDelegate

//通知网络状态
- (void)reachabilityChanged:(NSNotification *)note
{
    Reachability *currentReach = [note object];
    NSParameterAssert([currentReach isKindOfClass:[Reachability class]]);
    NetworkStatus status = [currentReach currentReachabilityStatus]; 

    if (status == NotReachable)
   {
       UIAlert *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName",nil)
  message: NSLocalizedString (@"NotReachable",nil);
  delegate:nil cancelButtonTitle:@"YES" 
  otherButtonTitles:nil];

   [alert show];
   [alert release];
    }
}


//程序启动器,启动网络监视
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
   //....

   //监测网络情况
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) 
name:@"kNetworkReachabilityChangedNotification" object:nil];
  hostReach = [[Reachability reachabilityWithHostName:@"www.baidu.com"] retain];
 // hostReach startNotifer]; 
   //...


}
复制代码

 

 

二、其他常用的类。

 1.NSURL

 2.NSURLRequest

 3.NSMutableURLRequest 是NSURLRequest的子类,可以设置一些请求参数

 4.NSURLResponse 

 5.NSError 

转载于:https://www.cnblogs.com/xuejinhui/p/4469624.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

delphi xe4 ini文件不能读取的解决方法

今天发现用inifiles下 tinifile.readstring方法突然不能读数据了&#xff0c;结果把ini文件格式由utf-8改成unicode后就能正常读取了。转载于:https://www.cnblogs.com/liqiao/p/3503985.html

《众妙之门——网页排版设计制胜秘诀》——3.4 展现品牌视觉的同时保持网页的可读性...

本节书摘来自异步社区《众妙之门——网页排版设计制胜秘诀》一书中的第3章&#xff0c;第3.4节&#xff0c;作者&#xff1a; 【德】Smashing Magazine 译者&#xff1a; 侯景艳 , 范辰 更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.4 展现品牌视觉的同时保持网页的…

vs2013创建及使用DLL

这几天看了许多关于生成Dll的博文&#xff0c;很有感触&#xff0c;遂整理在此&#xff0c;以供自己后续参考。 VS2013创建DLL 我们使用vs2013来生成Dll&#xff0c;其实使用其他的版本也是同理如此。步骤如下&#xff1a; 单击“新建项目”&#xff0c;选择“Win32 项目”&a…

python的作用域分别有几种_python中作用域与函数嵌套

知识回顾&#xff1a; 拆解传参。 1.字典传参。使用** 2.列表传参。使用* 实际上我们在定义函数的时候&#xff0c;如果省略了星号&#xff0c;那么在调用函数的时候必须要省略星号&#xff0c;除非我们拆解后的参数个数刚好相等。 视频内容 本节知识视频教程 文字讲解开始&…

这个博客的由来

笔者从事电信行业大型商业智能系统工作多年&#xff0c;日前从事B2C电商网站类数据分析工作&#xff0c;特开设此微博&#xff0c;在发表好文同时&#xff0c;研究网站分析技术。转载于:https://www.cnblogs.com/sambazhu/p/3508633.html

《Axure RP8 网站和APP原型制作 从入门到精通》一2.7 交付

本节书摘来自异步社区《Axure RP8 网站和APP原型制作 从入门到精通》一书中的第2章&#xff0c;第2.7节&#xff0c;作者 金乌&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 2.7 交付 模型一旦经过批准&#xff0c;我们就可以进入切图和优化图像环节了。我…

iOS UISegmentedControl 的使用

当用户输入不仅仅是布尔值时&#xff0c;可使用分段控件&#xff08;UISegmentedControl&#xff09;。分段控件提供一栏按钮&#xff08;有时称为按钮栏&#xff09;&#xff0c;但只能激活其中一个按钮。分段控件会导致用户在屏幕上看到的内容发生变化。它们常用于在不同类别…

js粘贴板为什么获取不到图片信息_【第1829期】复制黏贴上传图片和跨浏览器自动化测试...

前言这个操作体验倒是不错。今日早读文章由丁香园蒋璇投稿分享。蒋璇, 前端开发攻城狮, 现任职于丁香园. 英语爱好者, 测试驱动开发(TDD)&行为驱动开发(BDD)推崇者. 先专注于 https://github.com/Jiang-Xuan/tuchuang.space 项目的测试驱动开发探索正文从这开始~~在网页中上…

在C++中调用DLL中的函数

&#xfeff;转载自&#xff1a;http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   应用程序使用DLL可以采用两种方式&#xff1a;一种是隐式链接&#xff0c;另一种是显式链接。在使用DLL之前首先要知道DLL中函数的结构信息。Visual C6.0&#xff08;或者更先进的版…

CentOS LVS安装配置

目录(?)[] 一般2.6.10以上内核版本都已经自带了ipvsadm,故不需要安装。 Ipvs 1.25编译 ipvsadm-1.25编译不过 去掉netlink库的依赖&#xff1a;去掉libipvs/Makefile的CFLAGS -DLIBIPVS_USE_NL&#xff0c;去掉Makefile的LIBS -lnl。需要popt库解析命令行&#xff0c;在这里…

《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一2.7 横式构图和竖式构图...

本节书摘来自异步社区出版社《淘宝网开店 拍摄 修图 设计 装修 实战150招》一书中的第2章&#xff0c;第2.7节&#xff0c;作者&#xff1a; 葛存山&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.7 横式构图和竖式构图 横幅画面&#xff0c;即画面底边…

Node.js初接触(一)

本来还在纠结着到底要学哪一种后台语言呢&#xff0c;突然发现node.js很火&#xff0c;既然能被这么多人推崇&#xff0c;自然是有他的优势的。去百度百科看了一眼&#xff0c;或许是我理解能力太差&#xff0c;并没有了解到很多关于node.js的东西&#xff0c;大概就是知道了No…

python request file upload_Python基于requests实现模拟上传文件

方法1&#xff1a; 1.安装requests_toolbelt依赖库 #代码实现 def upload(self): login_token self.token.loadTokenList() for token in login_token: tempPassword_url self.config[crm_test_api]/document/upload tempPassword_data self.data_to_str.strToDict(title:1.…

MATLAB中的randi函数

randi Pseudorandom integers from a uniform discrete distribution.来自一个均匀离散分布的伪随机整数 R randi(IMAX,N) returns an N-by-N matrix containing pseudorandom integer values drawn from the discrete uniform distribution on 1:IMAX.返回一个NN的包含伪随机…

C++ dll的隐式与显式调用

&#xfeff;&#xfeff;&#xfeff;转载自&#xff1a;http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   应用程序使用DLL可以采用两种方式&#xff1a;一种是隐式链接&#xff0c;另一种是显式链接。在使用DLL之前首先要知道DLL中函数的结构信息。Visual C6.0&…

《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...

本节书摘来自异步社区《OpenGL ES 2.0游戏开发&#xff08;上卷&#xff09;&#xff1a;基础技术和典型案例》一书中的第6章&#xff0c;第6.5节光照的每顶点计算与每片元计算&#xff0c;作者 吴亚峰&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 6.5 光照…

毛笔笔锋算法IOS版

http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/#.VUln2_mqpBe转载于:https://www.cnblogs.com/wangjinming/p/4481145.html

USE PDFCREATE TO CREATE A PDF FILE

来源&#xff1a;http://www.pdfforge.org/files/old_forum/1002.html a working sample with C & COM 2007-08-15 22:56:18 by eckart hi, here is a working sample of how to use PDFCreator in Visual C (after searching on internet for something similar I guess t…

python将一行作为字段_关于python:Django admin在同一行显示多个字段

我已经创建了一个模型&#xff0c;它将自动显示模型中的所有字段&#xff0c;并将其显示在管理页面上。 现在&#xff0c;我有一个问题&#xff0c;我希望在同一行中有两个字段&#xff0c;为此&#xff0c;我必须在modeladmin中指定字段集&#xff1a; 1 2 3 4 5fieldsets ( …

c++显式加载dll并使用DLL的类

转载自&#xff1a; &#xfeff;&#xfeff;http://blog.163.com/tianjunqiang666126/blog/static/8725911920121064573594/ 首先需要强调&#xff0c;当使用某个类时一般目的有二&#xff1a;实例化成对象或者继承它产生新类。对于前者&#xff0c;我们可以构造一个抽象类&a…