前言

我们知道在APP开发过程中。监听手机当前的网络状态还是一个非经常常使用的方法,这里我来为大家接受一种使用AFNetWorking来监听当前的网络状态的方法;网络监听对程序开发的帮助有非常多:比方下载时在不同的网络状态下使用不同下载策略、缓存策略、或者就是一个单纯的提示

使用控件

在这里我使用的是AFNetWorking 3.0之前的版本号。我并没有測试过最新的3.0.4版本号能否够正常使用,可是我觉得是不影响的,假设各位在測试过程中,有什么问题的话请直接私信我。

代码实现

首先我们新建一个继承与NSObject的类。编写一个单例。

NetworkingTools.h

#import <Foundation/Foundation.h>
#import "AFNetworking.h" @interface NetworkingTools : NSObject + (AFHTTPRequestOperationManager *)sharedManager; @end

NetworkingTools.m

#import "NetworkingTools.h"
#import "AFNetworking.h" @implementation NetworkingTools + (AFHTTPRequestOperationManager *)sharedManager {
static AFHTTPRequestOperationManager * manager = nil;
if (!manager) {
manager = [AFHTTPRequestOperationManager manager];
} return manager;
} @end

能够看到这基本上就是一个非常easy的单例。相信大家都不存在什么问题。

接下来会给大家看一个方法,也就是监听网络状态的方法。那么这里我推荐能够将这种方法在APPDelegate.m里面进行监听。

- (void)listenNetWorkingPort{
[[NSURLCache sharedURLCache] setMemoryCapacity:5 * 1024 * 1024];
[[NSURLCache sharedURLCache] setDiskCapacity:50 * 1024 * 1024]; AFHTTPRequestOperationManager * manager = [NetworkingTools sharedManager]; // 设置网络状态变化回调
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusNotReachable: // 设置网络请求的缓存政策
manager.requestSerializer.cachePolicy = NSURLRequestReturnCacheDataDontLoad;
NSLog(@"断网状态");
// [UIAlertView showConfigPrompt:NSLocalizedString(@"当前没有网络,请检查你的网络设置", nil)];
break;
case AFNetworkReachabilityStatusReachableViaWWAN: // 设置网络请求的缓存政策
manager.requestSerializer.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
NSLog(@"4G状态"); break;
case AFNetworkReachabilityStatusReachableViaWiFi: // 设置网络请求的缓存政策
manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
NSLog(@"WiFi状态");
break; default:
break;
}
}]; // 启动网络状态监听
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
}

后记

眼下为大家带来的都是些比較简单的小技巧和工具,希望和大家共同交流和进步。也非常想写一遍比較充实的干货。可是眼下水平和各方面的限制,就先这样了。

iOS 使用AFNetWorking监听APP网络状态变化(可用于更改缓存策略、提示网络等)的更多相关文章

  1. IOS-利用AFNetworking监听网络状态

    网络环境检测:检测用户当前所处的网络状态 效果图 1.当蜂窝和wifi同时关闭时候  显示为不可达(AFNetworkReachabilityStatusNotReachable)状态 2.打开蜂窝移 ...

  2. Android 监听APP进入后台或切换到前台方案对比

    在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况.比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作:我们想判断app切换到后台,记 ...

  3. iOS 实时监听app的网络连接状态

    实际iOS开发中,在网络通信中我们大部分使用第三方(只谈短链),譬如 AFNetworking.ASIHttpRequest(这个停更了,想必现在没多少人用),swift的 Alamofire 等. ...

  4. ios 监听app从后台恢复到前台

    正常情况下,在AppDelegate中实现下面两个方法,能够监听从后台恢复到前台 [cpp] - (void)applicationDidEnterBackground:(UIApplication ...

  5. 后台自动运行,定期记录定位数据(Hbuilder监听 app由前台切换到后台、切换运行环境的 监听方法)

    http://ask.dcloud.net.cn/question/28090 https://blog.csdn.net/qq_37508970/article/details/86649703 各 ...

  6. iOS: 使用KVO监听控制器中数组的变化

    一.介绍: KVO是一种能动态监听到属性值的改变的方式,使用场景非常广泛,这里我只讲如何监听控制器ViewController中数组的变化. 二.了解: 首先我们应该知道KVO是不能直接监听控制器Vi ...

  7. ios应用来电监听

    先导入这两个头文件,库文件不用导可以 #import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h&g ...

  8. 监听APP升级广播处理

    当旧版本的用户升级新版本的时候需要重新设定一些值处理,这时候需要监听升级版本的广播 <receiver android:name=".OnUpgradeReceiver"&g ...

  9. 类似吸顶功能解决ios不能实时监听onscroll的触发问题

    问题:近期项目需要一个类似西东功能,当页面向上滚动160px后div固定在顶部 解决方法:首先,想到的是window.onscroll方法 .fixed{position:fixed;-webkit- ...

随机推荐

  1. hdu 1534(差分约束)

    Schedule Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. PHP极速开发框架LotusAdmin page版发布

    体验地址及账号如下: 地址    https://page.waytomilky.com/ 账号:admin 密码:123456 LotusAdmin2.0其主要特性包括: 1.基于ThinkPHP5 ...

  3. ASP.NET MVC中DropDownList的使用

    Asp.net MVC中的DropDownLists貌似会让一开始从Asp.net Forms转过来的程序员造成不少迷惑.这篇文章讲述了为了使用DropDownLists,你需要在Asp.Net MV ...

  4. centos6.5 安装vlc播放器【超简单】

    # cd /etc/yum.repos.d/ # wget http://pkgrepo.linuxtech.net/el6/release/linuxtech.repo //我试了3次才下载下来 # ...

  5. Oracle alter table modify column Syntax example

    http://www.dba-oracle.com/t_alter_table_modify_column_syntax_example.htm For complete tips on Oracle ...

  6. 【BZOJ3167/4824】[Heoi2013]Sao/[Cqoi2017]老C的键盘

    [BZOJ3167][Heoi2013]Sao Description WelcometoSAO(StrangeandAbnormalOnline).这是一个VRMMORPG,含有n个关卡.但是,挑战 ...

  7. 【分块】【线段树】bzoj3212 Pku3468 A Simple Problem with Integers

    线段树入门题…… 因为poj原来的代码莫名RE,所以丧病地写了区间修改的分块…… 其实就是块上打标记,没有上传下传之类. #include<cstdio> #include<cmat ...

  8. 【二分答案】bzoj1639 [Usaco2007 Mar]Monthly Expense 月度开支

    #include<cstdio> using namespace std; #define N 100001 int n,m,a[N]; bool check(int x) { int n ...

  9. Djanog|requirements.txt生成

    Django | requirement.txt 生成 pip django 1   pip 通常我们熟悉使用的都是 pip, 这个工具确实方便项目管理依赖包.当想把当前项目依赖的包的名称和版本导入指 ...

  10. dubbo安装(转载)

    1.   概述 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂 ...