Я пытаюсь запустить мое приложение VPN iOS на платформе ОС Ma c с Ma c Catalyst.
Мой код работает на iOS приложениях, но почему-то не работает на Ма c ОС.
VPN не подключен. Но, кажется, доступно в сети из системных настроек на Ma c Catalina.
А также содержит информацию о наших VPN-соединениях, такую как имя сервера, пароль. Это все правильно. В Keychain я бы увидел psk и пароль. Насколько я знаю, psk - это общий секретный ключ. Но если я щелкаю, чтобы подключиться из сетевой части, я сталкиваюсь с ошибкой общего секретного ключа. Но на самом деле он хранится в доступе цепочки для ключей.
Мой тип подключения IPSe c.
В XCode После этого нажмите кнопку для подключения VPN, я бы увидел
Не удалось скопировать содержимое, возвращено SecKeychainItemCopyContent. Содержимое этого элемента не может быть получено с ошибкой <в консоли </p>
Я поставил эту часть подключения здесь. Но напоминание, что мой код работает без ошибок в приложениях iOS , Тот же код не работает на ОС Ma c. Вот в чем проблема.
Любая помощь будет отличной!
public func connectIKEv2(config: Configuration, onError: @escaping (String)->Void) {
let p = NEVPNProtocolIPSec()
if config.pskEnabled {
p.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret
} else {
p.authenticationMethod = NEVPNIKEAuthenticationMethod.none
}
p.serverAddress = config.server
p.disconnectOnSleep = false
p.username = config.account
p.passwordReference = config.getPasswordRef()
p.sharedSecretReference = config.getPSKRef()
// I catch password and psk without no mistake.
p.useExtendedAuthentication = true
// two lines bellow may depend of your server configuration
p.remoteIdentifier = config.server
// p.localIdentifier = config.account
loadProfile { _ in
self.manager.protocolConfiguration = p
if config.onDemand {
self.manager.onDemandRules = [NEOnDemandRuleConnect()]
self.manager.isOnDemandEnabled = true
}
self.manager.isEnabled = true
self.saveProfile { success in
if !success {
onError("Unable to save vpn profile")
return
}
self.loadProfile() { success in
if !success {
onError("Unable to load profile")
return
}
let result = self.startVPNTunnel()
if !result {
onError("Can't connect")
}
}
}
}
}