iOS

Swift4:javascriptの広告ブロック

iOSはmacOSとjavascript広告のブロックの仕方(手順)が違うことがわかりました。

違いを理解し、さらにiOS(webView)にブロックをまかせる場合、フィルタの持ち方をどうすればいいか理解し、着地するのにすっかり時間がかかってしまいました。

方式としては、プログラムに定義しておく方法(メモリ方式)とファイルに定義しておく方法があります。

iOS 11 WKWebViewで広告などのコンテンツブロックをするが参考になりました。次の点が参考になりました。

  • このサンプルプログラムはメモリ方式とファイル方式があり、ファイルをプログラムに埋め込む場合、必ずしもファイル方式をサポートしなくてもいいのではないか。
  • webViewはstoryboardでなく、プログラムで定義されているので、storyboard対応するには、インターフェースを変える必要がある。
  • フィルタの設定が再帰呼び出しになっている。
  • いくつかのwebViewをハンドリングしたい場合、パラメタ渡しにする必要があるが、再帰呼び出しで矛盾がないように定義する必要がある。
  • DispatchGroup()が使われていることも注意を要する。
  • fileprivateはclass内に定義して良い。また、UserDefaultsと連動していることに注意。
  • フィルタをwebViewに設定する方法があるように、逆にこれをリセット(削除)する方法がある。
  • 動作的には、cookieや広告をブロックした後にjavascript広告を除去することにした。
  • 課題は、削除した広告の空きを詰める処理を明らかにすること。

Screenshot 2018-01-22 23.27.36

Categories: iOS, Swift, 技術