SlideShare 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

More Related Content

PDF
第一回REST勉強会_鈴木商店の開発環境
PDF
「安全なウェブサイトの作り方」を読もう
PDF
第一回Rest勉強会 ワークショップ
PPTX
IE のサポート変更が Azure に及ぼす影響
PDF
Firefox 4 with SVG
PDF
「10年後のWeb」のために、今すべきこと
PPTX
ElasticBeanstalkで作るPHP実行環境
PDF
Core Graphics on watchOS 2
第一回REST勉強会_鈴木商店の開発環境
「安全なウェブサイトの作り方」を読もう
第一回Rest勉強会 ワークショップ
IE のサポート変更が Azure に及ぼす影響
Firefox 4 with SVG
「10年後のWeb」のために、今すべきこと
ElasticBeanstalkで作るPHP実行環境
Core Graphics on watchOS 2

Viewers also liked (20)

PDF
iOS 9 の新機能 Core Image 編
PDF
What's New in Core Location - WWDC 2015
PDF
20150707 wwdc21cafe
PDF
Watch connectivity
PDF
WWDC 2015 情報共有会
PDF
Search APIs in Spotlight and Safari
PDF
How to make workout app for watch os 2
PDF
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
PDF
とにかく明るいCore Spotlight
PDF
watchOS 2 新機能の細かい話
PDF
UI/UX に影響の大きい watchOS 2 の新機能 3つ
PDF
Core Image Tips & Tricks in iOS 9
PDF
I018145157
PDF
I os*ble簡単プロトタイピング
PDF
Stupid Video Tricks, CocoaConf Las Vegas
PDF
Swiftではじめる動画再生
PDF
iOSエンジニア in ハードウェア・プロジェクト
PPTX
Reflectionのパフォーマンス
PPTX
高速な広告配信サーバの作り方のコツ
PPTX
HTTPプロキシによるゼロダウンタイムなアドサーバー移行
iOS 9 の新機能 Core Image 編
What's New in Core Location - WWDC 2015
20150707 wwdc21cafe
Watch connectivity
WWDC 2015 情報共有会
Search APIs in Spotlight and Safari
How to make workout app for watch os 2
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
とにかく明るいCore Spotlight
watchOS 2 新機能の細かい話
UI/UX に影響の大きい watchOS 2 の新機能 3つ
Core Image Tips & Tricks in iOS 9
I018145157
I os*ble簡単プロトタイピング
Stupid Video Tricks, CocoaConf Las Vegas
Swiftではじめる動画再生
iOSエンジニア in ハードウェア・プロジェクト
Reflectionのパフォーマンス
高速な広告配信サーバの作り方のコツ
HTTPプロキシによるゼロダウンタイムなアドサーバー移行
Ad

More from toyship (15)

PDF
Time for Xcode Behavior
PDF
Notifications in iOS10
PDF
Universal Link
PDF
Can we live in a pure Swift world?
PDF
Swift Protocol and Selector
PDF
What's new Swift3
PDF
Xcode7時代のアプリ配布
PDF
My first tvOS
PDF
3D touch for iOS
PDF
Embedded framework and so on
PDF
はじめてのWKInterfaceController
PDF
App extension for iOS
PDF
サーバーからiOSアプリを変更する
PDF
Xcode bot
PDF
AVSpeechSynthesizerとロケール
Time for Xcode Behavior
Notifications in iOS10
Universal Link
Can we live in a pure Swift world?
Swift Protocol and Selector
What's new Swift3
Xcode7時代のアプリ配布
My first tvOS
3D touch for iOS
Embedded framework and so on
はじめてのWKInterfaceController
App extension for iOS
サーバーからiOSアプリを変更する
Xcode bot
AVSpeechSynthesizerとロケール
Ad

Contents blocker on iOS9