gpt4 book ai didi

ios - swift 3 : Saving login information

转载 作者:行者123 更新时间:2023-11-30 11:15:54 24 4
gpt4 key购买 nike

我正在 Xcode 8.2.1 中开发一个简单的 Webview 应用程序。

是的,我知道。有更新的版本可用,但我分配的 Mac 不会更新到 High Sierra。我被 El Capitan 困住了。因此,我遵循了一些简单的教程,并开始开发一个可以加载我的网站的简单应用程序。应用程序本身可以工作,但有一个小问题:当用户关闭应用程序时,cookie 会自行销毁,用户将不得不再次登录。如果他们不小心关闭了应用程序或类似的情况,我不想让他们再次登录。我怎样才能做到这一点?我读过here我可以使用

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate
{
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always
return true
}

但是,不幸的是,它不起作用,并且在应用程序关闭后登录信息将被清除。

这是ViewController.swift

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {


@IBOutlet weak var myWebView: UIWebView!
@IBAction func backButton(_ sender: Any)
{
if myWebView.canGoBack{
myWebView.goBack()
}
}
@IBAction func refreshButton(_ sender: Any)
{
myWebView.reload()
}

@IBAction func forwardButton(_ sender: Any)
{
if myWebView.canGoForward{
myWebView.goForward()
}
}

func webViewDidStartLoad(_ webView: UIWebView) {
UIApplication.shared.isNetworkActivityIndicatorVisible = true
}

func webViewDidFinishLoad(_ webView: UIWebView) {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
}

override func viewDidLoad() {
super.viewDidLoad()
myWebView.loadRequest(URLRequest(url: URL(string: "myURL")!))

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}


}

这是AppDelegate.swift

import UIKit

@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always
return true
}

func applicationWillResignActive(_ application: UIApplication) {

}

func applicationDidEnterBackground(_ application: UIApplication) {

}

func applicationWillEnterForeground(_ application: UIApplication) {

}

func applicationDidBecomeActive(_ application: UIApplication) {

}

func applicationWillTerminate(_ application: UIApplication) {

}

func saveCookies() {
guard let cookies = HTTPCookieStorage.shared.cookies else {
return
}
let array = cookies.flatMap { (cookie) -> [HTTPCookiePropertyKey: Any]? in
cookie.properties
}
UserDefaults.standard.set(array, forKey: "cookies")
UserDefaults.standard.synchronize()
}

func loadCookies() {
guard let cookies = UserDefaults.standard.value(forKey: "cookies") as? [[HTTPCookiePropertyKey: Any]] else {
return
}
cookies.forEach { (cookie) in
guard let cookie = HTTPCookie.init(properties: cookie) else {
return
}
HTTPCookieStorage.shared.setCookie(cookie)
}
}

}

此应用程序不会在应用程序商店上发布,它仅供我公司的三个用户使用。这就是为什么我决定做一件简单的事情而不是大规模的事情。

最佳答案

我只需要重新设置 cookie。

NSData *cookiesdata = [[NSUserDefaults standardUserDefaults] objectForKey:@"MySavedCookies"];
if([cookiesdata length]) {
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata];
NSHTTPCookie *cookie;

for (cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}

关于ios - swift 3 : Saving login information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com