iOS 에서 네트워크 상 태 를 감지 하 는 두 가지 방법
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 에서 네트워크 상 태 를 감지 하 는 두 가지 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.