一迅诬、簡介
DGAFNetWorking是我基于AFNetworking和YYCache封裝的iOS網(wǎng)絡(luò)庫.除一般網(wǎng)絡(luò)請(qǐng)求功能外支持按時(shí)間緩存網(wǎng)絡(luò)請(qǐng)求內(nèi)容和支持按版本號(hào)緩存網(wǎng)絡(luò)請(qǐng)求內(nèi)容笋轨。github地址
二硼补、使用
1耸成、網(wǎng)絡(luò)狀態(tài)
開始監(jiān)聽網(wǎng)絡(luò) 在appdelegate里添加方法:
[DGAFNetWorking startMonitoring];
然后監(jiān)聽這個(gè)key可以收到網(wǎng)絡(luò)狀態(tài)改變的通知
DG_NOTI_NETWORK_CHANGE
也可以調(diào)用提供的接口獲取當(dāng)前的網(wǎng)絡(luò)狀態(tài)
/**
* 當(dāng)前有沒有網(wǎng)絡(luò)
*
* @return 是否有網(wǎng)
*/
+ (BOOL)isConnectionAvailable;
/**
* 當(dāng)前的網(wǎng)絡(luò)狀態(tài)
*
* @return 狀態(tài)的描述
*/
+ (DGNetworkStatus)curentNetworkStatus;
2、緩存功能
自動(dòng)緩存的GET請(qǐng)求和POST請(qǐng)求套利。responseCache是緩存的內(nèi)容(是先返回緩存內(nèi)容召嘶,然后再請(qǐng)求網(wǎng)絡(luò)返回網(wǎng)絡(luò)返回的數(shù)據(jù),請(qǐng)求成功后自動(dòng)更新緩存內(nèi)容)
+ (NSURLSessionTask *)GET:(NSString *)URL
parameters:(NSDictionary *)parameters
cacheKey:(NSString*)cacheKey
isResponseCache:(BOOL)isResponseCache
responseCache:(void (^)(id cacheObject))responseCache
success:(void (^)(id responseObject))success
failure:(void (^)(id error))failure;
+ (NSURLSessionTask *)POST:(NSString *)URL
parameters:(NSDictionary *)parameters
cacheKey:(NSString*)cacheKey
isResponseCache:(BOOL)isResponseCache
responseCache:(void (^)(id cacheObject))responseCache
success:(void (^)(id responseObject))success
failure:(void (^)(id error))failure;
3曲梗、按時(shí)間和版本緩存功能
項(xiàng)目里會(huì)有一些需求赞警,比如服務(wù)器數(shù)據(jù)版本變化才需要請(qǐng)求網(wǎng)絡(luò)妓忍,或者某個(gè)接口更新的不是很頻繁,在某個(gè)時(shí)間內(nèi)請(qǐng)求可以直接返回本地緩存的內(nèi)容愧旦,比如個(gè)人信息世剖。這個(gè)時(shí)候就可以用到下面的方法。
version 是當(dāng)前的版本 如果版本和緩存的版本不是一個(gè)的話則進(jìn)行網(wǎng)絡(luò)請(qǐng)求笤虫,否則返回本地緩存的內(nèi)容
durtion 是緩存的時(shí)間旁瘫,單位是秒。如果請(qǐng)求和上次請(qǐng)求的時(shí)間差少于這個(gè)時(shí)間就返回緩存的內(nèi)容琼蚯,否則請(qǐng)求網(wǎng)絡(luò)
+ (void)GET:(NSString *)URL
parameters:(NSDictionary *)parameters
versionCache:(NSString*)version
durtionCache:(NSInteger)durtion
success:(void (^)(id responseObject))success
failure:(void (^)(id error))failure;
+ (void)POST:(NSString *)URL
parameters:(NSDictionary *)parameters
versionCache:(NSString*)version
durtionCache:(NSInteger)durtion
success:(void (^)(id responseObject))success
failure:(void (^)(id error))failure;
4酬凳、一般網(wǎng)絡(luò)請(qǐng)求
對(duì)于一般的網(wǎng)絡(luò)請(qǐng)求比如不緩存數(shù)據(jù)的GET、不緩存數(shù)據(jù)的POST遭庶、圖片上傳宁仔、數(shù)據(jù)下載等功能,項(xiàng)目僅對(duì)AfNetwoking進(jìn)行了簡單的二次封裝在DGAFNetWorking頭文件里寫的很清楚峦睡,這里不多做介紹翎苫。數(shù)據(jù)下載目錄定在/Library/Caches/download/文件夾≌チ耍可以在DGFileHandleFactory類里面修改煎谍。
三、項(xiàng)目類介紹
項(xiàng)目里共有4個(gè)類
1阻逮、DGAFNetWorking
這個(gè)類是封裝了AfNetwoking的請(qǐng)求方法粱快,所有的網(wǎng)絡(luò)請(qǐng)求都要通過這個(gè)類來操作。
2叔扼、DGNetworkCache
這個(gè)類調(diào)用YYCache.處理緩存的添加和緩存的獲取
3事哭、DGCacheConfig
這個(gè)類處理按時(shí)間緩存和按版本緩存的緩存配置,如果想添加新的緩存方式瓜富,可以再這個(gè)類里添加一個(gè)key.
4鳍咱、DGFileHandleFactory
這個(gè)類處理一些數(shù)據(jù)存儲(chǔ)的地址,如緩存配置文件的地址与柑、網(wǎng)絡(luò)下載數(shù)據(jù)的地址等谤辜。
四、鳴謝
DGAFNetWorking基于AFNetworking和YYCache完成价捧。感謝他們對(duì)開源社區(qū)做出的貢獻(xiàn)丑念。