여기에 이상한 버그가 있습니다. 이는 iOS 기기가 3G/4G 네트워크에서만 독점적으로 사용되는 경우에만 나타납니다. WiFi를 통한 경우 - 버그가 없으며 모두 정상적으로 작동합니다.CFNetDiagnosticCopyNetworkStatusPassively에서 가능한 버그? 3G/4G에서만 kCFNetDiagnosticConnectionDown을 반환합니다.
- (BOOL) isInternetAccessAvailable
{
CFNetDiagnosticRef diag;
diag = CFNetDiagnosticCreateWithURL (NULL, (__bridge CFURLRef)[NSURL URLWithString:@"www.apple.com"]);
CFNetDiagnosticStatus status;
status = CFNetDiagnosticCopyNetworkStatusPassively (diag, NULL);
CFRelease (diag);
if (status == kCFNetDiagnosticConnectionUp)
{
return YES;
}
else
{
NSString * title = @"No Internet Connection";
NSString * message = @"Please ensure you have an Internet Connection.";
[self showAlertWithTitle:title andMessage:message];
return NO;
}
}
좋아요, 좋아요. 그래서 위의 방법은 UIWebView에 데이터를로드하고로드하기 전에 호출됩니다.
내가 말했듯이 - WiFi 네트워크를 통해 완벽하게 작동합니다.
WiFi가 꺼져 있거나 (연결되어 있지 않거나 연결되어 있지 않음) 장치가 3G/4G 네트워크 용 SIM을 사용하는 경우.
라인은 어디에 전화입니다 :
status = CFNetDiagnosticCopyNetworkStatusPassively (diag, NULL);
는 긴 상당을 반환
kCFNetDiagnosticConnectionDown
그래서 그러므로 내 테스트가 실패하고 난 사용자에게 경고 UIAlertView를 표시합니다.
하지만 네트워크가 있습니다! 나는이에 테스트 라인을 변경하는 경우 :
if ((status == kCFNetDiagnosticConnectionUp) || (status == kCFNetDiagnosticConnectionDown))
그것은 3G/4G를 통해 작동하고 웹 페이지를 다운로드 - 그래서 장치 또는 네트워크 잘못이 아니다.
그러나 CFNetDiagnosticCopyNetworkStatusPassively
에 대한 전화는 3G/4G에서만 실패합니다.
아이디어가 있으십니까?
최근 광고 및 머천다이징 기한을 지키기 위해 최근에 앱 스토어로 급히 돌아가는 앱에서이 코드가 발견되었으며 코드에 오류가있는 경우이를 수정하고 다시 제출해야합니다.
에 Reachability.h 및 Reachability.m을 가지고? – Anthone
무엇을 의미합니까? – iOSProgrammingIsFun
여기에 버그에 대한 링크 및/또는 "dupe" –