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
}