iOS9で広告ブロック機能で広告が表示されなくなるかもっていう話題について


iOS9で広告ブロック機能で広告が表示されなくなるかもっていう話題について

ここ最近iOS9の「コンテントブロック機能」がいろいろ話題を集めております。

この機能を使うとWeb上にある広告を非表示にできるようです。

これはまだsafariの拡張機能という位置づけなので、iOS9をもったユーザーがいきなり広告の表示、非表示を選択できるっていう意味にはならないのですが今後どういった展開を見せていくかは大変興味深いところです。

結局どういう時に広告表示をブロックするのか

ユーザーがsafariの設定を変えたとき

Hacking with Swift

に下記のように書かれてました。

 Now swipe to the left to find the Settings app, then choose Safari > Content Blockers and you should see NoMoreMail listed in there. It’s off by default, but just flick the switch next to it and the content blocker becomes active. What’s more, it becomes active inside Safari, and inside any apps that use the new iOS 9 SFSafariViewController.

おおよその内容でいうと

ユーザーがiOS9の設定画面で、safariのcontent blockerの設定をONにすると、この機能ががactiveになるようです。通常のSafariブラウザとiOS9で追加されたSFSafariViewControllerでContent Blockerが有効になります。

実装の仕方

アプリ側から指定のJSONファイルをsafariに送ると実現できるようで、この機能をもったアプリの開発は難しくなさそうです。

(といっても実際に開発したわけではなく、ドキュメントを読んだ情報のみです)


[ { "action": { "type": "block" }, "trigger": { "url-filter": "webkit.org/images/icon-gold.png" } }, { "action": { "selector": "a[href^=\"http://nightly.webkit.org/\"]", "type": "css-display-none" }, "trigger": { "url-filter": ".*" } } ]

action

action指定で、triggerで指定したリソースの振る舞いを指定します。

ここには

  • type

  • selector

の2種類があります。

type

リソースをブロックする時の振る舞いを指定

  • block

  • block-cookie

– css-display-none

selector

idやclassを指定してDOMレベルでどの要素を対象にするのかを指定します。

trigger

Content Blockerが有効になる条件を記述します。

ここではurl-filterやresource-typeという定義が指定できるのでURLごとに設定したり、画像やcss、javascriptといった要素を指定することができます。

 

iOSアプリでなくてもsafariの拡張機能として提供されるので、PC側でも、この機能をもったsafariの拡張機能は開発できそうです。

参考

https://www.webkit.org/blog/3476/content-blockers-first-look/

https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html

これからどうなるか

今だとどの広告を表示・非表示にするのかは、開発者側に委ねられているので、

gori.me

「iOS 9」のコンテンツブロック機能、広告だけではなくGoogle Analyticsなどアクセス解析ツールもブロックされる可能性

で、言われているような設定も仕様上はできると思いますが、実際にはそんなことする人はいないので、そんなに気にしなくてもいいのではと思っております。