下面是针对“iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程”的完整攻略。
简介
iOS 9 更新后,Safari引入了 Content Blocker API。Content Blocker 可以用于拦截 Safari 加载的网页中的广告、图片以及其他的资源,以达到优化网站加载速度、降低流量消耗和提升用户体验的效果。本教程将会详细介绍 Content Blocker 的开发步骤。
开发步骤
1. 创建 Content Blocker Extension
Content Blocker Extension 是 Content Blocker 的一种实现方式,可用于拦截网页中的资源。要创建 Content Blocker Extension,只需在 Xcode 中新建一个 Target,选择 Content Blocker Extension 模板。
2. 添加规则(Rules)
在 Content Blocker Extension 中,规则是用于指定要拦截的内容的。规则可以是 JSON 或者是 Property List 格式。常见的规则包括:
- url-filter(必选):用于指定拦截的 URL 地址,可以使用通配符或正则表达式。
- action:用于指定拦截的行为,包括 block(阻止请求)、redirect-url(重定向 URL)和 css-display-none(隐藏元素)。
3. 加载规则
在 Content Blocker Extension 中,可以将规则存储在 Bundle 中,也可以从网络中加载规则。加载规则的步骤包括:
- 创建一个新的 Data 类型的规则对象。
- 解析 JSON 格式的规则,并初始化规则对象。
- 将规则对象的值设置到 Content Blocker Extension 的存储中。
4. 调试 Content Blocker
调试 Content Blocker 的整个过程比较难以直观地观察到其效果。不过,我们可以通过 Safari 远程调试器来查看拦截的效果。具体步骤如下:
- 在 iOS 设备或模拟器中运行应用程序。
- 在 Safari 中打开开发者工具面板并选择远程 iOS 设备。
- 选择该设备上的 Content Blocker Extension 并开启它,然后在面板中加载一个可以拦截广告的网站,即可查看效果。
示例说明
接下来,我们来看两个实例说明。
示例一:屏蔽知乎广告
以下代码片段是一个可以屏蔽知乎广告的规则:
{
"trigger": {
"url-filter": ".*zhihu.*",
"resource-type": ["script", "image", "xhr"]
},
"action": {
"type": "block"
}
}
解释一下这个规则的含义:在 URL 匹配到“zhihu”的时候,对于所有的 script、image 和xhr 资源,通过 block 阻止它们的请求。
示例二:屏蔽 PCPOP 网页中的广告
以下是可以屏蔽 PCPOP 网页的广告的规则:
{
"trigger": {
"url-filter": ".*pcpop.*",
"resource-type": ["script", "image", "style-sheet"]
},
"action": {
"type": "css-display-none",
"selector": "body > div[class]:not([class^='ad']), #topad, .related-box, #right-box"
}
}
解释一下这个规则的含义:在 URL 匹配到“pcpop”的时候,根据选择器屏蔽 body 中所有 class 值不以“ad”开头的 div 元素、#topad 元素、.related-box 元素和 #right-box 元素。
以上是适用于 Content Blocker 的开发教程,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程 - Python技术站