WKWebView强大的新特性
分类:金沙APP

iOS11对WKWebView的成效更是完善,新扩大如下效果:

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

下边是对一一个性的简便介绍,详细可参见源码。

1.Manager Cookies

iOS11增加产量了三个类来特意管理Cookies:WKHTTPCookieStore。它重要饱含了了对Cookie的操作:删除、增多、获取等。
举个例子说这种场馆:
贰个页面默许登入,当自家并未有登陆的时候会弹出输入框,输入账号。输入达成之后,会提醒已报到。再一次展开该页面时,页面会先剖断有未有cookie,有cookie直接提醒已登录,未有cookie则再一次弹框让客商登入。
然这段时间后有个新供给:第3回安装应用程式,运营的时候就有个暗中认可的账户登陆,而不供给弹框输入。那就用到了cookie的增加。在应用程式就要加载webView此前,通过HTTP库克ie来最早化二个实例,将其塞到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来剖析就可以。这里最主要接纳了WKU奥迪Q5LSchemeHandler和WKU奥迪Q7LSchemeTask。
重要代码如下:

        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

转发请注脚来源:

本文由金沙APP发布于金沙APP,转载请注明出处:WKWebView强大的新特性

上一篇:没有了 下一篇:经验分享金沙APP:
猜你喜欢
热门排行
精彩图文