自 iOS 11 开始,您可以使用
WKContentRuleList
。
首先,创建一个内容规则或列表。每个规则由触发器和操作组成。请参阅
苹果的内容规则创建文档。
以下是一个示例创建,它阻止所有图像和样式表内容,但通过忽略先前的规则,允许以
jpeg 结尾的内容:
let blockRules = """
[{
"trigger": {
"url-filter": ".*",
"resource-type": ["image"]
},
"action": {
"type": "block"
}
},
{
"trigger": {
"url-filter": ".*",
"resource-type": ["style-sheet"]
},
"action": {
"type": "block"
}
},
{
"trigger": {
"url-filter": ".*.jpeg"
},
"action": {
"type": "ignore-previous-rules"
}
}]
"""
有了您的规则清单,您可以将它们添加到ContentRuleListStore中
import WebKit
@IBOutlet weak var wkWebView: WKWebView!
let request = URLRequest(url: URL(string: "https://yourSite.com/")!)
WKContentRuleListStore.default().compileContentRuleList(
forIdentifier: "ContentBlockingRules",
encodedContentRuleList: blockRules) { (contentRuleList, error) in
if let error = error {
return
}
let configuration = self.webView.configuration
configuration.userContentController.add(contentRuleList!)
self.wkWwebView.load(self.request)
}
如果您想要删除所有规则,请调用以下命令:
self.wkWebView.configuration.userContentController.removeAllContentRuleLists()
self.wkWebView.load(self.request)
这里是2017 WWDC视频
祝好运!
我在Github上创建了一个示例项目,WKContentRuleExample