AndroidのWebViewで広告を表示する場合の実装

実装のサンプルはこちらにあります。 以下ではサンプルを参考に実装の方法を説明します。

サンプル実装内の主要なファイルの説明

  • MainActivity.java
    • WebViewを表示するクラスです。
    • このサンプルではローカルのsample.htmlを読み込んでいます。
  • AppData.java
    • 広告IDやLAT、パッケージネームの取得を行っているクラスです。
  • sample.html
    • WebViewで表示させるページです。

注意事項

RTBのパラメータに使用する広告IDを端末から取得するにはGoogle Play services SDKが必要です。 build.gradleにcom.google.android.gms:play-servicesを追加してください。(最新版を推奨)

WebViewで表示させるページの編集

WebViewで表示させるページ内に広告タグを設置します。 またその広告タグよりも前にRTBパラメータの設定を行います。

サンプルのsample.htmlを参考にしてください。

<script>
    // 広告タグが利用するグローバル変数
    var geparams = window.geparams || {};
    // RTB用のパラメータをネイティブの処理から取得してグローバル変数に設定します。
    geparams.idfa = appData.getAdvertisingId();
    geparams.lat = appData.getLat();
    geparams.bundle = appData.getPackageName();
</script>

<!-- 広告タグ 管理ツールで発行したものを設置してください -->
<script type="text/javascript" src="xxx.js"></script>
1
2
3
4
5
6
7
8
9
10
11

アプリ情報の取得

RTBで使用するパラメータに設定する項目は広告ID、LAT、パッケージネームです。 アプリ情報の取得方法は、サンプルのAppData.javaを参考にしてください。

WebViewの制御

WebViewに

  • JavaScriptとの連携
  • 広告がタップされた際の処理 を設定します。

サンプルのMainActivity.javaを参考にしてください。

JavaScriptとの連携

JavaScriptからネイティブの処理を呼び出せるように設定します。

webView.getSettings().setJavaScriptEnabled(true);
Context context = getApplicationContext();
webView.addJavascriptInterface(new AppData(context), "appData");
1
2
3

上記の例では、JavaScript上でappData.getAdvertisingId()を実行するとネイティブ側のAppDataオブジェクトのgetAdvertisingId()メソッドが呼び出されます。

広告がタップされた際の処理

配信される広告はiFarmeを利用するケースがあります。 こうした広告をタップすると広告が表示されているiFrameの枠内でページが遷移されたり、期待する挙動になりません。

広告がタップされたらブラウザアプリを起動させて遷移先のページを表示させるのが妥当です。 こうした挙動を実現するには、下記のようにします。

  1. 管理ツール上でゾーンの設定を編集し、広告URLに含める任意のキーワードを登録
  2. WebViewClientのonLoadResourceで登録キーワードを含むURLを捉えたら、広告のタップによるものと判断
  3. そのURLをブラウザアプリで開く
webView.setWebViewClient(new WebViewClient() {

    @Override
    public void onLoadResource(WebView view, String url) {

        // URLにキーワードが含まれていたら 広告がクリックされたと判断
        if (url.contains("管理ツールで設定したキーワード")) {
            // 外部ブラウザで開くのでWebView内での読み込みを中断します。
            webView.stopLoading();

            // 外部ブラウザで開きます。
            Uri uri = Uri.parse(url);
            Intent i = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(i);
            return;
        }

        super.onLoadResource(view, url);
    }
});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

実装後の確認方法

広告タグを設置して、WebView内に広告が表示されていても RTBのパラメータが正しく設定されていなければRTBは行われません。

パラメータが正しくされているか確認するためにログ出力する方法が用意されています。 下記のタグをパラメータ設定処理の後に設置してください。 コンソールにログが出力されるようになります。 Android Stadioではlogcatで閲覧できます。

<script type='text/javascript' src='http://js.gsspcln.jp/l/jssdk_debug.js'></script>
1
  • パラメータの設定に成功している場合のログ
idfa=xxx  (xxxにはアプリから取得した値が表示される)
lat=xxx
bundle=xxx
1
2
3
  • パラメータの設定に失敗している場合のログ
idfa=undifined
lat=undifined
bundle=undifined
1
2
3
Last Updated: 2019/5/15 17:41:11