iOS VPN 点播规则
iOS VPN on Demand rules
我想为 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,它就会工作
但如果我关闭蜂窝数据,它不会断开连接。
有人可以让我知道我在这里做错了什么吗?
您应该像阅读一组防火墙规则一样阅读规则,NEVPNManager
浏览规则列表并遵循第一个适用的规则。在您的示例中,当您关闭蜂窝数据时,它将评估规则 1:wifi + SSID "ABC"。如果该规则满足,即您连接到 WiFi SSID "ABC",vpn 将被连接。如果没有,NEVPNManager
将执行下一条规则。
如果您关闭手机网络,第一条规则仍然适用。 (您仍然可以使用 WiFi 连接)。 NEVPNManager
无法区分手机 on/off。它只能区分使用哪个接口:蜂窝、WiFi 或任何接口。
我想为 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,它就会工作
但如果我关闭蜂窝数据,它不会断开连接。 有人可以让我知道我在这里做错了什么吗?
您应该像阅读一组防火墙规则一样阅读规则,NEVPNManager
浏览规则列表并遵循第一个适用的规则。在您的示例中,当您关闭蜂窝数据时,它将评估规则 1:wifi + SSID "ABC"。如果该规则满足,即您连接到 WiFi SSID "ABC",vpn 将被连接。如果没有,NEVPNManager
将执行下一条规则。
如果您关闭手机网络,第一条规则仍然适用。 (您仍然可以使用 WiFi 连接)。 NEVPNManager
无法区分手机 on/off。它只能区分使用哪个接口:蜂窝、WiFi 或任何接口。