WKWebView强大的新特性

2019-10-16 作者:www.243.net   |   浏览(174)

iOS11对WKWebView的机能更加的完善,新扩充如下效果:

  1. Manager Cookies
  2. WKWebView强大的新特性。WKWebView强大的新特性。Fileter unwanted content
  3. Provide custom resources

上边是对各本性格的粗略介绍,详细可参见源码。

1.Manager Cookies

iOS11猛增了一个类来极度管理Cookies:WKHTTPCookieStore。它主要蕴涵了了对Cookie的操作:删除、增多、获取等。
WKWebView强大的新特性。比如这种情景:
WKWebView强大的新特性。三个页面暗中认可登陆,当自家未曾登入的时候会弹出输入框,输入账号。输入实现以往,会提示已报到。再度展开该页面时,页面会先判定有未有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注入。越来越多可参见这里源代码。

WKWebView强大的新特性。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")!))
        }

越来越多词义的分解大概看合匈牙利(Hungary)语档,里面介绍的很详细。

3.Provide custom resources

其一特性允许你提供自定义的财富,那也足以落成离线缓存。比如你把持有的图纸都放到app里面,然后网页加载图片时遵照一定的scheme(比方:wk-feature://cat)来加载,然后在顾客端代码中应用一定的SchemeHandler来剖析就能够。这里关键使用了WKUENCORELSchemeHandler和WKUQashqaiLSchemeTask。
最首要代码如下:

        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

转发请注明来源:

本文由金沙澳门官网网址发布于www.243.net,转载请注明出处:WKWebView强大的新特性

关键词:

  • 上一篇:没有了
  • 下一篇:没有了