iOS 에서 네트워크 상 태 를 감지 하 는 두 가지 방법

보통 두 가지 방식 이 있 는데 모두 제3자 의 구조 이 고 바퀴 는 사용 할 수 있 으 면 먼저 사용 하고 나중에 최적화 시킨다.
1:Reachability
1.먼저 AppDelegate.h 에 헤더 파일'Reachability.h'를 추가 하고 프레임 워 크 SystemConfiguration.frame 를 가 져 옵 니 다.
2.AppDelegate.m 에서 이렇게 실현:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//         
//              。  Reachability.h   ,                    ,            kReachabilityChanged-Notification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
//                       :
self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;
//    ,     run loop
[self.hostReach startNotifier];
}
-(void)reachabilityChanged:(NSNotification *)note{
Reachability *currReach = [note object];
NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
//             
NetworkStatus status = [currReach currentReachabilityStatus];
//                
self.isReachable = YES;
if(status == NotReachable){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"      " message:nil delegate:nil cancelButtonTitle:@"  " otherButtonTitles:nil];
[alert show];
[alert release];
self.isReachable = NO;
return;
}
if (status==kReachableViaWiFi||status==kReachableViaWWAN) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"      " message:@"      " delegate:nil cancelButtonTitle:@"  " otherButtonTitles:nil];
// [alert show];
[alert release];
self.isReachable = YES;
}
}
그리고 각 페이지 의 view Will Appear:추가:

-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
AppDelegate *appDlg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if(appDlg.isReachable){
NSLog(@"     ");//          
}
else{
NSLog(@"      ");//          
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"      " message:nil delegate:nil cancelButtonTitle:@"  " otherButtonTitles:nil];
[alert show];
[alert release];
}
}
이렇게 하면 프로그램 을 실행 할 때 네트워크 의 갑 작 스 러 운 중단 과 연결 을 검사 할 수 있다.Reachability 클래스 는 실제로 애플 이 SCNetworkReachability API 에 대한 패키지 입 니 다.이 API 는 SystemConfigure.framework 라 이브 러 리 에 정의 되 어 있 습 니 다.다른 특별한 수요 가 있 으 면 이 원생 의 SCNetworkReachability 류 를 직접 사용 할 수도 있다.
2.AFNetworking 모니터링
1.프레임 워 크 와 헤더 파일 가 져 오기\#import
2.코드:

-(void)afn{
//1.           
AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager];
//    ,    ,    block
[manger startMonitoring];
//2.    
[manger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
/*
AFNetworkReachabilityStatusUnknown = -1,
AFNetworkReachabilityStatusNotReachable = 0,
AFNetworkReachabilityStatusReachableViaWWAN = 1,
AFNetworkReachabilityStatusReachableViaWiFi = 2,
*/
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"  ");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"    ");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"3G|4G");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WiFi");
break;
default:
break;
}
}];
}
위 에서 말 한 것 은 편집장 이 소개 한 iOS 에서 네트워크 상 태 를 감지 하 는 두 가지 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기