ios如何实时监控网络改变

作者: 一支烟一只猿 | 来源:发表于2017-01-19 09:23 被阅读686次

最近看到一些app上有做到网络切换的时候,有提示有提醒是否使用4G/3G,回到wifi又可以马上回归,下面MARK下监听网络状态的代码:

一、苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态

使用之前请从Apple网站下载示例:http://xiazai.jb51.net/201608/yuanma/Reachability(jb51.net).rar

然后将Reachability.h 和 Reachability.m 加到自己的项目中,并引用 SystemConfiguration.framework,就可以使用了。

Reachability 中定义了3种网络状态:

typedefenum: NSInteger {

NotReachable = 0,//无连接

ReachableViaWiFi,//使用WiFi网络

ReachableViaWWAN//使用3G/GPRS网络

} NetworkStatus;

我们可以在程序启动以后启动实时监测

// AppDelegate.m

@interface AppDelegate ()

@property (nonatomic, strong) Reachability *reachability;

@end

// 程序启动器,启动网络监视

- (void)applicationDidFinishLaunching:(UIApplication *)application {

// 设置网络检测的站点

NSString *remoteHostName = @"www.apple.com";

self.reachability = [Reachability reachabilityWithHostName:remoteHostName];

// 设置网络状态变化时的通知函数

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)

name:@"kNetworkReachabilityChangedNotification"object:nil];

[self updateStatus];

}

- (void)reachabilityStatusChange:(NSNotification *)notification

{

Reachability* curReach = [notification object];

NSParameterAssert([curReach isKindOfClass:[Reachabilityclass]]);

[self updateInterfaceWithReachability:curReach];

}

- (void)updateInterfaceWithReachability:(Reachability *)reachability

{

if(reachability == _reachability)

{

NetworkStatus netStatus = [reachability currentReachabilityStatus];

switch(netStatus)

{

caseNotReachable:   {

NSLog(@"没有网络!");

break;

}

caseReachableViaWWAN: {

NSLog(@"4G/3G");

break;

}

caseReachableViaWiFi: {

NSLog(@"WiFi");

break;

}

}

}

}

- (void)dealloc

{

[_reachability stopNotifier];

[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];

}

当然实际开发中用的三方网络请求的要多点  我们以AFNetworking作为示例:

//使用AFN框架来检测网络状态的改变

-(void)AFNReachability

{

//1.创建网络监听管理者

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

//2.监听网络状态的改变

/*

AFNetworkReachabilityStatusUnknown     = 未知

AFNetworkReachabilityStatusNotReachable   = 没有网络

AFNetworkReachabilityStatusReachableViaWWAN = 3G

AFNetworkReachabilityStatusReachableViaWiFi = WIFI

*/

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

switch(status) {

caseAFNetworkReachabilityStatusUnknown:

NSLog(@"未知");

break;

caseAFNetworkReachabilityStatusNotReachable:

NSLog(@"没有网络");

break;

caseAFNetworkReachabilityStatusReachableViaWWAN:

NSLog(@"3G");

break;

caseAFNetworkReachabilityStatusReachableViaWiFi:

NSLog(@"WIFI");

break;

default:

break;

}

}];

//3.开始监听

[manager startMonitoring];

}

在这个里面我们就可以实现网络监听 在网络发生改变的时候 可以做出相应的操作~~~😀

相关文章

  • ios如何实时监控网络改变

    最近看到一些app上有做到网络切换的时候,有提示有提醒是否使用4G/3G,回到wifi又可以马上回归,下面MARK...

  • 监听网络

    ios 注册通知、监听 iOS-OC-监听网络状态,有网时数据自动刷新 iOS实时监控网络状态的改变 简书 iOS...

  • ios 使用afn实时监控网络状态的变化

    ios 使用afn实时监控网络状态的变化 集成AFNetworking框架 #import AFNetwork...

  • iOS开发--实时监控网络状态的改变

    一、前言 在做项目的过程中常常需要对用户设备的网络状态进行实时监听,判断用户是以哪种上网方式,有两个目的:(1)让...

  • iOS开发实时监控网络变化

    iOS开发和手机网络息息相关,有时候需要在用户手机端网络改变时做出一些操作,这时候就需要对手机网络实时监控,苹果为...

  • ios实时的网络监控

    1:我们项目中经常会用到获取用户当前的网络状态,是否有网,是否是wifi情况下 准备工作 1:从苹果官网上下载Re...

  • iOS通过runloop监控卡顿

    质量监控-卡顿检测iOS实时卡顿监控基于Runloop简单监测iOS卡顿的demo微信iOS卡顿监控系统iOS-R...

  • NX3225SA贴片24MHz晶振,智能电子产品“专属订制”

    视频安全监控系统是一种利用视频技术实时检测和监控强化区域,实时显示和记录实时图像的电子系统或网络。网络视频监控系统...

  • 网络监控

    本文的意义 利用苹果原生的类Reachability,实时监控网络的状态 利用框架AFNetworking实时监控...

  • 树莓派的实时网络视频监控

    树莓派的实时网络视频监控 安装摄像头以及配置开关打开 如何连接以及打开摄像头功能可以参考官方Document 实时...

网友评论

    本文标题:ios如何实时监控网络改变

    本文链接:https://www.haomeiwen.com/subject/qiumvttx.html