这里有一个奇怪的错误。它只会在iOS设备独占3G/4G网络时出现,即如果使用WiFi,则没有错误,一切都可以正常工作。
- ( 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(或不可用/未连接),设备使用SIM卡进行3G / 4G网络。
调用以下行:
status = CFNetDiagnosticCopyNetworkStatusPassively ( diag, NULL );
返回与以下相当的长整型:
kCFNetDiagnosticConnectionDown
因此,我的测试失败并向用户显示警告UIAlertView。但是网络是存在的!如果我将测试行更改为以下内容:
if ( ( status == kCFNetDiagnosticConnectionUp ) || ( status == kCFNetDiagnosticConnectionDown ) )
它可以在3G/4G上运行并下载网页 - 因此设备或网络没有问题。但是,对于3G/4G,调用CFNetDiagnosticCopyNetworkStatusPassively失败了。有什么想法吗?这刚刚在我最近加快进入应用商店以满足广告和销售期限的应用程序中发现,如果我的代码有错误 - 我需要立即修复并重新提交。