狠狠撸

狠狠撸Share a Scribd company logo
Contents Blocker on
iOS9
@TachibanaKaoru
? TachibanaKaoru 1
自己紹介
Tachibana Kaoru
- iOS Engineer at VOYAGE GROUP
- Twitter: @TachibanaKaoru
- Blog: http://www.toyship.org/
? WWDCは2010,2015に参加
? TachibanaKaoru 2
What is
Contents
Blocker
? TachibanaKaoru 3
What is Contents Blocker
? iOSやMacでSafariに表示する項目を、自動的に制限する機能
? Macでは、Safari Pluginとして提供される
? iOSでは、Today WidgetやShare ExtensionのようにApp
Extensionとして提供される
? TachibanaKaoru 4
What is Contents Blocker
? ブロックする対象
? cssで指定された特定の要素を非表示にする
? 特定のファイルを読みこまないようにする
? 特定のクッキーを読みこまないようにする
? TachibanaKaoru 5
What is Contents Blocker
? 適用範囲
? Safari以外のブラウザ(Chromeなど)には影響しない
? iOS9から導入された SFSafariViewControllerには適用され
る
? UIWebView/MKWebViewには影響しない
? TachibanaKaoru 6
How to
implement
Contents
Blocker for iOS
? TachibanaKaoru 7
How to implement Contents
Blocker for iOS
iOSではコンテンツブロッカーは、App Extensionとして提供さ
れているため、まずは本体となるアプリを作成します。
Xcodeでアプリを作ったら、メニューから File - New - Target
を選び、iOS-Application Extension の Content Blocker
Extension を選びます。
? TachibanaKaoru 8
How to implement Contents
Blocker for iOS
コンテンツブロッカーのターゲットが追加され、
ActionRequestHandler.swift と blockerList.json のファイル
が生成されます。
ブロックする要素と条件は blockerList.json ファイルで設定し
ます。
? TachibanaKaoru 9
試しにこちらのページの要素
にコンテンツブロッカーを適
用させてみましょう
? TachibanaKaoru 10
hide contents
CSSの特定の要素を非表示にする方法です。
blockerList.json には、複数の表示設定を追加することがで
き、ファイルの先頭から順番に適用されていきます。
action要素 処理内容についての設定
trigger要素 処理の適用箇所の設定
? TachibanaKaoru 11
hide contents
タイトルの下の日付や著者名を消してみましょう。
この部分のclass属性は「byline」なので、
blockerList.jsonにtype:css-display-noneのaction要素を追加
することでこの部分を非表示にすることができます。
action要素のselectorにはdiv.bylineを指定します。
trigger要素でこの条件の適用場所の指定をします。
? TachibanaKaoru 12
blockerList.json
[
{
"action": {
"type": "css-display-none",
"selector" : "div.byline"
},
"trigger": {
"url-filter": ".*"
}
}
]
? TachibanaKaoru 13
hide contents
facebookのlikeボタンも消してみましょう。
この部分のdivのclass属性はwsblfacebooklikeです
blockerList.json にこの要素を追加します
? TachibanaKaoru 14
blockerList.json
[
{
"action": {
"type": "css-display-none",
"selector" : "div.wsbl_facebook_like"
},
"trigger": {
"url-filter": ".*"
}
}
]
? TachibanaKaoru 15
hide contents
この設定でさきほどのページを表示する
と、こうなります。
タイトルの下の日付や著者名の部分と、
facebookのlikeボタンの表示が消えてい
ますね。
? TachibanaKaoru 16
? TachibanaKaoru 17
block contents
次は、コンテンツの読み込みをブロックしてみましょう。
画像のURLは http://www.toyship.org/wp-content/uploads/
2014/03/XcodeScreen-636×310.png です。
blockerList.json に type:block のaction要素を追加すると、こ
の画像の読み込みをブロックすることができます。
? TachibanaKaoru 18
blockerList.json
[
{
"action": {
"type": "block"
},
"trigger": {
"url-filter": "/wp-content/uploads/2014/03/",
"if-domain": ["www.toyship.org"]
}
}
]
? TachibanaKaoru 19
block contents
この設定でさきほどのページを表示する
と、こうなります。
画像の表示が消えていますね。
? TachibanaKaoru 20
? TachibanaKaoru 21
block contents
? ブロックは、画像だけではなく、特定のjsファイルやcssファ
イルのブロックも可能。
? コンテンツブロッカーで、実際にどんなコンテンツがブロッ
クされたのかはアプリで知ることはできない
? もしブロックされた要素がキャッシュされていた場合にも、
読み込みはブロックされます。
? TachibanaKaoru 22
block cookies
同様にtype:block-cookiesのaction要素を追加することでクッ
キーのブロックもできます。
? TachibanaKaoru 23
How to apply
Contents
Blocker for iOS
? TachibanaKaoru 24
How to apply Contents Blocker
for iOS
-ユーザーがSafariで有効にするためには下記の手順が必要です。
-コンテンツブロッカーを含むアプリをダウンロードする
-Safariの設定の「コンテンツブロッカー」の項目から、インス
トールしたアプリのコンテンツブロッカーを選んでonにする
? TachibanaKaoru 25
Webkit
詳しい blockerList.json の設定方法
は、Introduction to WebKit Content
Blockersを参照してください。
Benjamin Poulain(@awfulben)
なお、ソースコードも公開されていま
す。
? TachibanaKaoru 26
Matome
? TachibanaKaoru 27
Matome
コンテンツブロッカーをonにすると、特定のcss要素を非表示に
したり、特定のファイルやクッキーの読み込みをブロックする
ことができる
コンテンツブロッカーはToday WidgetやShare Extensionのよう
に、既存のアプリの一部として提供される
何をブロックしたのかという情報は、コンテンツブロッカーを
含むアプリで取得することはできない
? TachibanaKaoru 28
Ad

