내 서버 IP와 함께 사용할 Apple의 도달 가능성 클래스가 수정되었습니다. 하지만 reachabilityWithAddress
을 사용하면 앱을 실행하는 동안 reachabilityChanged
이라고 부르지 않습니다. 인터넷 연결 상태가 변경된 경우에만 호출됩니다. (wi-fi를 껐다가 켜는 것과 같습니다.)하지만 reachabilityWithHostName
을 사용하면 reachabilityChanged
앱이 시작될 때 함수가 호출됩니다.IP가있는 도달 가능성 클래스
무엇이 누락 되었습니까? 방법 그리고
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
///////////////////////////////////////////////////////////////////////////////////
// Reachability Local Notifications
///////////////////////////////////////////////////////////////////////////////////
hasInternetConnection = NO;
struct sockaddr_in address;
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = htons(80);
address.sin_addr.s_addr = inet_addr("X.X.X.X");
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name:kReachabilityChangedNotification object: nil];
hostReach = [Reachability reachabilityWithAddress:&address];
[hostReach startNotifier];
...
}
:
-(void)reachabilityChanged:(NSNotification*)note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
if (curReach == hostReach) {
NetworkStatus netStatus = [curReach currentReachabilityStatus];
if (netStatus != ReachableViaWiFi && netStatus != ReachableViaWWAN) {
hasInternetConnection = NO;
}
else {
hasInternetConnection = YES;
}
}
else {
DLog(@"Something go wrong!");
}
}