关于官方Reachability Demo理解
来源:互联网 发布:新闻报道数据库 编辑:程序博客网 时间:2024/05/16 10:40
1. 示例说明:此示例用于演示关于如何使用SystemConfiguratio Reachalility程序接口来判定相关的网络连接状态及状态变化,所以在使用此示例中的Reachability.(h/m)文件于自有的项目中的前提是必须引入SystemConfiguration.framework。
2. 首选分析Reachability.h文件:
-> 首先引入<SystemConfiguration/SystemConfiguration.h>
#import <SystemConfiguration/SystemConfiguration.h>
-> 定义代表网络状态的枚举类型NetworkStatus:
// 定义网络请求可到达状态typedef enum { NotReachable = 0, // 不可到达 ReachableViaWiFi, // 通过WiFi可到达 ReachableViaWWAN // 通过无线广域网可到达(WWAN,即Wireless Wide Area Network,无线广域网。)} NetworkStatus;
-> 宏定义关于网络连接变更的通知标识名称:
#define kReachabilityChangedNotification @"kNetworkReachabilityChangedNotification"
-> 定义相关属性:
BOOL localWiFiRef; // 用来保存创建测试连接返回的引用SCNetworkReachabilityRef reachabilityRef;
-> 声明各相关的方法:
// 用于检查网络请求是否可到达指定的主机名+ (Reachability*) reachabilityWithHostName: (NSString*) hostName;
// 用于检查网络请求是否可到达指定的IP地址+ (Reachability*) reachabilityWithAddress: (const struct sockaddr_in*) hostAddress;
// 用于检查路由连接是否有效+ (Reachability*) reachabilityForInternetConnection;
// 用于检查本地的WiFi连接是否有效+ (Reachability*) reachabilityForLocalWiFi;
// 在当前程序的运行回路中开始监听网络请求可到达的通知- (BOOL) startNotifier;- (void) stopNotifier;
// 当前网络请求可到达状态- (NetworkStatus) currentReachabilityStatus;
// 当前网络请求可到达状态- (NetworkStatus) currentReachabilityStatus;
// 连接需求- (BOOL) connectionRequired;
- (void) applicationDidFinishLaunching: (UIApplication* )application { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; hostReach = [[Reachability reachabilityWithHostName:@"www.apple.com"] retain]; [hostReach startNotifier]; internetReach = [[Reachability reachabilityForInternetConnection] retain]; [internetReach startNotifier]; [self updateInterfaceWithReachability:internetReach]; wifiReach = [[Reachability reachabilityForLocalWiFi] retain]; [wifiReach startNotifier]; [self updateInterfaceWithReachability:wifiReach]; [window makeKeyAndVisible];}- (void)reachabilityChanged:(NSNotification *)note{ Reachability *curReach = [note object]; NSParameterAssert([curReach isKindOfClass:[Reachability class]]); [self updateInterfaceWithReachability:curReach];}- (void)updateInterfaceWithReachability:(Reachability *)curReach{ if (curReach == hostReach) { [self configureTextField:remoteHostStateField imageView:remoteHostIcon reachability:curReach]; NetworkStatus netStatus = [curReach currentReachabilityStates]; BOOL connectionRequired = [curReach connectionRequired]; summaryLabel.hidden = (netStatus != ReachabilityViaWWAN); NSString *baseLabel = @""; if (connectionRequired) { baseLabel = @"Cellular data network is available.\n Internet traffic will be routed through it after a connection is established."; } else { baseLabel = @"Cellular data network is active.\n Internet traffic will be routed through it."; } summaryLabel.text = baseLabel; } if (curReach == internetReach) { [self configureTextField:internetConnectionStatusField imageView:internetConnectionIcon reachability:curReach]; } if (curReach == wifiReach) { [self configureTextField:localWiFiConnectionStatusField imageView:localWiFiConnectionIcon reachability:curReach]; }}- (void)configureTextField:(UITextField *)textField imageView:(UIImageView *)imageView reachability:(Reachability *)curReach{ NetworkStatus netStatus = [curReach currentReachabilityStatus]; BOOL connectionRequired = [curReach connectionRequired]; NSString *statusString = @""; switch (netStatus) { case NotReachable: { statusString = @"Access Not Available"; imageView.image = [UIImage imageNamed:@"stop-32.png"]; connectionRequired = NO; break; } case ReachableViaWWAN: { statusString = @"Reachable WWAN"; imageView.image = [UIImage imageNamed:@"WWAN5.png"]; break; } case ReachableViaWiFi: { statusString = @""; imageView.image = [UIImage imageNamed:@"Airport.png"]; break; } } if (connectionRequired) { statusString = [NSString stringWithFormat:@"%@, Connection Required", statusString]; } textField.text = statusString;}
. 关于Reachability.m
参考此链接:http://blog.sina.com.cn/s/blog_65a8ab5d010110w5.html
4. 关于Reachability的使用:
0 0
- 关于官方Reachability Demo理解
- 关于官方Reachability Demo理解
- 关于官方Reachability Demo理解
- 关于JFinal官方Demo的理解
- RxAndroid 官方demo理解
- 官方Reachability说明
- reachability的基本理解
- 关于Reachability网络连接
- 关于官方的micropython demo 的使用
- 苹果官方第三方框架Reachability
- Reachability
- Reachability
- Reachability
- Reachability
- Reachability
- 关于sina微博官方Demo使用问题说明
- 网络状态检测------苹果官方示例Reachability的使用
- WS-Security官方 demo
- Objective-c的字符串的常用操作
- XML文档解析之一
- WCF 传送二进制流数据 stream
- 黑马程序员——JDK5.0新特性
- const用法详解
- 关于官方Reachability Demo理解
- C++与Java变量声明与赋值的区别
- APP IOS6 适配iOS7开发技巧
- 生产者-消费者问题详解
- 观后感《大教堂与集市》
- CodeForces-231A
- C++中冒号和箭头的用法
- 黑马程序员——正则表达式
- zoj 2321