首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NEHotspotConfigurationManager密码无效/SSID无错误

NEHotspotConfigurationManager密码无效/SSID无错误
EN

Stack Overflow用户
提问于 2018-02-08 01:35:09
回答 2查看 3.4K关注 0票数 6

当我使用NEHotspotConfigurationManager连接到WiFi接入点时,如果我故意使用无效的密码或SSID,我就得不到预期的编程反馈。用户通过警报收到连接失败的反馈,但在提供给apply函数的完成块中,error为nil,与成功案例相同。这使得我无法区分成功和失败的案例。NEHotspotConfigurationError同时具有.invalidSSID.invalidWPAPassphrase。我希望这些会被退回。这对我来说就像一个雷达,但我想先在这里得到一些反馈。

代码语言:javascript
复制
NEHotspotConfigurationManager.shared.removeConfiguration(forSSID: "test")
let configuration = NEHotspotConfiguration(ssid: "test", passphrase: "testasdasd", isWEP: false)
configuration.joinOnce = true
NEHotspotConfigurationManager.shared.apply(configuration) { (error) in
    // error is nil
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-08 04:22:12

在向苹果公司提交了一份报告后,这个API似乎正在按设计工作。成功/失败案例仅适用于热点配置的应用。

好消息是,我已经找到了一个合适的解决办法,使用CNCopySupportedInterfaces来验证应用程序是否确实连接到了它所说的SSID。

代码语言:javascript
复制
let ssid = "test"
NEHotspotConfigurationManager.shared.removeConfiguration(forSSID: said)
let configuration = NEHotspotConfiguration(ssid: ssid, passphrase: "testasdasd", isWEP: false)
configuration.joinOnce = true
NEHotspotConfigurationManager.shared.apply(configuration) { (error) in
    if let error = error as NSError? {
            // failure
        } else {
            if self.currentSSIDs().first == ssid {
                // Real success
            } else {
                // Failure
            }
        }
}

使用如下定义的函数:

代码语言:javascript
复制
func currentSSIDs() -> [String] {
    guard let interfaceNames = CNCopySupportedInterfaces() as? [String] else {
        return []
    }
    return interfaceNames.flatMap { name in
        guard let info = CNCopyCurrentNetworkInfo(name as CFString) as? [String:AnyObject] else {
            return nil
        }
        guard let ssid = info[kCNNetworkInfoKeySSID as String] as? String else {
            return nil
        }
        return ssid
    }
}
票数 16
EN

Stack Overflow用户

发布于 2018-08-07 01:09:57

使用错误密码的无效登录仍然是此接口的问题。如果您已经连接到ssid,则在呼叫中放置一个好的或坏的密码时,您总是会得到“已关联”。以上逻辑的唯一工作方式是,如果您将现有ssid更改为另一个有效的现有ssid,并向其传递错误的密码,则上述逻辑将捕获错误的密码。对给定的ssid使用removeConfiguration似乎没有任何效果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48670034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档