nehotspothelpercommand命令未调用presentui或身份验证



我正在使用nehotspotherper api,并能够成功获取扫描的wifi列表,但是当我尝试通过设置配置来连接一个可用的wifi(具有圈式门户(时,nehotspothelpercommand rastryui命令从未打电话。请检查我的下面代码

 var options = [String: NSObject]()
 options[kNEHotspotHelperOptionDisplayName] = NSLocalizedString("linq verified", comment: "") as NSObject?
    NSLog("Lets register", "")
    NEHotspotHelper.register(options: options, queue: DispatchQueue.main, handler: {(_ cmd: NEHotspotHelperCommand) -> Void in
        if  cmd.commandType == NEHotspotHelperCommandType.filterScanList {
            // scane list
            if cmd.networkList != nil {
                self.networkList = []
                var i2e1Network : [NEHotspotNetwork] = []
                for network: NEHotspotNetwork in cmd.networkList! {
                    NSLog("Found network (network.bssid) with (network.ssid)", "")
                    self.networkList.append(network)
                    if (WifiHelper.isI2E1Network(network: network)){
                        network.setConfidence(.high)
                        i2e1Network.append(network)
                    }
                }
                let response = cmd.createResponse(NEHotspotHelperResult.success)
                response.setNetworkList(i2e1Network)
                response.deliver()

                // categories all the network
                self.categoriesNetworkList()
                // +1 is for header and the current wifi cell
                self.numberOfCells = self.easyConnectNetworkList.count + self.otherNetworkList.count + self.swAppNetworkList.count + self.headerPosition + 1
                // after fetching the list of available wifi set the UI
                self.setUI()
            }else if cmd.network != nil{
                let resp : NEHotspotHelperResponse = cmd.createResponse(NEHotspotHelperResult.success)
                print(resp)
            }
        }
        else if cmd.commandType == NEHotspotHelperCommandType.evaluate{
            // evalution
            print("evaluting the network")
            cmd.network?.setConfidence(.high)
            let response = cmd.createResponse(NEHotspotHelperResult.success)
            response.setNetwork(cmd.network!)
            response.deliver()
            self.checkCaptive(cmd: cmd)
        }
        else if cmd.commandType == NEHotspotHelperCommandType.authenticate{
            // authentication
            print("authenticating the network")
            print("network::"+(cmd.network?.ssid)!)
        }else if cmd.commandType == NEHotspotHelperCommandType.presentUI{
             print("presentUI")
        }else if cmd.commandType == NEHotspotHelperCommandType.maintain{
             print("maintain")
        }
    })

当有移动网络可用时,我还有一个问题,我尝试检查圈养门户总是会使我成功。请检查以下代码

func checkCaptive(cmd: NEHotspotHelperCommand){
        let url = URL(string: "http://captive.apple.com/hotspot-detect.html")
    let request = NSMutableURLRequest(url: url!)
    request.httpMethod = "GET" //GET method
    request.bind(to: cmd)
    request.allowsCellularAccess = false
    request.cachePolicy = .reloadIgnoringCacheData
    let task = URLSession.shared.dataTask(with: request as URLRequest) { //Block for the response
        data, response, error in
        if error != nil { //Error request
            print("error : (error)")
            return
        }else{
            let html = String(data: data!, encoding: String.Encoding.utf8)
            print(html)
            if (!(html?.contains("Success"))!){
                let storyboard = UIStoryboard(name: "GetWifi", bundle: nil)
                let captiveLoginVC = storyboard.instantiateViewController(withIdentifier: "CaptivePortalLoginViewController") as! CaptivePortalLoginViewController
                                    self.navigationController?.pushViewController(captiveLoginVC, animated: true)
            }
        }
    }
    task.resume()
}

nehotspothelpercommandtype.presentui将被要求Hotspopherper,他们首先对NehotspothelpercommandType.evaluate命令进行了响应,因此我们所做的大部分代码是从评估命令中删除的,并尽可能快地响应。现在它对我们有效。

相关内容

  • 没有找到相关文章

最新更新