iOS 使用AFNetWorking监听APP网络状态变化(可用于更改缓存策略、提示网络等)
前言
我们知道在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网络状态变化(可用于更改缓存策略、提示网络等)的更多相关文章
- IOS-利用AFNetworking监听网络状态
网络环境检测:检测用户当前所处的网络状态 效果图 1.当蜂窝和wifi同时关闭时候 显示为不可达(AFNetworkReachabilityStatusNotReachable)状态 2.打开蜂窝移 ...
- Android 监听APP进入后台或切换到前台方案对比
在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况.比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作:我们想判断app切换到后台,记 ...
- iOS 实时监听app的网络连接状态
实际iOS开发中,在网络通信中我们大部分使用第三方(只谈短链),譬如 AFNetworking.ASIHttpRequest(这个停更了,想必现在没多少人用),swift的 Alamofire 等. ...
- ios 监听app从后台恢复到前台
正常情况下,在AppDelegate中实现下面两个方法,能够监听从后台恢复到前台 [cpp] - (void)applicationDidEnterBackground:(UIApplication ...
- 后台自动运行,定期记录定位数据(Hbuilder监听 app由前台切换到后台、切换运行环境的 监听方法)
http://ask.dcloud.net.cn/question/28090 https://blog.csdn.net/qq_37508970/article/details/86649703 各 ...
- iOS: 使用KVO监听控制器中数组的变化
一.介绍: KVO是一种能动态监听到属性值的改变的方式,使用场景非常广泛,这里我只讲如何监听控制器ViewController中数组的变化. 二.了解: 首先我们应该知道KVO是不能直接监听控制器Vi ...
- ios应用来电监听
先导入这两个头文件,库文件不用导可以 #import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h&g ...
- 监听APP升级广播处理
当旧版本的用户升级新版本的时候需要重新设定一些值处理,这时候需要监听升级版本的广播 <receiver android:name=".OnUpgradeReceiver"&g ...
- 类似吸顶功能解决ios不能实时监听onscroll的触发问题
问题:近期项目需要一个类似西东功能,当页面向上滚动160px后div固定在顶部 解决方法:首先,想到的是window.onscroll方法 .fixed{position:fixed;-webkit- ...
随机推荐
- sublime text3下使用TAG快捷键ctrl+alt+f失效的解决方法
系统环境:WIN7 版本: sublime text3 问题:为了方便格式化html,下的TAG插件.在package control中在线安装能够安装成功,功能正常使用,就是ctrl+alt+f(A ...
- Allocate exception for servlet XXX 基本异常
HTTP Status 500 - Error instantiating servlet class cn.tedu.servlet 错误!! 解决方案: 查看当前项目下的web.xm文件的真 ...
- 【转】SonarQube配置自定义的CheckStyle代码规则
原文地址:https://www.jianshu.com/p/ff1d800885ce 惯例第一步肯定是SonarQube的安装与运行配置了,但这部分不在本文主题内,网上一搜一大把,这里就不讲了,大家 ...
- python strip_tags 支持保留指定标签
#coding:utf-8 import re def strip_tags(string, allowed_tags=''): if allowed_tags != '': # Get a list ...
- 计蒜客 1460.Ryuji doesn't want to study-树状数组 or 线段树 (ACM-ICPC 2018 徐州赛区网络预赛 H)
H.Ryuji doesn't want to study 27.34% 1000ms 262144K Ryuji is not a good student, and he doesn't wa ...
- Codeforces Round 252 (Div. 2)
layout: post title: Codeforces Round 252 (Div. 2) author: "luowentaoaa" catalog: true tags ...
- 训练指南 UVALive - 3523 (双联通分量 + 二分图染色)
layout: post title: 训练指南 UVALive - 3523 (双联通分量 + 二分图染色) author: "luowentaoaa" catalog: tru ...
- Codeforces #442 Div2 F
#442 Div2 F 题意 给出一些包含两种类型(a, b)问题的问题册,每本问题册有一些题目,每次查询某一区间,问有多少子区间中 a 问题的数量等于 b 问题的数量加 \(k\) . 分析 令包含 ...
- Linux命令之find(一)
find [-H] [-L] [-P] [-Olevel] [-D help| tree| search| stat| rates| opt| exec] [路径] [表达式] find是查找文件的命 ...
- css layout入门(转)
元素与盒 在HTML中常常使用的概念是元素,而在CSS中,布局的基本单位是盒,盒总是矩形的. 元素与盒并非一一对应的关系,一个元素可能生成多个盒,CSS规则中的伪元素也可能生成盒,display属性为 ...