Recommended

第一回搁贰厂罢勉强会冲铃木商店の开発环境
第一回搁贰厂罢勉强会冲铃木商店の开発环境
tsuchimon
?
「安全なウェブサイトの作り方」を読もう
「安全なウェブサイトの作り方」を読もう
Atsushi Matsuo
?
第一回Rest勉強会 ワークショッフ?
第一回Rest勉強会 ワークショッフ?
ksimoji
?
IE のサポート変更が Azure に及ぼす影響
IE のサポート変更が Azure に及ぼす影響
彰 村地
?
「10年后の奥别产」のために、今すべきこと
「10年后の奥别产」のために、今すべきこと
Mitsue-Links Co.,Ltd. Accessibility Department
?
贰濒补蝉迟颈肠叠别补苍蝉迟补濒办で作る笔贬笔実行环境
贰濒补蝉迟颈肠叠别补苍蝉迟补濒办で作る笔贬笔実行环境
Naoyuki Funatsu
?
Core Graphics on watchOS 2
Core Graphics on watchOS 2
Shuichi Tsutsumi
?
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
Shuichi Tsutsumi
?
What's New in Core Location - WWDC 2015
What's New in Core Location - WWDC 2015
Kosuke Ogawa
?
WWDC 2015 情報共有会
WWDC 2015 情報共有会
大介 束田
?
Search APIs in Spotlight and Safari
Search APIs in Spotlight and Safari
Yusuke Kita
?
How to make workout app for watch os 2
How to make workout app for watch os 2
Yusuke Kita
?
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
Shuichi Tsutsumi
?
とにかく明るいCore Spotlight
とにかく明るいCore Spotlight
今城 善矩
?
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
Shuichi Tsutsumi
?
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
Shuichi Tsutsumi
?
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
Shuichi Tsutsumi
?
I018145157
I018145157
IOSR Journals
?
I os*ble簡単フ?ロトタイヒ?ンク?
I os*ble簡単フ?ロトタイヒ?ンク?
Takahiro Yamamoto
?
Stupid Video Tricks, CocoaConf Las Vegas
Stupid Video Tricks, CocoaConf Las Vegas
Chris Adamson
?
厂飞颈蹿迟て?はし?める动画再生
厂飞颈蹿迟て?はし?める动画再生
Yusuke Ariyoshi
?
iOSエンジニア in ハードウェア?プロジェクト
iOSエンジニア in ハードウェア?プロジェクト
Shuichi Tsutsumi
?
搁别蹿濒别肠迟颈辞苍のパフォーマンス
搁别蹿濒别肠迟颈辞苍のパフォーマンス
明 高橋
?
高速な広告配信サーハ?の作り方のコツ
高速な広告配信サーハ?の作り方のコツ
Innami Satoshi
?
贬罢罢笔プロキシによるゼロダウンタイムなアドサーバー移行
贬罢罢笔プロキシによるゼロダウンタイムなアドサーバー移行
Ryo Aita
?
Time for Xcode Behavior
Time for Xcode Behavior
toyship
?
Notifications in iOS10
Notifications in iOS10
toyship
?

More Related Content

Viewers also liked (20)

iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
Shuichi Tsutsumi
?
What's New in Core Location - WWDC 2015
What's New in Core Location - WWDC 2015
Kosuke Ogawa
?
WWDC 2015 情報共有会
WWDC 2015 情報共有会
大介 束田
?
Search APIs in Spotlight and Safari
Search APIs in Spotlight and Safari
Yusuke Kita
?
How to make workout app for watch os 2
How to make workout app for watch os 2
Yusuke Kita
?
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
Shuichi Tsutsumi
?
とにかく明るいCore Spotlight
とにかく明るいCore Spotlight
今城 善矩
?
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
Shuichi Tsutsumi
?
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
Shuichi Tsutsumi
?
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
Shuichi Tsutsumi
?
I018145157
I018145157
IOSR Journals
?
I os*ble簡単フ?ロトタイヒ?ンク?
I os*ble簡単フ?ロトタイヒ?ンク?
Takahiro Yamamoto
?
Stupid Video Tricks, CocoaConf Las Vegas
Stupid Video Tricks, CocoaConf Las Vegas
Chris Adamson
?
厂飞颈蹿迟て?はし?める动画再生
厂飞颈蹿迟て?はし?める动画再生
Yusuke Ariyoshi
?
iOSエンジニア in ハードウェア?プロジェクト
iOSエンジニア in ハードウェア?プロジェクト
Shuichi Tsutsumi
?
搁别蹿濒别肠迟颈辞苍のパフォーマンス
搁别蹿濒别肠迟颈辞苍のパフォーマンス
明 高橋
?
高速な広告配信サーハ?の作り方のコツ
高速な広告配信サーハ?の作り方のコツ
Innami Satoshi
?
贬罢罢笔プロキシによるゼロダウンタイムなアドサーバー移行
贬罢罢笔プロキシによるゼロダウンタイムなアドサーバー移行
Ryo Aita
?
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
Shuichi Tsutsumi
?
What's New in Core Location - WWDC 2015
What's New in Core Location - WWDC 2015
Kosuke Ogawa
?
WWDC 2015 情報共有会
WWDC 2015 情報共有会
大介 束田
?
Search APIs in Spotlight and Safari
Search APIs in Spotlight and Safari
Yusuke Kita
?
How to make workout app for watch os 2
How to make workout app for watch os 2
Yusuke Kita
?
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
Shuichi Tsutsumi
?
とにかく明るいCore Spotlight
とにかく明るいCore Spotlight
今城 善矩
?
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
Shuichi Tsutsumi
?
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
Shuichi Tsutsumi
?
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
Shuichi Tsutsumi
?
I os*ble簡単フ?ロトタイヒ?ンク?
I os*ble簡単フ?ロトタイヒ?ンク?
Takahiro Yamamoto
?
Stupid Video Tricks, CocoaConf Las Vegas
Stupid Video Tricks, CocoaConf Las Vegas
Chris Adamson
?
厂飞颈蹿迟て?はし?める动画再生
厂飞颈蹿迟て?はし?める动画再生
Yusuke Ariyoshi
?
iOSエンジニア in ハードウェア?プロジェクト
iOSエンジニア in ハードウェア?プロジェクト
Shuichi Tsutsumi
?
搁别蹿濒别肠迟颈辞苍のパフォーマンス
搁别蹿濒别肠迟颈辞苍のパフォーマンス
明 高橋
?
高速な広告配信サーハ?の作り方のコツ
高速な広告配信サーハ?の作り方のコツ
Innami Satoshi
?
贬罢罢笔プロキシによるゼロダウンタイムなアドサーバー移行
贬罢罢笔プロキシによるゼロダウンタイムなアドサーバー移行
Ryo Aita
?

More from toyship (15)

Time for Xcode Behavior
Time for Xcode Behavior
toyship
?
Notifications in iOS10
Notifications in iOS10
toyship
?
Universal Link
Universal Link
toyship
?
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
?
Swift Protocol and Selector
Swift Protocol and Selector
toyship
?
What's new Swift3
What's new Swift3
toyship
?
齿肠辞诲别7时代のアプリ配布
齿肠辞诲别7时代のアプリ配布
toyship
?
My first tvOS
My first tvOS
toyship
?
3D touch for iOS
3D touch for iOS
toyship
?
Embedded framework and so on
Embedded framework and so on
toyship
?
はじめての奥碍滨苍迟别谤蹿补肠别颁辞苍迟谤辞濒濒别谤
はじめての奥碍滨苍迟别谤蹿补肠别颁辞苍迟谤辞濒濒别谤
toyship
?
App extension for iOS
App extension for iOS
toyship
?
サーバーから颈翱厂アプリを変更する
サーバーから颈翱厂アプリを変更する
toyship
?
础痴厂辫别别肠丑厂测苍迟丑别蝉颈锄别谤とロケール
础痴厂辫别别肠丑厂测苍迟丑别蝉颈锄别谤とロケール
toyship
?
Time for Xcode Behavior
Time for Xcode Behavior
toyship
?
Notifications in iOS10
Notifications in iOS10
toyship
?
Universal Link
Universal Link
toyship
?
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
?
Swift Protocol and Selector
Swift Protocol and Selector
toyship
?
What's new Swift3
What's new Swift3
toyship
?
齿肠辞诲别7时代のアプリ配布
齿肠辞诲别7时代のアプリ配布
toyship
?
My first tvOS
My first tvOS
toyship
?
3D touch for iOS
3D touch for iOS
toyship
?
Embedded framework and so on
Embedded framework and so on
toyship
?
はじめての奥碍滨苍迟别谤蹿补肠别颁辞苍迟谤辞濒濒别谤
はじめての奥碍滨苍迟别谤蹿补肠别颁辞苍迟谤辞濒濒别谤
toyship
?
App extension for iOS
App extension for iOS
toyship
?
サーバーから颈翱厂アプリを変更する
サーバーから颈翱厂アプリを変更する
toyship
?
础痴厂辫别别肠丑厂测苍迟丑别蝉颈锄别谤とロケール
础痴厂辫别别肠丑厂测苍迟丑别蝉颈锄别谤とロケール
toyship
?
Ad

Contents blocker on iOS9