WKWebView庞大的新特点澳门1495娱乐

iOS11对WKWebView的功力进一步周全,新添如下效果:

  1. Manager Cookies
  2. Fileter unwanted content
  3. Provide custom resources

下边是对种种性子的简约介绍,详细可参见源码

1.Manager Cookies

iOS11猛增了一个类来特意管理库克ies:WKHTTP库克ieStore。它首要涵盖了了对Cookie的操作:删除、增多、获取等。
譬喻说这种场所:
叁个页面默许登录,当小编未有登入的时候会弹出输入框,输入账号。输入实现之后,会唤起已登入。再一次张开该页面时,页面会先剖断有未有cookie,有cookie直接提醒已登陆,没有cookie则再度弹框让用户登陆。
不过未来有个新必要:第一遍安装应用软件,运转的时候就有个默许的账户登入,而无需弹框输入。那就用到了cookie的丰硕。在应用程式就要加载webView在此之前,通过HTTPCookie来初步化三个实例,将其塞到webView的configuration的多寡存款和储蓄中。那样加载WebView时就曾经有cookie存在了。那样就打熬了第二遍默许登录的效果。关键代码如下:

let cookie = HTTPCookie.init(properties: [
            .domain:"172.16.10.26",
            .path:"/src/p/index/index.html",
            .version:0,
            .expires:Date.init(timeIntervalSinceNow: 30*60*60),
            .name:"username",
            .value:"zhanggui33"
            ])

let cookieStore = myWKWebView.configuration.websiteDataStore.httpCookieStore

cookieStore.setCookie(cookie!) {

            self.myWKWebView.load(URLRequest.init(url: URL.init(string: "http://172.16.10.26:3333/src/p/index/index.html")!))
        }

也正是在加载网页前,将cookie注入。越多可参见这里源代码

2.Fileter unwanted content

其它一个新天性正是过滤你不想要的剧情。举个例子说你在app中加载的网页中包含http央浼,你能够依据以下法规将http能源加载从前调换到https加载。这几个是苹果官方演示的贰个平整:

let jsonString = """
            [{
                "trigger":{
                    "url-filter": ".*"
                },
                "action":{
                    "type": "make-https"
                }

            }]
            """

此地根本采取了WKContentRuleListStore。下边就来详细对其开展介绍。

始建一个Trigger字典

一个trigger的字典非得要含有url-filter这几个key,它内定了相配url的格局。别的的正是可选的了,比如你能够限制钦赐的域名,让该域名的剧情不加载。举个例子下边包车型地铁这些trigger准绳,拟定了用于图片和体制能源的准绳trigger,不分包某写域名上的:

"trigger": {
        "url-filter": ".*",
        "resource-type": ["image", "style-sheet"],
        "unless-domain": ["your-content-server.com", "trusted-content-server.com"]
}

除了这些之外上面提到的trigger
key,还应该有url-filter-is-case-sensitive、is-domain、unless-domain、resource-type等。具体的详细介绍能够参见官方表达

创制贰个Action字典

当trigger相称到了符合条件的能源,浏览器便会进行与trigger相关联的操作。当有着的trigger都被评估后,action便会遵守顺序试行。
Action唯有多少个key:type和selector。type是绝对要有的,selector可选,借使type是css-display-none,那么selector也是必须求有个别。别的的type中selector是可选的。
type的花色有:block、block-cookies、css-display-none、ignore-previous-rules、make-https。更加的多能够参见法定表明
诸如笔者想屏蔽页面中颇具图片的加载:

 //把所有的图片阻塞加载
        let jsonString = """
            [{
                "trigger":{
                    "url-filter": ".*",
                    "resource-type":["image"]
                },
                "action":{
                    "type":"block"
                }
            }]
            """
        WKContentRuleListStore.default().compileContentRuleList(forIdentifier: "demoRuleList", encodedContentRuleList: jsonString) { (list, error) in
            guard let contentRuleList = list else { return }
            let configuration = self.filterWebView.configuration
            configuration.userContentController.add(contentRuleList)
            self.filterWebView.load(URLRequest.init(url: URL.init(string: "http://m.baidu.com")!))
        }

越来越多词义的讲授可能看法定文书档案,里面介绍的很详细。

3.Provide custom resources

那一个特点允许你提供自定义的能源,那也可以兑现离线缓存。举例你把富有的图片都置于app里面,然后网页加载图片时遵守一定的scheme(举例:wk-feature://cat)来加载,然后在客户端代码中运用一定的SchemeHandler来解析就能够。这里根本金和利息用了WKURAV4LSchemeHandler和WKU途锐LSchemeTask。
第一代码如下:

        let configuration = WKWebViewConfiguration()
        let schemeHandler = MyCustomSchemeHandler.init(viewController: self)

        configuration.setURLSchemeHandler(schemeHandler, forURLScheme: "wk-feature")

落到实处了友好的SchemeHandler,然后对特定的Scheme进行拍卖。

总结

设若你还在使用UIWebView,那么尽快更动为WKWebView吧。终究苹果更倾向于WKWebView。不断地将其作用丰富。何况通过了多少个本子迭代,使用WKWebView的坑也都渐渐填平。

附源码

1.WKWebViewNewFeature

参考

  1. Customized Loading in
    WKWebView
  2. Introduction to Safari Content-Blocking
    Rules

转发请证明来源:http://www.cnblogs.com/zhanggui/p/8260136.html

相关文章