我有一个商业应用程序有一个完全正当的理由看到它所连接的网络的SSID:如果它连接到第三方硬件设备的Adhoc网络,它需要以不同于它的方式运行连接到互联网.
我所看到的有关获取SSID的所有内容都告诉我必须使用Apple80211,我理解这是一个私有库.我还读到,如果我使用私人图书馆Apple将不会批准该应用程序.
我被困在苹果和硬地之间,还是我在这里缺少什么?
直到今天,我使用CaptiveNetwork接口显示当前连接的Wifi的名称.iOS 9 Prerelease参考已经说过,CaptiveNetwork方法现在被删除了,但它们仍然在开始时工作.
有了最新版本,Apple似乎已经阻止了这个电话(可能是出于隐私问题?).
有没有其他方法来获得当前Wifi的名称?
这就是我今天获得SSID的方式,但你现在只获得nil:
#import <SystemConfiguration/CaptiveNetwork.h>
NSString *wifiName = nil;
NSArray *interFaceNames = (__bridge_transfer id)CNCopySupportedInterfaces();
for (NSString *name in interFaceNames) {
NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)name);
if (info[@"SSID"]) {
wifiName = info[@"SSID"];
}
}
Run Code Online (Sandbox Code Playgroud) CocoaTouch/iOS中是否有用于检测无线网络的API?我想写一个应用程序来保存手机在给定时刻可以看到的网络列表.
我试图使用此代码获取SSID
import Foundation
import SystemConfiguration.CaptiveNetwork
public class SSID {
class func getSSID() -> String{
var currentSSID = ""
let interfaces = CNCopySupportedInterfaces()
if interfaces != nil {
let interfacesArray = interfaces.takeRetainedValue() as [String : AnyObject]
if interfacesArray.count > 0 {
let interfaceName = interfacesArray[0] as String
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)
if unsafeInterfaceData != nil {
let interfaceData = unsafeInterfaceData.takeRetainedValue() as Dictionary!
currentSSID = interfaceData[kCNNetworkInfoKeySSID] as! String
let ssiddata = NSString(data:interfaceData[kCNNetworkInfoKeySSIDData]! as! NSData, encoding:NSUTF8StringEncoding) as! String
// ssid data from hex …Run Code Online (Sandbox Code Playgroud) 这是一个调整,所以目标是越狱设备,而不是应用程序商店.我尝试过挂钩不同的方法,SBWiFiManager但是当wifi强度发生变化(如此连续)或者在网络发生变化后相当延迟之后,它们会被调用.
有没有其他方法来获取通知(或其他方法挂钩)去了wifi网络改变?
我知道你现在可以使用公共API获取当前的SSID,但我需要告知它何时发生变化.
Apple在OS 4.1中引入了CNCopyCurrentNetworkInfo()函数.
根据文件,它应该:
返回给定网络接口的当前网络信息.
但是,在使用时,它似乎返回正确的SSID(可读网络名称),但返回垃圾BSSID(无线接入点的MAC地址).我试过用两个不同的iPad连接到多个不同的网络,结果是一样的.
在我的家庭网络上,该函数返回:
{BSSID ="0:19:db:8:5c:cc"; SSID ="Das Boot"; SSIDDATA = <44617320 426f6f74>; }
实际上,我的路由器的BSSID是0:4:ed:66:81:xx其中xx绝对不是cc
有没有人有使用这个功能的经验,我错过了一些明显的东西(更有可能)或者这是一个Apple bug(更不可能)?
任何输入都非常感谢,
Nicke.
我使用以下代码来检索iPod连接的WiFi网络的SSID.
NSArray *ifs = (id)CNCopySupportedInterfaces();
NSLog(@"%s: Supported interfaces: %@", __func__, ifs);
id info = nil;
for (NSString *ifnam in ifs) {
info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
NSLog(@"%s: %@ => %@", __func__, ifnam, info);
if (info && [info count]) {
break;
}
[info release];
}
Run Code Online (Sandbox Code Playgroud)
有时这段代码没有返回我的设备连接的网络的正确SSID.有关为什么没有正确检索SSID的指针?CNCopyCurrentNetworkInfo包是否依赖于iOS版本的设备?
谢谢.
我想使用CNCopySupportedInterfacesAPI来获取Wifi接口的SSID.但我对API有疑问CNCopySupportedInterfaces.此API是否会提供所有已配置Wifi接口的列表,或仅提供当前处于活动状态的接口或有关当时可访问(但未配置)的所有接入点的信息?