Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift iOS VPN随需应变规则_Swift_Xcode_Vpn_Nevpnmanager - Fatal编程技术网

Swift iOS VPN随需应变规则

Swift iOS VPN随需应变规则,swift,xcode,vpn,nevpnmanager,Swift,Xcode,Vpn,Nevpnmanager,我想为ios中的VPN连接创建onDemandRule 要求如下 如果手机和wifi都可用 和wifi ssid=“ABC” 而不是只有VPN会运行,否则它应该停止 我试过遵守规则 let onDemandRule = NEOnDemandRuleConnect() onDemandRule.interfaceTypeMatch = .wiFi onDemandRule.ssidMatch = ["ABC"]

我想为ios中的VPN连接创建onDemandRule

要求如下

如果手机和wifi都可用 和wifi ssid=“ABC” 而不是只有VPN会运行,否则它应该停止

我试过遵守规则

             let onDemandRule = NEOnDemandRuleConnect()
            onDemandRule.interfaceTypeMatch = .wiFi
            onDemandRule.ssidMatch = ["ABC"]

            let onDemandRule1 = NEOnDemandRuleConnect()
            onDemandRule1.interfaceTypeMatch = .cellular                
            self.vpnManager.isOnDemandEnabled = true

            let onDemandRule2 = NEOnDemandRuleDisconnect()
            onDemandRule2.interfaceTypeMatch = .any

            self.vpnManager.onDemandRules = [onDemandRule, onDemandRule1, onDemandRule2]
只要我连接到名为ABC的wifi,它就会工作

但如果我关闭手机数据,它不会断开连接。
有人能告诉我我做错了什么吗。

你应该像阅读一组防火墙规则一样阅读规则,
NEVPNManager
浏览规则列表,然后遵循适用的第一条规则。在您的示例中,当您关闭手机数据时,它将评估规则1:wifi+SSID“ABC”。如果该规则满足,即您连接到WiFi SSID“ABC”,则vpn将被连接。否则,
NEVPNManager
将执行下一条规则


如果您关闭手机,第一条规则仍然适用。(您仍然可以使用WiFi连接)
NEVPNManager
无法区分蜂窝网络的开/关。它只能区分所使用的接口:蜂窝、WiFi或任何接口。

谢谢Marcel。。你知道我该如何处理这种情况吗?意味着一旦手机数据关闭VPN就应该停止?除onDemand规则外,还有其他方法吗?VPNManager不关心收音机是否打开,仅当它是主接口时。在配置概要文件参考中,您可以找到您的可能性