我已经搜索过但没有看到类似的问题。
我添加了一种方法来根据可达性示例检查互联网连接。它在大多数时间都有效,但是当安装在 iPhone 上时,即使我有互联网连接(仅在 3G/EDGE 上 - WiFi 可以),它也经常失败。
基本上下面的代码返回 NO。
如果我切换到另一个应用程序,例如 Mail 或 Safari,然后连接,然后切换回该应用程序,代码会显示可以访问互联网。有点像它需要一个“插入”。
有人见过这个吗?有什么想法吗?
非常感谢 詹姆斯
+ (BOOL) doWeHaveInternetConnection{
BOOL success;
// google should always be up right?!
const char *host_name = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable) {
NSLog(@"Google is reachable: %d", flags);
}else{
NSLog(@"Google is unreachable");
}
return isAvailable;
最佳答案
看起来您已经从 Apple 示例代码中删除了一些基本的可达性代码。当您保持原样并执行此操作时会发生什么?
Reachability *hostReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
NetworkStatus netStatus = [hostReach currentReachabilityStatus];
if (netStatus == NotReachable)
{
NSLog(@"NotReachable");
}
if (netStatus == ReachableViaWiFi)
{
NSLog(@"ReachableViaWiFi");
}
if (netStatus == ReachableViaWWAN)
{
NSLog(@"ReachableViaWWAN");
}
关于iphone - 可达性有时会失败,即使我们确实有互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281232/