Подключение к VPN с помощью Swift 3

Я пытаюсь подключиться к VPN в приложении для iOS. Что я уже знаю, это тип VPN (L2TP поверх IPSec), имя учетной записи, пароль и общий секрет. Соединение работает через настройки сети Mac. Хотя, кажется, немного сложнее, когда вы должны использовать эту информацию в коде.

Сначала я импортировал необходимую библиотеку.

import NetworkExtension

Затем я пытаюсь загрузить настройки и, в случае ошибки, использую свои и сохранить их. Выглядит так:

NEVPNManager.shared().loadFromPreferences { error in
        // config
        NEVPNManager.shared().saveToPreferences { error in
            if (error == nil) {
                do {
                    try NEVPNManager.shared().connection.startVPNTunnel()
                } catch {
                    print("Couldn't connect")
                }
            } else {
                print("NEVPNManager.saveToPreferencesWithCompletionHandler failed: \(error!.localizedDescription)")
            }
        }
    }

Где вы можете увидеть "// config", мои данные должны быть переданы. Я не уверен на 100%, правильно ли я все делаю.

Там постоянная let p = NEVPNProtocolIPSec() где я размещаю свои данные. Это как p.username = "smth",

Вопрос в том, какие поля p должно быть заполнено? Где я могу разместить общий секрет?

--- ОБНОВИТЬ ---

Я всегда получаю ошибку:

NEVPNManager.saveToPreferencesWithCompletionHandler не выполнен: операция не может быть завершена. (NEVPNErrorDomain ошибка 4.)

Я не могу найти что-то конкретное в этом.

Во время настройки для полей.sharedSecretReference и.passwordReference требуются данные? объект. Я получаю это с помощью keychain.get("passref")?.data(using: .utf8, allowLossyConversion: true) предшествует

let keychain: KeychainSwift! = KeychainSwift()

keychain.set("<my_password>", forKey: "passref")

( отсюда приходит класс KeychainSwift)

Где я делаю ошибку?

0 ответов

Другие вопросы по тегам