인터넷을 사용할 수있게되면 내 앱에서 알림 또는 뭔가를받을 수 있습니까? 나는 접근 가능성과 모든 종류의 것들을 알고 있습니다. 하지만 내가 원하는 것은 인터넷에서 장치를 사용할 수있게되면 대기중인 NSUrlConnections를 시작하는 것입니다. 도달 가능성을 지속적으로 점검하는 루핑 스레드를 사용하고 싶지 않기 때문에이 작업을 수행하는 쉬운 방법이 있습니까? 어떤 제안?iOS에서 인터넷을 사용할 수있게되었을 때의 알림
답변
좋아, 여기에 도달 가능성에 대해 매우 좋은 포스트는 다음과 같습니다 http://www.mikeash.com/pyblog/friday-qa-2013-06-14-reachability.html (아래 주석을 확인!)
Tldr : 연결이 돌아 때 블록을 발사 할 수 있지만,이 솔루션은 완벽하지 않습니다. 루프를 시도하는 것을 제외하고는 이것을 수행 할 100 % 신뢰할 수있는 방법은 없지만 이러한 접근 방식을 혼합 할 수는 있습니다.
편집 : @ Jonah.at.GoDaddy에 대한 답변 :
도달 가능성은 두 가지 연결 알림 오류를 줄 수 있습니다 : 거짓 긍정 및 거짓 부정 (WWDC 2011 세션에서 확인할 수 있습니다. 네트워킹에 대해서는 두 가지가 있습니다). 그래서, 제 요지는 : 당신은 그 통보에만 의존해서는 안됩니다. 상태 변경시 새로 고침을 트리거 할 수 있지만이를 수행하는 또 다른 방법이 있어야합니다 (사용자 상호 작용 또는 일종의 활성 대기). 귀하의 질문에서
-(void)checkNetworkStatus
{
// check for internet connection
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
// check if a pathway to a random host exists
self.hostReachable = [Reachability reachabilityWithHostname:@"google.com"];
[self.hostReachable startNotifier];
}
-(void) checkNetworkStatus:(NSNotification *)notice
{
NetworkStatus hostStatus = [self.hostReachable currentReachabilityStatus];
switch (hostStatus)
{
case NotReachable:
{
DDLogInfo(@"A gateway to the host server is down.");
if(self.canReachGoogle)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: LOCALIZED_NoInternetConnection
message: LOCALIZED_ConnectionNeeded
delegate:self cancelButtonTitle:LOCALIZED_Ok otherButtonTitles:nil];
[alert show];
}
self.canReachGoogle = NO;
break;
}
case ReachableViaWiFi:
{
DDLogInfo(@"A gateway to the host server is working via WIFI.");
self.canReachGoogle = YES;
break;
}
case ReachableViaWWAN:
{
DDLogInfo(@"A gateway to the host server is working via WWAN.");
self.canReachGoogle = YES;
break;
}
}
DDLogInfo(@"Network connection has changed and is now: %@", self.canReachGoogle ? @"enabled" : @"disabled");
}
그래,하지만 그건 구글에 의존하고있어. 최선의 방법은 아닙니다. 또한 특정 시간에 도달 가능성이 아니라 도달 가능성의 변화를 요청했습니다. – user2387149
내가 왜 도달 가능성을 사용하고 ReachabilityChangedNotification의 작동하지 않습니다에 등록 이해하지 : 여기 – Alex
[Reachability] (https://developer.apple.com/Library/ios/samplecode/Reachability/Introduction/Intro.html) 정말 다른 가치가 있습니다. 루핑해서는 안되며, 그 코드 샘플처럼'startNotifier'를 호출하면 인터넷 연결이 바뀔 때 알림을 받게됩니다. – Rob
이 질문이 중복되는 것에 동의하지 않습니다. 제공된 답변은 Reachability를 사용하는 것에 관한 것이지만 질문은 연결 상태 업데이트를 얻는 것입니다. 내 대답에 쓰여 있듯이 Reachability는 아무 것도 보증하지 않습니다. 더 도움이됩니다. 누구에게나 Reachability가 정답이라면 신청서에 미숙 한 국가가 생길 수 있음을 제안하십시오! –