Iphone互联网连接(可达性)

lud*_*udo 1 iphone objective-c reachability

我看到任何有关可达性的帖子,但人们并没有真正给出问题的确切答案.在我的应用程序中,我使用来自apple的Reachability代码,在我的appDelegate中,我使用:


-(BOOL)checkInternet {

Reachability *reachability = [Reachability reachabilityWithHostName:@"www.google.com"];

NetworkStatus internetStatus = [reachability currentReachabilityStatus];
BOOL internet;

if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN)) {
    internet = NO;
}else {
    internet = YES;
}
return internet;    
}
Run Code Online (Sandbox Code Playgroud)

所以问题是即使我有互联网连接,这段代码告诉我,我没有.有谁知道该怎么做才能使这个工作?

谢谢,

Fra*_*rar 7

您可能应该使用+[Reachability reachabilityForInternetConnection]而不是使用特定名称的可达性(当然,除非您实际需要).

毕竟,当您仍然有可用的互联网连接时,可能存在各种原因导致特定服务器无法访问.

这就是我做的:

BOOL hasInet;
Reachability *connectionMonitor = [Reachability reachabilityForInternetConnection];
[[NSNotificationCenter defaultCenter]
    addObserver: self
    selector: @selector(inetAvailabilityChanged:)
    name:  kReachabilityChangedNotification
    object: connectionMonitor];

hasInet = [connectionMonitor currentReachabilityStatus] != NotReachable;
Run Code Online (Sandbox Code Playgroud)

然后

-(void)inetAvailabilityChanged:(NSNotification *)notice {
    Reachability *r = (Reachability *)[notice object];
    hasInet = [r currentReachabilityStatus] != NotReachable;
}
Run Code Online (Sandbox Code Playgroud)

这对我很有用.

  • 我想你忘了调用[_connectionMonitor startNotifier]; (2认同)