Qt for Ios 使用AFNetWorking監(jiān)聽APP網(wǎng)絡(luò)狀態(tài)變化(可用于更改緩存策略、提示網(wǎng)絡(luò)等)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我們知道在APP開發(fā)過程中,監(jiān)聽手機(jī)當(dāng)前的網(wǎng)絡(luò)狀態(tài)還是一個(gè)很常用的方法,這里我來為大家接受一種使用AFNetWorking來監(jiān)聽當(dāng)前的網(wǎng)絡(luò)狀態(tài)的方法;網(wǎng)絡(luò)監(jiān)聽對程序開發(fā)的幫助有很多:比如下載時(shí)在不同的網(wǎng)絡(luò)狀態(tài)下使用不同下載策略、緩存策略、或者就是一個(gè)單純的提示
使用控件在這里我使用的是AFNetWorking 3.0之前的版本,我并沒有測試過最新的3.0.4版本是否可以正常使用,但是我認(rèn)為是不影響的,如果各位在測試過程中,有什么問題的話請直接私信我。
代碼實(shí)現(xiàn)首先我們新建一個(gè)繼承與NSObject的類,編寫一個(gè)單例。
NetworkingTools.h
#import
#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
可以看到這基本上就是一個(gè)很簡單的單例。相信大家都不存在什么問題。?接下來會(huì)給大家看一個(gè)方法,也就是監(jiān)聽網(wǎng)絡(luò)狀態(tài)的方法,那么這里我推薦可以將這個(gè)方法在APPDelegate.m里面進(jìn)行監(jiān)聽。
下面這段代碼是最關(guān)鍵的行的代碼,只要實(shí)現(xiàn)了堅(jiān)聽網(wǎng)絡(luò)變化回調(diào)一般就沒有問題。
切記文章中的AFHTTPRequestOperationManager替換為AFNetworkReachabilityManager。
我的用法:?self.manager? = [AFNetworkReachabilityManager sharedManager];
? ? //開始監(jiān)聽
?[self.manager startMonitoring];
- (void)listenNetWorkingPort{
[[NSURLCache sharedURLCache] setMemoryCapacity:5 * 1024 * 1024];
[[NSURLCache sharedURLCache] setDiskCapacity:50 * 1024 * 1024];
AFHTTPRequestOperationManager * manager = [NetworkingTools sharedManager];
// 設(shè)置網(wǎng)絡(luò)狀態(tài)變化回調(diào)
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusNotReachable:
// 設(shè)置網(wǎng)絡(luò)請求的緩存政策
manager.requestSerializer.cachePolicy = NSURLRequestReturnCacheDataDontLoad;
NSLog(@"斷網(wǎng)狀態(tài)");
// [UIAlertView showConfigPrompt:NSLocalizedString(@"當(dāng)前沒有網(wǎng)絡(luò),請檢查你的網(wǎng)絡(luò)設(shè)置", nil)];
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
// 設(shè)置網(wǎng)絡(luò)請求的緩存政策
manager.requestSerializer.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
NSLog(@"4G狀態(tài)");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
// 設(shè)置網(wǎng)絡(luò)請求的緩存政策
manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
NSLog(@"WiFi狀態(tài)");
break;
default:
break;
}
}];
// 啟動(dòng)網(wǎng)絡(luò)狀態(tài)監(jiān)聽
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
}
后記目前為大家?guī)淼亩际切┍容^簡單的小技巧和工具,希望和大家共同交流和進(jìn)步。也很想寫一遍比較充實(shí)的干貨,但是目前水平和各方面的限制,就先這樣了。