iOS9新搭載 強力すぎるコンテンツブロッカーの設定

iOS9新搭載 強力すぎるコンテンツブロッカーの設定

iOS9がいよいよ正式リリース間近となって参りました。

私もAppleが公開しているドキュメントや、他のエンジニアのブログなどをチェックしており、今回私が気になっているものまずは4点だけピックアップしました。

App Transport Security(ATS)問題

iOS9からは基本的にhttpによる通信ができなくなります。

よくあるUIWebViewやWKWebViewなどのWebページ表示からNSURLConnectionなどの通信まで全部「https」にしなければならないようです。

アプリの設定でhttp通信を許可にすれば大丈夫のようですが、そのうちAppleがリジェクト必須にする可能性もありますので要注意です。

今現在マーケットにリリースされているアプリに関しては、通信もできる(iOS9 beta4現在確認済み)なので慌てず待ちましょう。

Large Device Tokens (LDT)問題

iOSのプッシュ通知を許可にすると取得できるdevice Token(プッシュ通知ようのIDのようなもの)が2016年にサイズが大きくなるとのことです。

これはATSのようにすでにAppStoreに公開済みのアプリは対象にはならないのか非常に気になるところです。

例えばサーバー側にこのtokenをためるプログラムがあったとして、このIDが正しいものかを判定するための処理が「文字数」にて行っていた場合、LDT問題によって、新規ユーザーにはプッシュ通知が届かなくなることでしょう。

SFSafariViewController

開発するアプリにこの機能を組み込むことによって、簡単にWEBページを表示することができます。

またSafariとCookieのデータの共有もできるので広告のトラッキングなどに役立ちます。

今までだとトラッキングのために、アプリを開いたらすぐにSafariに飛ばすものがたくさんありましたが、ユーザーのことを考え少しでもなくなってくれるといいですね。

Content Blocking Safari Extensions

「Content Blocking Safari Extensions(以降CBSEと記載します)」。巷で大騒ぎになっている広告ブロックのiOS9目玉機能。

Appleのドキュメント上には設定方法が記載がありますが、どのようなアプリとしてリリースすればいいのかよくわかっておりません。

しかし、この新機能の効果は超絶大です。

関連記事:iOS9のコンテンツブロッカー対策方法

そもそもCBSEとは?

画像、ポップアップ、Cookie、その他コンテンツをブロックするためのExtensionです。

Extensionは前回私の記事にて取り上げましたように、iOS8から搭載された機能で、現在使っているアプリから移動することなく、他のアプリの機能を利用することができるものです。

このCBSEはmobileのSafariで利用ができるExtensionになりますので、他社ブラウザアプリや、UIWebViewなどには適用されません。

CBSEのブロック機能が効果絶大の理由

簡単に設定が可能

例えば、KeyboardExtensionに関してはキーボードの設定を有効にするために設定アプリの深い階層まで入っていかなければなりません。
  一般→キーボード→キーボード→新しいキーボードを追加

一方このCBSEはもっとステップが短くなります。
  Safari→コンテンツブロッカー

参照:iOS9のコンテンツブロッカーを有効にする方法

一度オンにしたら自動で適用

CBSEのような機能はiOS8時点であったAction Extensionでも実現可能でした。

しかし、この機能だとページを読み込むごとにSafariのこのボタンを押してアプリを起動させる必要がありました。

image07

しかし、CBSEでは一度設定をオンにしたら、半永久的に設定が有効になります。

広告のブロックだけの機能ではない

先ほど記載したように、開発者の設定によって様々な要素をブロックすることができます。

この設定はCBSEを追加することで生成されるjsonファイルを修正することで、設定が可能になります。

例:全URLのHTMLのDIVを非表示にしたい場合

triggerにあるurl-filterが対象となるURL全URLを対象にするのであれば「.*」selectorの中に様々な要素を入れることができます。

divでもpでもh1でもarticleでもheaderでも良いわけですね。
またdivの中の特定のIDだけという場合でもCSSを記述するように

 div#targetID

このような書き方で設定が可能です。
 

簡単に広告をブロックできる設定

本題にはいりますが、私は色々なニュースサイト/まとめサイト/ブログなど閲覧するわけですが、1ページの中にたくさんの広告を入れているサイトがあります。

そのようなサイトは概ね下記設定で、ほとんどの広告を非表示にすることが可能です。

全ページのimgとiframeを強制的に非表示にします。

この設定を有効にすると、普通のページの画像も表示されることができなくなってしまいますが、広告特有のクラスやID、URLパターンを使えば、かなり完全な状態で広告をブロック可能だと思います。

参考までに弊社運営のBacketGoal.comにて表示を見比べてみました。

 《CBSE反映前》     《CBSE反映後》

image02   image04

コンテンツブロッカーがアプリとしてAppStoreにリリースができるとなると、影響力はすさまじいものと私は考えております。

弊社としてもまったくの無関係ではない問題なので、今後のAppleの動向をチェックし戦略を立てていきたいものです。

コメント