可达性 iOS 无法正常工作

Posted

技术标签:

【中文标题】可达性 iOS 无法正常工作【英文标题】:Reachability iOS doesn't work fine 【发布时间】:2015-03-17 11:40:51 【问题描述】:

我们正在开发一个模块,用于检查 Internet 连接是否处于活动状态或未处于活动状态或已禁用。前面的场景运行良好,除了存在 WI-FI 连接但互联网未激活的情况。我们已确保未启用数据移动连接(3G、4G)。

我们已经看到,每个人都建议使用 Tony Million 的 Reachability 类,它取代了 Apple 的类。

下面是我们正在使用的代码:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
Reachability *reachability = [Reachability reachabilityWithHostname:@"www.google.com"]; //Cambiar por el servidor

    reachability.reachableBlock = ^(Reachability *reachability) 
        NSLog(@"Network is reachable.");

    ;

    reachability.unreachableBlock = ^(Reachability *reachability) 
       NSLog(@"Network is unreachable.");

    ;

    // Start Monitoring
    [reachability startNotifier];

    return YES;

是否有 WI-FI 连接但网络不活跃,它不起作用,因为它转到:

reachability.reachableBlock = ^(Reachability *reachability) 
    NSLog(@"Network is reachable.");

而不是

reachability.unreachableBlock = ^(Reachability *reachability) 
   NSLog(@"Network is unreachable.");


我们缺少什么?

提前谢谢你,

问候

【问题讨论】:

请参考:***.com/questions/13411606/… 我用过这个,非常棒:github.com/tonymillion/Reachability 这是我在 Pandemic iPad 应用程序中放入的内容。 【参考方案1】:

试试这个,

- (BOOL)isNetAvailable

    BOOL isNetAvailable = NO;

    Reachability *reach = [Reachability reachabilityWithHostName:@"www.google.com"];
    NetworkStatus netStatus = [reach currentReachabilityStatus];
    if (netStatus != NotReachable)
    
        isNetAvailable = YES;
    
    else
    
        isNetAvailable = NO;
    
    return  isNetAvailable;

【讨论】:

【参考方案2】:

你可以使用:

NSURLRequest *nsrequest = [NSURLRequest requestWithURL:[NSURL URLWithString: @"http://www.google.com"]];
NSHTTPURLResponse *response = nil;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest:nsrequest returningResponse:&response error:&error];

if(response.statusCode==0)
    NSLog(@"Network is unreachable.");

else
    NSLog(@"Network is reachable.");

【讨论】:

以上是关于可达性 iOS 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 的可达性问题

如何在互联网可达性上使用 ios 快速更改状态栏颜色?

当存在多个网络接口时,可访问性框架在检测接口类型时无法正常工作

使用可达性通知用户互联网连接

如何使用可达性类来检测有效的互联网连接?

iOS 可达性错误不会显示