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
ios网络开发 网络状态检查的更多相关文章
- iOS开发网络篇—监测网络状态(转)
文章转载自:http://www.cnblogs.com/wendingding/p/3950114.html iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时 ...
- iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全
一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...
- iOS开发网络篇—监测网络状态
iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...
- iOS 开发网络篇—监测网络状态
iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...
- iOS开发系列--网络开发
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...
- IOS网络开发概述
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...
- iOS开发网络篇—简单介绍ASI框架的使用
iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...
- iOS开发网络篇—HTTP协议
iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
- iOS开发网络篇—网络编程基础(二)
下面叙述的是关于几个必须要知道的iOS网络编程入门级别的要点: 1.客户端如何找到连接的服务器 客户端通过URL找到想要连接的服务器 2.什么是URL URL的全称是Un ...
随机推荐
- Vm-Ubuntu下配置Qt开发环境
在昨天的Ubuntu换降下,安装Qt发现编译的时候是缺少opengl的 奈何找了好多方式都无法安装opengl 今天看到另一位大神写的,才发下自己找的还是有问题 大神帖子网址:http://blog. ...
- 使用git创建分支
Git大法好--3.Git分支本地操作详解 这时已经切换到了dingBranch分支下面了,在项目文件夹下添加一个dingBranchtest.txt文件,然后提交到本地仓库和远程仓库: git ad ...
- hadoop 环境配置
HADOOP_HOME E:\tool\eclipse\hadoop-2.7.3 HADOOP_USER_NAME ambari-qa path: %HADOOP_HOME%/bin
- redis基础和通用key操作
redis是什么? redis开源的,构建于内存的数据结构的nosql数据库.常被用于数据存储,缓存处理和消息处理. redis的优势? 1.极高的读写能力 2.丰富的数据类型 3.原子性操作 4.支 ...
- Python不同进制之间的转换
不同的进制 二进制 0b101 以数字0和字母b打头的表示二进制数 如果出现大于等于2的数 会抛出SyntaxError异常 八进制 0711 以数字0打头的数字表示八进制数 如果出现大于 ...
- C#数据库连接问题
最近在看C#,今天下午刚开始接触C#的数据库连接,SQL Server2008,问题如图:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名 ...
- 算法(3)Rotate Array
题目:将一个n个元素的数组右移k位,比如n=7,k=3,对数组[1,2,3,4,5,6,7]作如下旋转[5,6,7,1,2,3,4] 思路:[5,6,7,1,2,3,4],不知大家看出来了没有呢,两次 ...
- EF 4.0 升级到 6.0 问题解决办法
1.工具->库程序包管理器-> 管理解决方案的Nuget 程序包 找到EntityFramework 管理,勾选把需要进入 EF6.0的 项目,进行升级.
- [BZOJ1921] [CTSC2010]珠宝商
Description Input 第一行包含两个整数 N,M,表示城市个数及特征项链的长度. 接下来的N-1 行, 每行两个整数 x,y, 表示城市 x 与城市 y 有直接道路相连.城市由1~N进行 ...
- MySQL触发器写法
触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/dele ...