可达性帮助 - WiFi 检测

Posted

技术标签:

【中文标题】可达性帮助 - WiFi 检测【英文标题】:Reachability Help - WiFi Detection 【发布时间】:2011-08-19 14:02:23 【问题描述】:

我已将 Reachability 导入到我的应用程序中,我有几个操作方法问题要问大家。让我先解释一下我的应用程序和其他工具。

此应用程序同时与两个事物进行通信,即 ad-hoc 网络和通过 3G 的互联网。注意:ad-hoc 网络未连接到互联网。这完美地工作 - 它已经实现并进行了出色的测试。

话虽如此,我想实现可达性来检测两件事。

1) 用户是否连接到 wifi ad-hoc 网络? (如果可能的话,更好的是检测它是否连接到前缀为 WXYZ 的 wifi ad-hoc 网络。例如,如果列出了两个网络,一个称为 Linksys,另一个称为 WXYZ-Testing_Platform,它知道无论它是否连接到 WXYZ)。

2) 用户可以通过3G(或2G等)连接互联网并访问我们的服务器吗?

提前致谢

编辑以包括未来观众的答案:

对于 1),我的代码如下所示:

.h
#import <SystemConfiguration/CaptiveNetwork.h> //for checking wifi network prefix

.m
- (BOOL) connectedToWifi


    CFArrayRef myArray = CNCopySupportedInterfaces();
    // Get the dictionary containing the captive network infomation
    CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));

    NSLog(@"Information of the network we're connected to: %@", captiveNtwrkDict);

    NSDictionary *dict = (__bridge NSDictionary*) captiveNtwrkDict;
    NSString* ssid = [dict objectForKey:@"SSID"];

    if ([ssid rangeOfString:@"WXYZ"].location == NSNotFound || ssid == NULL)
    
        return false;
    
    else
    
        return true;
    

对于 2),我导入了 Reachability 并在我连接服务器时使用此方法...注意:将 http://www.google.com 替换为服务器信息

-(void) checkIfCanReachServer

UIAlertView *errorView;
    Reachability *r = [Reachability reachabilityWithHostName:@"http://www.google.com"];
    NetworkStatus internetStatus = [r currentReachabilityStatus];


    if(internetStatus == NotReachable) 
        errorView = [[UIAlertView alloc] 
                     initWithTitle: @"Network Error" 
                     message: @"Cannot connect to the server." 
                     delegate: self 
                     cancelButtonTitle: @"OK" otherButtonTitles: nil];  
        [errorView show];
    

【问题讨论】:

【参考方案1】:

Reachability 仅让您知道设备是否可以成功向外发送数据包。所以 对于 1) 你应该参考iPhone get SSID without private library。对于 2) 您将仅使用 Reachability 来检查 Internet 连接,然后您需要使用 NSURLConnection 或其他网络库来确保您可以访问您的服务器。

【讨论】:

以上是关于可达性帮助 - WiFi 检测的主要内容,如果未能解决你的问题,请参考以下文章

iphone SDK检测Wifi和运营商网络

Unity判断网络是否连接以及判断是否连接WiFi

可达性和可达性WithHostName

可达性转到“Wi-Fi 设置”按钮不起作用

管理 wifi 可达性更改的正确方法?

为啥可达性示例应用程序在这里停滞不前?