首页 > 解决方案 > 在 iOS 12 中检查设备是否连接到 VPN

问题描述

我正在使用下面的代码(兼容 Swift 3 和 Swift 4)来检查在 iOS 12 及更高版本中无法运行的 iOS 设备上的 VPN 连接。如何在 iOS 12 中检查 vpn 连接

func isVPNConnected() -> Bool {
    let cfDict = CFNetworkCopySystemProxySettings()
    let nsDict = cfDict!.takeRetainedValue() as NSDictionary
    let keys = nsDict["__SCOPED__"] as! NSDictionary

    for key: String in keys.allKeys as! [String] {
        if (key == "tap" || key == "tun" || key == "ppp" || key == "ipsec" || key == "ipsec0") {
            return true
        }
    }
    return false
}

谢谢您的帮助。

标签: iosswiftvpn

解决方案


自 iOS 12 和 iOS 13 起,按键列表已更改

增加了 2 把钥匙

utun1 和 utun2

所以函数应该是:

static func isConnectedToVPN() -> Bool {

    let cfDict = CFNetworkCopySystemProxySettings()
    let nsDict = cfDict!.takeRetainedValue() as NSDictionary
    let keys = nsDict["__SCOPED__"] as! NSDictionary
    for key: String in keys.allKeys as! [String] {
           if (key == "tap" || key == "tun" || key == "ppp" || key == "ipsec" || key == "ipsec0" || key == "utun1" || key == "utun2") {
               return true
           }
       }
       return false
}

推荐阅读