アプリ内WebViewの行動をトラッキングする

🚧

Cordova標準のWebViewをご利用の場合

Cordovaアプリとして画面表示するためのWebViewに関しては、KARTE Cordova SDK(cordova-plugin-karte)のAPIを活用してトラッキング可能です。
このページは、画面表示用のWebViewとは別に cordova-plugin-inappbrowser 等のアプリ内 webview を使用している場合に、Cordovaアプリ側のユーザーと紐付けをして同一ユーザーとしてトラッキングする際の手順になります。

WebView内の行動(ページ遷移など)をトラッキングしたい場合に、WebViewトラッキングの機能を利用することで実現可能です。

実装方法

Webページ内に 計測タグ を設置してWebViewトラッキングを行います。
実装は以下のステップで行います。

  1. Webページ内に計測タグを設置する
  2. WebとAppのユーザーの紐付け処理を実装する

STEP1: Webページ内に計測タグを設置する

計測タグの設置方法については、セットアップしよう(ウェブ) をご覧ください。

なお、既にKARTEをご契約中でWebページに計測タグが設置されている場合は、このステップは不要です。

STEP2: WebとAppのユーザーの紐付け処理を実装する

Webページに計測タグを設置することでページロードに合わせてトラッキングが行われるようになりますが、このままではネイティブSDKでトラッキングした情報(ネイティブアプリ内のユーザー行動)と、計測タグでトラッキングした情報(WebView内のユーザー行動)が、別のユーザー行動としてトラッキングされます。

ネイティブアプリ上の行動とWebページ上での行動を同一のユーザー行動としてトラッキングするために、それぞれのユーザーの紐付け処理を行う必要があります。

📘

紐付け処理によってできること

  • 紐付け前後のネイティブアプリ内のユーザー行動と、WebView内のユーザー行動が紐付く(紐付け後WebView内・ネイティブアプリ内のユーザーは同一ユーザーとして扱われます)
  • 計測タグが発行する全イベントの _source フィールドの値が native_app_webview となる
  • 計測タグが発行する全イベントのmetadataフィールド内に app_info フィールドが付与される

🚧

マルチドメインオプション利用時の注意点

WebとAppのユーザー紐付け処理はマルチドメインオプションによるクロスドメインでのユーザ統合機能の対象外となります

紐付け処理の実装について

UserSync.getUserSyncScript を用いて、ユーザースクリプトを取得し、WebView上でユーザースクリプトを実行することで連携が可能です。

ユーザースクリプトの設定が行われたWebViewでページをロードすることにより、紐付けが行われた状態でトラッキングが行われます。

cordova-plugin-inappbrowserを使った実装例

KarteUserSync.getUserSyncScript().then(function(script) {
    this.inAppBrowser = cordova.InAppBrowser.open('<ロード対象のWebページURL>', '_blank', 'location=yes');
    var iab = this.inAppBrowser;
    this.inAppBrowser.addEventListener('loadstart', function(params) {
        //loadstart時に即時実行すると連携されない場合があるため、タイミングをずらして複数回実行している。
        for (let i = 1; i < 20; i++) {
            setTimeout(function(){
                iab.executeScript({ code: script });
            }, i * 100);
        }
    });
});

🚧

ユーザースクリプトを実行できない場合

ユーザースクリプトを実行できない環境では、SDKによるユーザー紐付けは行えません。
以前提供していた、クエリパラメータによる紐付けは非推奨となり、予告なく機能を停止する可能性があります。
identifyイベントを発火して、明示的にユーザーを紐づけてください。

🚧

クエリパラメータの有効期限について

クエリパラメータには1分の有効期限を設けており、有効期限が切れている場合は紐付けが行われません。
そのためページをロードする際は、URLに都度クエリパラメータを付与するようにしてください。

🚧

WebView内で発生したイベントをトリガーに接客を配信する際の注意点

WebView内で発生したイベント(_sourcenative_app_webview のイベント)をトリガーに配信される接客サービスはSDKではなくアプリが管理するWebViewにアクションが表示されます。
iOSにおいてWebViewがWKWebViewの場合、そのままではアクション内のURLスキームが自動で処理されずアクション経由のリンク遷移ができません。URLスキームを処理してアクション経由のリンク遷移を動作させるためにはWKWebViewのnavigationDelegateの実装が必要となります。


検証方法

管理画面のユーザーストーリー画面で、Webページ上での行動がネイティブアプリ上での行動として扱われているか確認してください。

計測タグ経由でトラッキングされた閲覧イベントに APP アイコンが付いていれば、ネイティブアプリ上での行動として扱われております。

トラブルシューティング

WebViewの紐付け処理やWebView内に表示した接客で問題が起きた場合は以下ページをご確認ください。
WebView内の接客やWebView連携で問題が発生した時のチェックリスト