Мы конвертируем мобильное приложение из нативного 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
}
Будем весьма благодарны за любые комментарии / предложения / ссылки на видео YouTube / записи в блогах.
Изменить: для 1 - понял, мне не нужно проверять состояние VPN, просто пинговать внутренний сервер / хост, чтобы посмотреть, отвечает ли он.