【问题标题】:How to detect if my app's vpn is connected in iOS?如何检测我的应用程序的 vpn 是否在 iOS 中连接?
【发布时间】:2020-05-29 23:58:30
【问题描述】:

我想知道我的 VPN 是否已连接。如果是这样,我不会再次连接并会显示一条消息“它已连接”。

但如果不是我的 VPN,我应该连接它。

我可以这样做吗?

settings ["__SCOPED__": {
    en0 =     {
        ExceptionsList = (
            "*.local",
            "169.254/16"
        );
        FTPPassive = 1;
    };
}, "ExceptionsList": <__NSCFArray 0x282a58740>(
*.local,
169.254/16
)
, "FTPPassive": 1]

【问题讨论】:

    标签: ios objective-c swift vpn


    【解决方案1】:

    您可以使用此代码检查 vpn 连接:

    var isConnectedToVpn: Bool {
            if let settings = CFNetworkCopySystemProxySettings()?.takeRetainedValue() as? Dictionary<String, Any>,
                let scopes = settings["__SCOPED__"] as? [String:Any] {
                for (key, _) in scopes {
                        if key.contains("tap") || key.contains("tun") || key.contains("ppp") || key.contains("ipsec") || key.contains("ipsec0") {
                        return true
                    }
                }
            }
            return false
        }
    

    【讨论】:

    • 我更新了问题。无论是否连接,都会显示相同的值。所以它总是返回 false
    • 尝试添加key.contains("utun1") || key.contains("utun2")
    • @Mac3n,key 始终是 en0,两种情况都试过(有或没有 vpn)?知道为什么吗?
    猜你喜欢
    • 2022-06-21
    • 1970-01-01
    • 2019-04-18
    • 2013-04-23
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多