美文网首页
iOS11 WKWebview cookie 自动管理

iOS11 WKWebview cookie 自动管理

作者: 10m每秒滑行 | 来源:发表于2018-08-27 12:10 被阅读0次

    wkwebview 在h5页面展示性能上有很大的提升,但是很多时候,大家在wkwebview的cookie管理上要做很多的努力,还无法达到曾今在UIWebview 上cookieStorage的自动管理cookie的效果,所以WKWebview 使用过程中在cookie管理上也算是一大痛点,但在iOS11 的API更新后,可以达到和UIWebview 相同的cookie管理方式,可以各个webview之间共享一套cookie缓存

    WKWebview 在初始化时,可以传入WKWebViewConfiguration 对象,用于配置当前WKwebview 的各项 功能配置,用户偏好设置(WKPreferences),JSHandler(WKUserContentController)等,从WKWebViewConfiguration的api中可以查看相关详细。

    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
        self.webview = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];
        [self.view addSubview:self.webview];
        self.config = config;
    

    从 WKWebViewConfiguration 对象中可以互获取 websiteDataStore对象,默认获取的是持久化 dataSource。通过websiteDataStore,可以获取到 WKHTTPCookieStore 的对象,此对象就是WKWebview用来自动管理cookie的,使用方式和特点基本和HTTPCookieStorage一致。

        NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:@{
                                                                    NSHTTPCookieName    :   @"huyanling",
                                                                    NSHTTPCookieValue   :   @"hahahha",
                                                                    NSHTTPCookieDomain  :   @".baidu.com",
                                                                    NSHTTPCookiePath    :   @"/",
                                                                    NSHTTPCookieExpires :   [NSDate dateWithTimeIntervalSinceNow:60*60*24]
                                                                    }];
        [self.config.websiteDataStore.httpCookieStore setCookie:cookie completionHandler:^{
            [self fetchWKWebviewCookie];
        }];
    

    上面例子是往WKHTTPCookieStore 中添加新的cookie,经测试,在WKWebview小惠后,创建新的WKWebview后,仍可访问,并且可以与JS请求共享。

    相关文章

      网友评论

          本文标题:iOS11 WKWebview cookie 自动管理

          本文链接:https://www.haomeiwen.com/subject/qjmziftx.html