【发布时间】:2019-02-28 18:40:15
【问题描述】:
我们正在将移动应用程序从 iOS 原生 (Swift) 转换为 Xamarin.iOS(因此它最终可以部署到多个操作系统)。
我正在尝试研究如何在 Xamarin.iOS 中执行以下操作: 1 - 检查 VPN 连接是否在 iOS 设备上激活/启用 2 - 调出 VPN 设置屏幕(或者更好的是,自动启用特定的 VPN)
对于: 1 - 这是https://docs.microsoft.com/en-us/dotnet/api/networkextension.nevpnstatus 适用吗? 2 - https://docs.microsoft.com/en-us/dotnet/api/networkextension.netunnelprovidermanager 也一样?
现有 Swift 代码的片段:
func connectToVpn(){
//mention the connection name instead of exposing the server
//let connectUrl = URL(string: "mobileconnect://connect?name=*********")
let connectUrl = URL(string: "mobileconnect://connect?")
if UIApplication.shared.canOpenURL(connectUrl!) == true
{
UIApplication.shared.openURL(connectUrl!)
}
}
var isVpnConnected : Bool {
let dict = CFNetworkCopySystemProxySettings()?.takeUnretainedValue() as? [String: AnyObject]
guard let keys = dict?["__SCOPED__"]?.allKeys as? [String] else{
return false
}
for key in keys {
if key.contains("tap") || key.contains("tun") || key.contains("ppp") {
return true
}
}
return false
}
任何 cmets/suggestions/youtube 视频/博客条目链接将不胜感激。
编辑: For 1 - 意识到我不需要检查 VPN 状态,只需 ping 内部服务器/主机以查看它是否响应。
【问题讨论】:
标签: ios xamarin xamarin.ios vpn