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 ...
随机推荐
- Wannafly挑战赛21:C - 大水题
链接:Wannafly挑战赛21:C - 大水题 题意: 现在给你N个正整数ai,每个数给出一“好数程度” gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位 ...
- 九度OJ--1165(C++)
#include <iostream>#include <string>#include <vector> using namespace std; int mai ...
- NO6——KMP
int next[N]; char str1[M],str2[N]; //str1 长,str2 短 //len1,len2,对应str1,str2的长 void get_next(int len2) ...
- Java IO流-File类的使用示例-创建文件夹和文件的正确方法
当创建一个文件时,比如:E:\\test\\test.txt,此时若文件夹test不存在,那么直接创建文件会出错,故首先要判断文件夹是否存在,不存在的话要首先创建文件夹. public class F ...
- 浅谈C#中show和showDialog的区别
[转载] A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDialog方法 (窗体显示为模式窗体) Form.Show方法 (窗体显示为无模式窗体) 2者具体区别如 ...
- 浅谈c语言和c++中struct的区别
今天做二叉树的时候,发现利用结构体有点乱,不知道怎么回事,我之前知道c语言中声明一个结构体变量时需要通过 struct 结构体名 变量名,而在c++中,可以不要struct,由于可以利用typedef ...
- lintcode-115-不同的路径 II
115-不同的路径 II "不同的路径" 的跟进问题: 现在考虑网格中有障碍物,那样将会有多少条不同的路径? 网格中的障碍和空位置分别用 1 和 0 来表示. 注意事项 m 和 n ...
- System and Device power management.
Advanced Configuration and Power Management Interface(ACPI)是由Intel,Microsoft等厂家订的一套Spec,规范了OS,APP对于电 ...
- [转]网页ContentType详细列表
本文转自:来老师的专栏 http://blog.csdn.net/sweetsoft/article/details/6512050 不同的ContentType 会影响客户端所看到的效果.默认的 ...
- 【其他】Windows 系统安装IIS 打开页面出现空白解决方案
部署IIS过程中遇到了一个奇怪的问题,就是怎么设置打开的页面都是一篇空白,IIS也没有任何报错,翻遍互联网好不容易找到了解决方法,今天就教给大家,希望大家不要走弯路.此方法Windows xp.7.8 ...