WebViewのトラッキングを行う

WebView 内のユーザー行動をトラッキングするには、いくつかの方法があります。

WebView 内のページに KARTE の計測タグがある場合

WebView とアプリのユーザー行動を紐付けて計測する

アプリ内 WebView で表示される自社サイトに KARTE の計測タグ (tracker.js) が設置されている場合は、WebView 内でのユーザー行動とアプリ内のユーザー行動を紐付けて計測することが可能です。
紐付けを行うためには、WebView で開くページの URL に特定のクエリを付加する必要があります。

紐付けによって出来ること

  • 紐付け前後の WebView 内のユーザーの行動が、アプリ内の行動と紐づく (紐付け後の WebView 内・アプリ内の行動は、同セッションとして扱われます)
  • tracker.js が発行する全イベントの _source フィールドに native_app_webview が付く
  • tracker.js が自動発行する req イベントに app_info のフィールドが付く

実装方法

SDK が用意しているヘルパーメソッドに URL を渡すことで、必要なクエリが付加された URL を得ることができます。

なお、この情報は Cookie に保持されるため、一度クエリが付加されたページを読み込めば、以降読み込み時にクエリを付ける必要はありません。

url = KarteTrackerJsUtil.URLByAppendingUserSyncQueryParameter(appKey: "YOUR_APP_KEY", url: url)

let request = URLRequest(url: url)
self.webView.loadRequest(request)
url = [KarteTrackerJsUtil URLByAppendingUserSyncQueryParameter:@"YOUR_APP_KEY" withURL: url];

NSURLRequest *request = [NSURLRequest requestWithURL: url];
[self.webView loadRequest:request];

WebView とアプリのユーザー行動を紐付けて計測しない

WebView 内のユーザー行動とアプリ内のユーザー行動を紐付けて計測しない場合、それぞれ別のユーザーとして計測が行われてしまいます。
そのため通常は WebView 側の計測タグを無効にしてアプリ側のみで計測を行うようにします。

WebView 内の計測タグを無効にする方法

WebView で開くページの URL にクエリとして _karte_tracker_deactivate=true を付加する必要があります。
アプリ側での計測方法については、下記 WebView 内のページに KARTE の計測タグがない場合 をご覧ください。

WebView 内のページに KARTE の計測タグがない場合

WebView 内のページ遷移をトリガーに、アプリ内でトラッキングを行うことで WebView 内のユーザー行動をトラッキングすることが可能です。

サンプルコード

override func viewDidLoad() {
  super.viewDidLoad()
    
  if let url = URL(string: "https://karte.io?_karte_tracker_deactivate=true") {
    let request = URLRequest(url: url)
    self.webView.load(request)
  }
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  let title = webView.title ?? "unknown"
  let url = webView.url?.absoluteString ?? "unknown"
  KarteTracker.shared.view("webview", title:title values:[
    "url": url
  ])
}
- (void)viewDidLoad {
  NSURL *url = [NSURL URLWithString:@"https://karte.io?_karte_tracker_deactivate=true"];
  NSURLRequest *request = [NSURLRequest requestWithURL:url];
  [self.webView loadRequest:request];
}

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
  NSString *title = webView.title ? webView.title : @"unknown";
  NSString *url = webView.URL.absoluteString ? webView.URL.absoluteString : @"unknown";
  [[KarteTracker sharedTracker] view:@"webview" title:title values:@{
    @"url": url
  }];
}

WebViewのトラッキングを行う


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.