我已经将可到达性导入到我的应用程序中,并且我对所有人都有一些操作方法问题。首先让我解释一下我的应用程序和其他工具。

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

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

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

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

提前致谢

编辑以包括对 future 观察者的答案:

对于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),我导入了可达性,并在每次连接到服务器时都使用此方法来使用它。注:将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),您应该引用iPhone get SSID without private library。对于2),您将仅使用可达性来检查Internet连接,然后需要使用NSURLConnection或其他网络库来确保可以访问服务器。

关于iphone - 可达性帮助-WiFi检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7122722/

10-09 01:48