我想为iOS中的VPN连接创建onDemandRule
要求如下。
如果蜂窝和wifi均可用 和wifi ssid =“ ABC” 只能运行VPN,否则它将停止。
我曾尝试关注OnDemandRule
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,它就可以工作
但是如果我关闭蜂窝数据,它不会断开连接。 有人可以让我知道我在这里做错了吗。
答案 0 :(得分:1)
您应该阅读规则,例如一组防火墙规则,NEVPNManager
浏览规则列表,然后遵循适用的第一条规则。在您的示例中,当您关闭蜂窝数据时,它将评估规则1:wifi + SSID“ ABC”。如果该规则满足,即您已连接到WiFi SSID“ ABC”,则该VPN将被连接。如果没有,NEVPNManager
将通过下一条规则。
如果关闭蜂窝电话,则第一个规则仍然适用。 (您仍然可以连接WiFi)。 NEVPNManager
无法区分手机开/关。它只能区分使用哪种接口:蜂窝,WiFi或任何接口。