服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

2020-12-22 16:20iOS开发网 IOS

这篇文章主要介绍了iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程的相关资料,需要的朋友可以参考下

下面通过图文并茂的方式给大家分享下这方面的知识,具体内容如下。

相对于谷歌对广告拦截的禁止,苹果与之态度截然相反,继mac版safari加入广告拦截工具之后,即将到来的ios9对safari也引入了内容拦截插件-content blocker,并且开发者可以使用最新的xcode7开发以及使用ios 9模拟器进行调试,下面,笔者将用一个简单的实例进行讲解如何开发content blocker。

      在使用google搜索时,排行靠前面的几条永远都是广告项,比如搜索“iphone6”,得到的结果如图1所示:

      iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

图1 google 搜索iphone 6未进行广告拦截示例

    今天的目标就是将广告项拦截掉,以后在使用google搜索时,都不会再有这种碍眼的广告排在前面了。

     首先当然是建工程,创建一个ios single view application,接着为工程创建一个ios content blocker extension的target。然后我们会看到,工程为我们自动创建了一个blockerlist.json文件,以及一个actionrequesthandler类。从actionrequesthandler类的实现代码不难看出,它是将blockerlist.json文件嵌入safari。事实上,这个json文件正是content blocker的核心,使用它将可以用最简单的配置方式,为我们实现内容拦截,接下来,我来讲解一下这个json文件的编写规则。

iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

图2 建立广告拦截器(content blocker)工程

blockerlist.json文件里面自动生成了几行代码,代码中包含了一个action和一个trigger,每一个action和trigger的组合构成一条规则。

?
1
2
3
4
5
6
7
8
9
10
[[
 {
  "action": {
   "type": "block"
  },
  "trigger": {
   "url-filter": "webkit.org/images/icon-gold.png"
  }
 }
]]

1、action指定这条规则采用的拦截方式,type可选值为 “block”,“block-cookies”, “css-display-none”,分别表示拦截资源文件(比如css文件,js文件,图片资源)、拦截cookies,将指定html元素css的display属性设置为none。而当type为css-display-none时,必须在action中加入“selector”的键值对,selector即是css selector,指定哪一些html元素的display属性将被设置为none(即隐藏),当然,如果你不熟悉css selector,赶快去学习吧。

2、triggerr指定这条规则适用的网站url,可以使用正规表达式,当然尽量精确的表达式,不要影响网页浏览效率,毕竟content blocker是应用于整个浏览器和所有的网站。

     了解了这些,我们不难理解blocklist.json的含义,type为block,表明这是在阻止webkit.org/images/icon-gold.png这个图片的加载。当然,我们今天的目标是拦截google搜索结果中的广告项。

     首先,对action type的选择,这里很明显是对网页内容的拦截,我们选择的type值为css-display-none,接着获取我们要隐藏的html元素,这里我们借助mac版safari的网页源码分析工具,打开mac版safari,选择develop menu下的simulator,然后选择正在浏览的www.google.com.hk页面,web inspector工具随即将simulator上safari正在浏览的网页源码陈列出来。什么,没有develop menu?在mac safari的preference里选择advance选项,将show develop menu in menu bar选项选择就有了。接下来,我们很轻松地找到了广告对应的div和它对应的id。

iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

 图3 获取插件元素示意图

有了div的id,我们将selector属性设置为div#taw,指定id为taw的div,然后设置trigger的url-filter为google.com.hk/。

?
1
2
3
4
5
6
7
8
9
10
11
[
 {
  "action": {
    "type": "css-display-none",
    "selector":"div#taw"
  },
  "trigger": {
   "url-filter": "google.com.hk/"
  }
 }
]

     激动人心的时刻到了,接下来让我们见证成败,运行工程,记住,不要选择了content blocker的target,那样子虽然也能将json嵌入safari,但是死活是无效的,也许是beta版的bug。

iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

图4 广告拦截后搜索示意图

     运行的程序一片空白,接下来我们要到系统设置界面,选择safari->content blockers(内容拦截器)->打开你的插件(如果已经打开了,切记关掉后重新打开一次)。回到浏览器,刷新刚刚的google搜索页面,广告项已经不在,且无论你在google中搜索任何内容,你再也见不到排前面这一堆的广告。

以上就是本文的全部内容,希望大家喜欢。

延伸 · 阅读

精彩推荐
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17