ios - 在 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
}
谢谢您的帮助。
解决方案
自 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
}
推荐阅读
- r - 通过基于汇总条件替换因子来清理具有空值的数据框列
- flutter - Flutter:通过按下后退按钮解除键盘时,不关注文本字段(多行)
- svelte - Svelte 商店未在屏幕上更新
- python - Python 列表到 Django 模型中
- python - Django 存储“状态”和对象以在多个视图中使用
- javascript - 选择时键盘不显示仅在 iOS 上
- amazon-web-services - 允许外部用户(通过 Cognito)访问 S3 存储桶和控制台
- file - Apache ignite 作为共享驱动器用于存储和检索文件
- javascript - 为 PieChart/DonutChart Google Charts VueJS 分配角色/自定义 HTML 工具提示
- docusignapi - is it possible to sign multiple embedded singers in single recipient view?