直到今天,我使用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"]; 
    } 
} 
是否可以在不使用私有库的情况下获取iPhone上所有可用SSID 的列表?
我在没有私有库的情况下阅读iPhone获取SSID,这是关于获取有关当前网络的详细信息.
这个答案提到:
如果您越狱设备,您可以使用Apple80211私有框架查找可用的Wi-Fi网络及其信号强度.但这也意味着您的应用会被拒绝.
Apple拥有CaptiveNetwork API,但似乎没有一个解决方案来获取所有可用网络的列表.似乎只能通过使用Apple80211私有库或连接到所有这些库来实现.
我错过了什么,或者没有解决方案?
我听说iOS 5引入了一项功能,iOS设备可以通过ExternalAccessory框架与对接附件共享其wifi配置.问题是我在SDK文档中找不到有关实现此类方案的任何具体细节.
根据我的研究,我开始怀疑它是通过"iPhone配置实用程序"实现的,但这似乎仍然是在设备上实现的一种混乱方法.
有人有任何想法吗?
一旦wifi设置数据可用,就应该很容易将其打包并通过ExternalAccessory框架发送到设备,在那里我将相应地构建协议支持.
谢谢
有没有办法使用iPhone SDK获取WiFi信息?像信号强度,WiFi频道和SSID这样的东西是我正在寻找的主要内容.
只对Wifi信息感兴趣,而不是蜂窝信息.
我需要获取当前连接的Wi-Fi热点的名称,例如"BT OpenZone"
我被告知可以使用CaptiveNetwork特别是CNCopyCurrentNetworkInfo 来完成
我的代码到目前为止:
#import <SystemConfiguration/CaptiveNetwork.h>
...
// Get the dictionary containing the captive network infomation
CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(kCNNetworkInfoKeySSID);
// Get the count of the key value pairs to test if it has worked
int count = CFDictionaryGetCount(captiveNtwrkDict);
NSLog(@"Count of dict:%d",count);
当代码在WiFi热点的设备上运行时,captiveNtwrkDict为零.
有没有人设法让它工作?我无法在CaptiveNetworks上找到很多文档或任何示例代码示例...任何帮助将不胜感激.
我想获得一个地区的所有WiFi网络及其SSID值.但问题是如何使所有WiFi网络的SSID可用,即使我没有连接到一个.
我正在寻找一种方法来获取iOS5的objective-c中当前连接的wlan网络的信息(至少名称).
我需要这个,因为我们正在开发一个在特定网络中不起作用的应用程序.在这个网络(在我们大学),我们需要连接到服务器的端口关闭.但是还有另一个网络可用,我们想告诉用户如果他连接到上述网络,他必须切换网络.
我甚至不知道从哪里开始.有没有人有想法或任何提示?
感谢致敬
我试图使用此代码获取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 …Apple更改了有关iOS 13中WiFi的一些内容。如果要使用CNCopyCurrentNetworkInfo,则您的应用程序需要具有以下任一功能
资料来源:WWDC 19会议713
我正在使用NEHotspotConfiguration配置网络,但这样做后无法再获取当前的SSID。
以下代码在iOS 12上运行良好:
/// retrieve the current SSID from a connected Wifi network  
private func retrieveCurrentSSID() -> String? {  
    let interfaces = CNCopySupportedInterfaces() as? [String]  
    let interface = interfaces?  
        .compactMap { [weak self] in self?.retrieveInterfaceInfo(from: $0) }  
        .first  
    return interface  
}  
/// Retrieve information about a specific network interface  
private func retrieveInterfaceInfo(from interface: String) -> String? {  
    guard let interfaceInfo = CNCopyCurrentNetworkInfo(interface as CFString) as? [String: AnyObject],  
        let ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] …在iPhone SDK中,我没有看到SCDynamicStore在Mac OS X上使用相同的内容来获取无线网络当前连接的SSID名称不可用.  
有没有办法获得iPhone当前连接的SSID名称?
我看到一些应用程序这样做(AT&T的简易Wi-Fi一个)但我无法在iPhone SDK文档中找到它是如何完成的.私有或取消发布的方法可以作为概念证明(虽然我知道可能不会进入AppStore).
ios ×8
iphone ×7
cocoa-touch ×3
objective-c ×3
swift ×3
wifi ×3
ssid ×2
bssid ×1
ios13 ×1
ios5 ×1
ios9 ×1
networking ×1
wlan ×1