//創(chuàng)建一個(gè)基于AFHTTPSessionManager 的類
#import <Foundation/Foundation>
#import "AFHTTPSessionManager.h"
@interfaceAFAppDotNetAPIClient :AFHTTPSessionManager
//創(chuàng)建單例,在需要網(wǎng)絡(luò)判斷的地方調(diào)用
+ (instancetype)sharedClient;
@end
#import"AFAppDotNetAPIClient.h"
//全局靜態(tài)變量 是測(cè)試網(wǎng)絡(luò)用到的網(wǎng)址
static NSString*const AFAppDotNetAPIBaseURLString =@"https://api.app.net/";
@implementationAFAppDotNetAPIClient
//實(shí)現(xiàn)單例方法
+ (instancetype)sharedClient {
staticAFAppDotNetAPIClient*_sharedClient =nil;
//用dispatch_once 函數(shù)?解決線程問題 防止多線程時(shí)被不同線程同時(shí)調(diào)用 ?類似加鎖的功能
staticdispatch_once_tonceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[AFAppDotNetAPIClientalloc]initWithBaseURL:[NSURLURLWithString:AFAppDotNetAPIBaseURLString]];
_sharedClient.securityPolicy= [AFSecurityPolicypolicyWithPinningMode:AFSSLPinningModeNone];
//網(wǎng)絡(luò)判斷的內(nèi)部實(shí)現(xiàn) ? ? ?? [_sharedClient.reachabilityManagersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatusstatus) {
switch(status) {
caseAFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"-------AFNetworkReachabilityStatusReachableViaWWAN------");
break;
caseAFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"-------AFNetworkReachabilityStatusReachableViaWiFi------");
break;
caseAFNetworkReachabilityStatusNotReachable:
NSLog(@"-------AFNetworkReachabilityStatusNotReachable------");
break;
default:
break;
}
}];
[_sharedClient.reachabilityManagerstartMonitoring];
});
return_sharedClient;
}
//用if判斷網(wǎng)絡(luò)狀態(tài) 增加了自動(dòng)提示---提示框
if(status ==
AFNetworkReachabilityStatusReachableViaWWAN) {
UIAlertView*alertView = [[UIAlertViewalloc]initWithTitle:@"溫馨提示"message:@"目前3G網(wǎng)絡(luò)狀態(tài)良好"delegate:selfcancelButtonTitle:nilotherButtonTitles:nil,nil];
[alertViewshow];
alertView.cancelButtonIndex=1;
//讓alertView自動(dòng)取消這里的self是指shareClient
[selfperformSelector:@selector(dissAlertView:)withObject:alertViewafterDelay:1.0];
//WiFi
}elseif(status ==AFNetworkReachabilityStatusReachableViaWiFi){
UIAlertView*alertView = [[UIAlertViewalloc]initWithTitle:@"溫馨提示"message:@"目前是WiFi網(wǎng)絡(luò)"delegate:selfcancelButtonTitle:nil
otherButtonTitles:nil,nil];
[alertViewshow];
//讓alertView自動(dòng)取消
[selfperformSelector:@selector(dissAlertView:)withObject:alertViewafterDelay:1.0];
//無網(wǎng)絡(luò)
}elseif(status ==AFNetworkReachabilityStatusNotReachable){
UIAlertView*alertView = [[UIAlertViewalloc]initWithTitle:@"溫馨提示"message:@"無法找到網(wǎng)絡(luò)"delegate:selfcancelButtonTitle:nilotherButtonTitles:nil,nil];
[alertViewshow];
[selfperformSelector:@selector(dissAlertView:)withObject:alertViewafterDelay:1.0];
}
}];
[shareClient.reachabilityManagerstartMonitoring];
});
returnshareClient;
}
//在單例里面 這個(gè)方法必須寫為加號(hào)方法
因?yàn)樵谏厦娴木W(wǎng)絡(luò)判斷中 我們?cè)趓eturn 前就調(diào)用了這個(gè)方法,而調(diào)用時(shí)實(shí)例還沒有產(chǎn)生,所以用減號(hào)方法會(huì)崩潰的?;
//alertView自動(dòng)消失的實(shí)現(xiàn)方法
+ (void)dissAlertView:(UIAlertView*)alertView
{
if(alertView) {
[alertViewdismissWithClickedButtonIndex:[alertViewcancelButtonIndex]animated:YES];
}
[alertViewrelease];
}