iOS-可访问性不工作

iOS-可访问性不工作,ios,reachability,Ios,Reachability,我正在使用这个库: 有时,当我检查以下表达式时,会出现问题: [[ReachabilityManager sharedManager]可访问性]是可访问的]返回否何时应为是。我知道有互联网,因为我同时调用Rest服务 另外,如果我执行[Reachability Reachability with hostname:@“www.google.com”]并请求方法isReachable然后按我的预期工作 我的测试很简单,在emulator上试用,然后拔下以太网电缆 @implementation R

我正在使用这个库:

有时,当我检查以下表达式时,会出现问题:
[[ReachabilityManager sharedManager]可访问性]是可访问的]
返回
何时应为
。我知道有互联网,因为我同时调用Rest服务

另外,如果我执行
[Reachability Reachability with hostname:@“www.google.com”]
并请求方法
isReachable
然后按我的预期工作

我的测试很简单,在emulator上试用,然后拔下以太网电缆

@implementation ReachabilityManager

#pragma mark -
#pragma mark Default Manager
+ (ReachabilityManager *)sharedManager {
    static ReachabilityManager *_sharedManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedManager = [[self alloc] init];
    });

    return _sharedManager;
}

#pragma mark -
#pragma mark Memory Management
- (void)dealloc {
    // Stop Notifier
    if (_reachability) {
        [_reachability stopNotifier];
    }
}

#pragma mark -
#pragma mark Class Methods
+ (BOOL)isReachable {
    return [[[ReachabilityManager sharedManager] reachability] isReachable];
}

+ (BOOL)isUnreachable {
    return ![[[ReachabilityManager sharedManager] reachability] isReachable];
}

+ (BOOL)isReachableViaWWAN {
    return [[[ReachabilityManager sharedManager] reachability] isReachableViaWWAN];
}

+ (BOOL)isReachableViaWiFi {
    return [[[ReachabilityManager sharedManager] reachability] isReachableViaWiFi];
}

#pragma mark -
#pragma mark Private Initialization
- (id)init {
    self = [super init];

    if (self) {
        // Initialize Reachability
        self.reachability = [Reachability reachabilityWithHostname:@"www.google.com"];

        // Start Monitoring
        [self.reachability startNotifier];
    }

    return self;
}

@end
宣布一个布尔

BOOL _isInternetAvaliable;
在你的可达性中

-(void) initializeReachability {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

    //hostReachability
    NSString *remoteHostName = @"www.apple.com";
    self.hostReachability = [Reachability reachabilityWithHostName:remoteHostName];
    [self.hostReachability startNotifier];
    [self updateInterfaceWithReachability:self.hostReachability];

    //internetReachability
    self.internetReachability = [Reachability reachabilityForInternetConnection];
    [self.internetReachability startNotifier];
    [self updateInterfaceWithReachability:self.internetReachability];

    //wifiReachability
    self.wifiReachability = [Reachability reachabilityForLocalWiFi];
    [self.wifiReachability startNotifier];
    [self updateInterfaceWithReachability:self.wifiReachability];

}


- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
    if (reachability == self.hostReachability)
    {
        [self configurereachability:reachability];
    }

   if (reachability == self.internetReachability)
   {
       [self configurereachability:reachability];
   }

   if (reachability == self.wifiReachability)
   {
       [self configurereachability:reachability];
   }
}


- (void)configurereachability:(Reachability *)reachability
    {
    NetworkStatus netStatus = [reachability currentReachabilityStatus];
    BOOL connectionRequired = [reachability connectionRequired];

    switch (netStatus)
    {
        case NotReachable:        {
            _isInternetAvaliable = NO;
            break;
        }

        case ReachableViaWWAN:        {
            _isInternetAvaliable = YES;
           break;
        }
        case ReachableViaWiFi:        {
            _isInternetAvaliable = YES;
            break;
        }
    }

    if (connectionRequired)
    {
        _isInternetAvaliable = NO;
    }
}


-(BOOL) isInternetAvailable {
    return _isInternetAvaliable;
}
现在您已准备好呼叫并访问internet状态

if([[ReachabilityManager sharedManager] isInternetAvailable]){
  //Internet on
}

最后我找到了一个可靠的解决方案

尝试使用apple的可达性类,您可以下载源代码,您只是在检查主机可达性,对吗?我想测试internet连接。我已经添加了工作代码,请将其添加到您的类中并检查。[[ReachabilityManager sharedManager]isInternetAvailable]此代码始终返回YES。我已再次检查了我的代码在我的项目中是否正常工作,检查您是否未连接到任何Wifi或WAN网络。调试
配置可达性:
方法,如果您没有以任何方式连接到internet
netStatus
应获得
不可访问
&它应返回NOI。我可以上传摘要以查看我对您代码的改编。在我看来这很好,但很奇怪为什么总是返回yes。我直接从appDelegate调用
InitializeRachability
方法,并使用选项完成启动:方法
[[ReachabilityManager sharedManager]InitializeRachability]
if([[ReachabilityManager sharedManager] isInternetAvailable]){
  //Internet on
}