我有一个Boolean
值,可以使用以下代码检查Reachability
。
@property (nonatomic,assign) BOOL isOnline;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Reachable");
self.isOnline = YES;
});
};
reach.unreachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
self.isOnline = NO;
NSLog(@"Unable");
});
};
[reach startNotifier];
但是当我用
检查时if(self.isOnline == YES)
{
NSLog(@"YES");
}
else{
NSLog(@"NO");
}
它只显示NO。我确信Reachability
可以访问互联网并且我有联系。但Boolean
值未设置为YES
。
我该怎么做?
答案 0 :(得分:2)
似乎你正在使用Tony Million的Reachability,所以我建议的第一件事是使用isReachable
函数。
其次,在iOS7中存在此可访问性问题所以要解决此问题,您必须执行以下操作
在Reachability.m中的函数-(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flags
中,您必须提交一行
#if TARGET_OS_IPHONE
if(flags & kSCNetworkReachabilityFlagsIsWWAN)
{
// We're on 3G.
if(!self.reachableOnWWAN)
{
// We don't want to connect when on 3G.
// Comment this line
//connectionUP = NO;
}
}
#endif