iOS UIWebview не может восстановить cookie через https - PullRequest
0 голосов
/ 18 сентября 2018

Как сохранить сеанс входа в систему при использовании uiwebview?Мой код ниже не работает, когда я вошел в систему через веб-сайт https (работает нормально с веб-сайта http):

func saveC() {
    let arr = NSMutableArray()
    if let cookies = cookieJar.cookies {
        for c in cookies {
            arr.add(c)
        }
        let data: Data = NSKeyedArchiver.archivedData(withRootObject: arr)
        let ud: UserDefaults = UserDefaults.standard
        ud.set(data, forKey: "restoreCookie")
        ud.synchronize()

    }
}

func loadC() {
    let ud: UserDefaults = UserDefaults.standard
    let data: Data? = ud.object(forKey: "restoreCookie") as? Data
    if let cookie = data {
        let datas: NSArray? = NSKeyedUnarchiver.unarchiveObject(with: cookie) as? NSArray
        if let cookies = datas {
            for c in cookies {
                if let cookieObject = c as? HTTPCookie {
                    HTTPCookieStorage.shared.setCookie(cookieObject)
                }
            }
        }
    }
}

В applicationDidEnterBackground и applicationWillTerminate я использую saveC () для сохранения текущего сеанса.

func applicationDidEnterBackground(_ application: UIApplication) {
    Config.shared.saveC()
}

func applicationWillTerminate(_ application: UIApplication) {
    Config.shared.saveC()
}

В didFinishLaunchingWithOptions я использую loadC () для сеанса восстановления.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    Config.shared.loadC()
    return true
}

Но когда я перезагружаю приложение над кодом, он работает нормально, но uiwebview не принимает cookie, поэтому его принудительный выход из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...