第三方库Reachability检测网络状态

编程入门 行业动态 更新时间:2024-10-24 14:28:05

<a href=https://www.elefans.com/category/jswz/34/1770258.html style=第三方库Reachability检测网络状态"/>

第三方库Reachability检测网络状态

一:确认网络环境3G/WIFI1. 添加源文件和framework开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审(我们的)查的。Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。要在应用程序程序中使用Reachability,首先要完成如下两部:1.1. 添加源文件:在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。
Reachability的h和m文件可以在这里下载:.h(支持ARC和GCD)1.2.添加framework:将SystemConfiguration.framework 添加进工程。如下图:2. 网络状态Reachability.h中定义了三种网络状态:typedef enum {NotReachable = 0,      //无连接ReachableViaWiFi,      //使用3G/GPRS网络ReachableViaWWAN      //使用WiFi网络} NetworkStatus;因此可以这样检查网络状态:Reachability *r = [Reachability reachabilityWithHostName:@“www.apple”];switch ([r currentReachabilityStatus]) {case NotReachable:// 没有网络连接break;case ReachableViaWWAN:// 使用3G网络break;case ReachableViaWiFi:// 使用WiFi网络break;}3.检查当前网络环境程序启动时,如果想检测可用的网络环境,可以像这样// 是否wifi+ (BOOL) IsEnableWIFI {return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);}// 是否3G+ (BOOL) IsEnable3G {return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);}例子:- (void)viewWillAppear:(BOOL)animated {  if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) && ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable)) {self.navigationItem.hidesBackButton = YES;[self.navigationItem setLeftBarButtonItem:nil animated:NO];}}4. 链接状态的实时通知网络连接状态的实时检查,通知在网络应用中也是十分必要的。接续状态发生变化时,需要及时地通知用户: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"];[[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:nilcancelButtonTitle:@"YES" otherButtonTitles:nil];[alert show];[alert release];}}- (void)applicationDidFinishLaunching:(UIApplication *)application {// ...// 监测网络情况[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(reachabilityChanged:)name: kReachabilityChangedNotificationobject: nil];hostReach = [[Reachability reachabilityWithHostName:@"www.google"] retain];[hostReach startNotifier];// ...}


更多推荐

第三方库Reachability检测网络状态

本文发布于:2024-03-10 10:16:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727692.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第三方   状态   网络   Reachability

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!