iOS APP 开发 OC 第十三天,测试网路状态 iOS Reachability

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(@"当前网络不可用");    }}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章