这里有一个奇怪的错误。这仅在 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 );
返回一个 long 等价于:
kCFNetDiagnosticConnectionDown
因此,我的测试失败了,我向用户显示警告 UIAlertView。
但是网络是有的!如果我将测试行更改为:
if ( ( status == kCFNetDiagnosticConnectionUp ) || ( status == kCFNetDiagnosticConnectionDown ) )
它在 3G/4G 上运行并下载网页 - 因此设备或网络没有故障。
但呼叫CFNetDiagnosticCopyNetworkStatusPassively
仅在 3G/4G 上失败。
有任何想法吗?
这刚刚在我最近加急进入 App Store 的应用程序中发现,以满足广告和商品销售的最后期限,如果我的代码有错误 - 我需要尽快修复并重新提交。