检测无线网络的名称

时间:2012-11-02 12:58:57

标签: iphone ios xcode

是否可以运行一个方法来返回用户所连接的无线网络的名称?在我的应用程序内部,我希望能够返回用户所连接的无线网络的名称。

2 个答案:

答案 0 :(得分:8)

这对我来说很完美:

#import <SystemConfiguration/CaptiveNetwork.h>

CFArrayRef myArray = CNCopySupportedInterfaces();
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
//    NSLog(@"SSID: %@",CFDictionaryGetValue(myDict, kCNNetworkInfoKeySSID));
NSString *networkName = CFDictionaryGetValue(myDict, kCNNetworkInfoKeySSID);

if ([networkName isEqualToString:@"Hot Dog"])
{
    self.storeNameController = [[StoreDataController alloc] init];
    [self.storeNameController addStoreNamesObject];
}
else {
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Connection Failed"
                                                   message: @"Please connect to the Hot Dog network and try again"
                                                  delegate: self
                                         cancelButtonTitle: @"Close"
                                         otherButtonTitles: nil];

    [alert show];

答案 1 :(得分:6)

Developer.apple,您可以使用 CNCopyCurrentNetworkInfo

它返回给定网络接口的当前网络信息。

CFDictionaryRef CNCopyCurrentNetworkInfo (
   CFStringRef interfaceName
);

它包含一个包含界面当前网络信息的字典。所有权遵循创建规则。

注意 适用于iOS 4.1及更高版本

示例:

此示例在真实设备中可以正常工作,它可能会在模拟器中崩溃。

添加 SystemConfiguration.framework

导入 CaptiveNetwork标题与下面相同

#import <SystemConfiguration/CaptiveNetwork.h>

然后编写以下代码。

    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"];
    NSLog(@"network name: %@",ssid);

使用 Bonjour ,应用程序都会在本地网络上宣传自己,并在网络上显示此应用程序的其他实例列表

请参阅示例Witap应用程序