iOS可达性:主机方法存在问题
我已经创建了一个方法来检查主机是否可以访问。我从苹果开发者网站下载了可达性类(包括.h和.m),并导入到我的项目中。我已将NSString名称作为URL(主机名)传递。主机名为。然而,不管我传递给这个方法的主机名是什么,它总是返回no(connectToHost)。代码如下:iOS可达性:主机方法存在问题,ios,host,reachability,Ios,Host,Reachability,我已经创建了一个方法来检查主机是否可以访问。我从苹果开发者网站下载了可达性类(包括.h和.m),并导入到我的项目中。我已将NSString名称作为URL(主机名)传递。主机名为。然而,不管我传递给这个方法的主机名是什么,它总是返回no(connectToHost)。代码如下: - (BOOL) checkHostAvailability:(NSString *)Name{ BOOL connectToHost; hostReach = [[Reachability
- (BOOL) checkHostAvailability:(NSString *)Name{
BOOL connectToHost;
hostReach = [[Reachability reachabilityWithHostName:Name] retain];
[hostReach startNotifier];
NetworkStatus hostStatus = [hostReach currentReachabilityStatus];
NSLog(@"Name: %@", Name);
NSLog(@"hostStatus is %@", hostStatus);
if(hostStatus == NotReachable){
NSLog(@"Here is the checkHostAvailability Method and host NOT reachable");
connectToHost = NO;
}else{
NSLog(@"Here is the checkHostAvailability Method and host is reachable");
connectToHost = YES;
}
return connectToHost;
}
经过几个小时的调查,我发现NetworkStatus hostStatus始终等于null。我想这就是这个方法不起作用的原因。我花了8个小时来找出这个代码的问题并搜索这个网站,但是我仍然找不到问题和解决方案
请帮忙,非常感谢 从主机名中删除“http://”。如果要使用
http://www.google.com
作为主机,您可以传递'google.com'作为主机名。不要包括http://
、结束斜杠或任何可能跟在结束斜杠后面的内容<代码>www.可以包含在内
[Reachability reachabilityWithHostName:@"google.com"];
这是我用于所有连接检查的代码(请参见此处:),它对我来说运行良好:
-(BOOL) hasConnection{
//check network status _ iphone settings
Reachability *internetReachability = [Reachability reachabilityForInternetConnection];
[internetReachability startNotifier];
NetworkStatus status=[internetReachability currentReachabilityStatus];
if (status == NotReachable) {
NSLog(@"No internet");
//[internetReachability stopNotifier];
return NO;
}else {
NSLog(@"Internet is ON");
// [internetReachability stopNotifier];
//check internet connection _reachable path
Reachability *hostReachable=[Reachability reachabilityWithHostName:@"www.apple.com"];
BOOL connectionRequired =[hostReachable connectionRequired];
NSLog(@"%hhd",connectionRequired);
[hostReachable startNotifier];
Reachability *wifiReachability=[Reachability reachabilityForLocalWiFi];
[wifiReachability startNotifier];
NetworkStatus hostStatus=[hostReachable currentReachabilityStatus];
if(hostStatus == NotReachable){
NSLog(@"No internet connection");
[hostReachable stopNotifier];
return NO;
}else{
NSLog(@"Connection is ok");
[hostReachable stopNotifier];
return YES;
}
}
}