Swift 判断设备 VPN 是否打开

2,860 阅读1分钟

Swift 判断设备VPN是否打开,各种 VPN 类型(tap、tun、ppp、ipsec、ipsec0)都可判断。

代码如下:

/// 判断VPN是否打开
@objc static var sta_isVPNOn: Bool {
    
    guard let cfDict = CFNetworkCopySystemProxySettings() else {
        return false
    }
    
    let nsDict = cfDict.takeRetainedValue() as NSDictionary
    
    guard let keys = nsDict["__SCOPED__"] as? [String:Any] else {
        return false
    }
    
    let keyValues: [String] = [
        "tap",
        "tun",
        "ppp",
        "ipsec",
        "ipsec0",
    ]
    
    var result: Bool = false
    for key in keys.keys {
        keyValues.forEach { (value) in
            if key.contains(value) {
                result = true
            }
        }
    }
    
    return result
}