iOS VPN点播规则

时间:2019-01-28 12:48:54

标签: swift xcode vpn nevpnmanager

我想为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,它就可以工作

但是如果我关闭蜂窝数据,它不会断开连接。 有人可以让我知道我在这里做错了吗。

1 个答案:

答案 0 :(得分:1)

您应该阅读规则,例如一组防火墙规则,NEVPNManager浏览规则列表,然后遵循适用的第一条规则。在您的示例中,当您关闭蜂窝数据时,它将评估规则1:wifi + SSID“ ABC”。如果该规则满足,即您已连接到WiFi SSID“ ABC”,则该VPN将被连接。如果没有,NEVPNManager将通过下一条规则。

如果关闭蜂窝电话,则第一个规则仍然适用。 (您仍然可以连接WiFi)。 NEVPNManager无法区分手机开/关。它只能区分使用哪种接口:蜂窝,WiFi或任何接口。