【ios开发】如何判断当前网络连接状态(网络是否正常)
来源:互联网 发布:linux 目录映射 编辑:程序博客网 时间:2024/04/30 00:22
转载自:http://www.yifeiyang.net/iphone-web-development-skills-of-the-article-4-make-sure-the-network-environment-3gwifi/
感觉不错。先留着。
然后将Reachability.h 和 Reachability.m 加到自己的项目中,并引用 SystemConfiguration.framework,就可以使用了。
Reachability 中定义了3种网络状态:
// the network state of the device for Reachability 1.5.typedef enum { NotReachable = 0, //无连接 ReachableViaCarrierDataNetwork, //使用3G/GPRS网络 ReachableViaWiFiNetwork //使用WiFi网络} NetworkStatus;
// the network state of the device for Reachability 2.0.typedef enum { NotReachable = 0, //无连接 ReachableViaWiFi, //使用3G/GPRS网络 ReachableViaWWAN //使用WiFi网络} NetworkStatus;
比如检测某一特定站点的接续状况,可以使用下面的代码:
Reachability *r = [Reachability reachabilityWithHostName:@“www.apple.com”];switch ([r currentReachabilityStatus]) { case NotReachable: // 没有网络连接 break; case ReachableViaWWAN: // 使用3G网络 break; case ReachableViaWiFi: // 使用WiFi网络 break;}
检测当前网络环境:
// 是否wifi+ (BOOL) IsEnableWIFI { return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);}// 是否3G+ (BOOL) IsEnable3G { return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);}
连接状态实时通知
网络连接状态的实时检查,通知在网络应用中也是十分必要的。接续状态发生变化时,需要及时地通知用户。由于Reachability1.5版与2.0版有一些变化,这里分开来说明使用方法。
Reachability 1.5
// My.AppDelegate.h#import "Reachability.h"@interface MyAppDelegate : NSObject <UIApplicationDelegate> { NetworkStatus remoteHostStatus;}@property NetworkStatus remoteHostStatus;@end// My.AppDelegate.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) { UIAlertView *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.apple.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@class Reachability;@interface MyAppDelegate : NSObject <UIApplicationDelegate> { Reachability *hostReach;}@end// MyAppDelegate.m- (void)reachabilityChanged:(NSNotification *)note { Reachability* curReach = [note object]; NSParameterAssert([curReach isKindOfClass: [Reachability class]]); NetworkStatus status = [curReach currentReachabilityStatus]; if (status == NotReachable) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AppName"" message:@"NotReachable" delegate:nil cancelButtonTitle:@"YES" otherButtonTitles:nil]; [alert show]; [alert release]; }}- (void)applicationDidFinishLaunching:(UIApplication *)application { // ... // 监测网络情况 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain]; [hostReach startNotifer]; // ...}
0 0
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 如何判断当前网络连接状态(网络是否正常)
- 【iOS解决方案】如何判断当前网络连接状态(网络是否正常)
- [ios开发]判断网络连接是否正常
- IOS中如何判断当前网络状态是否可用
- <IOS> 判断当前网络是否连接
- IOS中如何判断当前网络状态
- IOS中如何判断当前网络状态
- IOS中如何判断当前网络状态
- 判断网络是否连接正常
- 判断网络是否连接正常
- 判断网络连接是否正常
- 判断网络是否连接正常
- iOS 开发判断监测当前网络状态
- iOS开发判断当前的网络状态
- SVN删除恢复
- 02数据挖掘原理-数据分析 数据准备
- Linux C函数之文件及目录函数
- oracle 操作cmd 进行导出 导入
- 紫书p199 八数码(BFS,hash)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- JS中为什么(' ' == 0) 为true
- ismember 函数的用法
- ndk-stacktrace-analyzer 工具的使用
- const & volatile
- linux scandir 的使用
- Microsoft开源Orleans云计算web框架
- sky数_C_杭电ACM2097
- 这十几年编程的不同认知层次——摘自聊天记录