检测无线网络的名称

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

这对我来说很完美:

#import  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]; 

从Developer.apple ,您可以使用CNCopyCurrentNetworkInfo

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

 CFDictionaryRef CNCopyCurrentNetworkInfo ( CFStringRef interfaceName ); 

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

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

例:

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

添加SystemConfiguration.framework

导入 CaptiveNetwork标头,如下所示

#import

然后写下面的代码。

  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应用程序