Ios7 网络可达性返回假值?
我有网络连接,可以用浏览器浏览 这是我的代码,可以用Ios7 网络可达性返回假值?,ios7,reachability,afnetworking-2,Ios7,Reachability,Afnetworking 2,我有网络连接,可以用浏览器浏览 这是我的代码,可以用AFNetworking检查可达性 - (BOOL)connected { return [AFNetworkReachabilityManager sharedManager].reachable; } 在ViewDidLoad中 BOOL isOnline = [self connected]; if(isOnline == YES) { NSLog(@"YES"); } els
AFNetworking
检查可达性
- (BOOL)connected {
return [AFNetworkReachabilityManager sharedManager].reachable;
}
在ViewDidLoad中
BOOL isOnline = [self connected];
if(isOnline == YES)
{
NSLog(@"YES");
}
else
{
NSLog(@"NO");
}
它只显示否
,我不知道为什么
使用AFNetworking
是否有检查可达性的最简单方法?我想启动监控
不会被调用,请尝试执行以下操作:
- (void)viewDidLoad {
[super viewDidLoad];
....
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
}
如果没有解决你的问题,
那么您的问题可能是由于调用<代码> [AFNETWorkReababyListMealsSyrdMe]。
我也有同样的问题。我正在调用web服务,而AFNetworkReachabilityManager
尚未完成监视过程,并返回reachable=NO
,尽管我的internet连接正在工作
- (void) callWebService {
NSLog(@"Calling Webservice...");
if ([AFNetworkReachabilityManager sharedManager].reachable == NO) {
NSLog(@"%@", kErrorNoInternet);
return;
}
// Now, proceed to call webservice....
}
所以,为了解决这个问题,我做了一个诡计。延迟一段时间后调用web服务(在本例中为0.05秒)
之前:
[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice
输出:
[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice
之后:
[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice
输出:
[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice
从输出中可以看出,时间差几乎不小于0.05秒(精确值为0.048秒)
希望这会有所帮助。不用等待,您可以使用块来确保只有在网络可用时才会调用web服务
[[AFNetworkReachabilityManager sharedManager]startMonitoring];
[[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
{
if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi)
{
// connected. you can call your web service here
}else
{
// internet disconnected
}
}];
无论如何,它应该在那里,兄弟,但奇怪的是它工作正常,尝试注册更改,检查这个。当我用这些代码测试时,它甚至没有显示NSLog兄弟。[[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus状态){NSLog(@“Reachability:%@”,AFStringFromNetworkReachabilityStatus(状态));}];我还添加了#import“AFNetworking.h”#import“AFNetworkReachabilityManager.h”。我需要什么?@Yahiko在真实设备上进行测试?尝试关闭无线,切换到蜂窝数据,然后返回无线等。您还可以检查networkReachabilityStatus==afnetworkreachabilitystatus未知。若状态未知,那个么您可以假设网络可以访问并发出请求