iOS APP 开发 OC 第十三天,测试网路状态 iOS Reachability
tags: OC 30 day
今天在看接手的OC专案时,看到一个测试网路状态的方法 Reachability(OC),因为我刚嘅使接触OC,在这之前我在开发swift时,都是利用NWPathMoniitor来测试网路状态:
NWPathMoniitor(swift)
Network framework 是在iOS 12 新推出的 framework。其中的 NWPathMonitor 将可帮我们更简单地侦测网路连线的状态。可以看看彼得潘的文章。
但是这次看专案是利用Reachability,为了看懂程式码,让我们来了解什么是Reachability。
在这之前,可以看一下stackoverflow。
什么是Reachability?
Reachability是网络助手实用程序类,它用于获取有关连接状态的各种信息。
Reachability的主要目的是什么?
Reachability用于查询网络状态,并监听在连接状态更改时的通知。
仅使用一个实例,然后监听网络变化,这个方法是否很常见?
这个做法很常见。 在我的项目中,我只有1个下载管理器类的实例,而该类只有Reachability的唯一活动实例。
还是应该在每次网络请求之前检查自己的Reachabilit状态?
通常要做的是在下载管理器中建立一个方法,该方法告诉我是否存在连接。
对Reachability有大致上的理解后,我们来尝试实做看看。
首先,到Reachability介绍页
Reachability示例应用程序演示了如何使用系统配置框架来监视iOS设备的网络状态。 特别是,它演示了如何知道何时可以路由IP,以及何时将通过EDGE或3G等无线广域网(WWAN)接口路由流量。 注意:Reachability无法告诉您的应用程序是否可以连接到特定主机,只能告诉您可能允许连接的接口可用,以及该接口是否为WWAN。 要了解何时以及如何使用可达性,请阅读“网络概述”。
接着你可以下载官方的範例文件,并直接使用 Reachability.m 与 Reachability.h 的文件。
详细使用方法可以参考Nick’s journey on iOS.写的文章
使用範例
//预留网络监控- (void)net_control{ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; NSString *remoteHostName = @"www.apple.com"; self.hostReachability = [Reachability reachabilityWithHostName:remoteHostName]; [self.hostReachability startNotifier];}/*! * Called by Reachability whenever status changes. */- (void) reachabilityChanged:(NSNotification *)note{ Reachability *reach=[note object]; if([reach currentReachabilityStatus]==ReachableViaWiFi){ NSLog(@"正在使用WiFi"); }else if([reach currentReachabilityStatus]==ReachableViaWWAN){ NSLog(@"正在使用移动数据"); }else{ NSLog(@"当前网络不可用"); }}