目录
此内容是否有帮助?

# H5はAPP SDKと通じる

# I.プログラムの紹介

APPでは、いくつかのページがH5ページで構成されている可能性があります。この場合、APP SDKはH5ページのデータ収集を行うことができません。JavaScript SDKを使用してH5ページでのユーザーの行動を収集する必要があります。JavaScript SDKとAPP SDKのデータの一貫性を確保するために、新しいバージョンのSDKにデータパス機能が追加されました。

H 5ページはJavaScript SDKを使用してデータを収集し、収集したデータは直接送信せず、APP SDK(Android SDKおよびiOS SDK)を介してサーバーに送信します。APP SDKは、JavaScript SDKによって収集されたデータを次のように

  1. JavaScript SDK着信の#time、つまりイベントの時刻は、埋め込みポイントがトリガーされた時刻に基づいて
  2. APP SDKを使用する#account_id#distinct_id、APP SDKが保守するユーザーに準じ
  3. APP SDKのプリセットプロパティに参加し、JavaScriptのプリセットプロパティと競合する場合、APP SDKのプリセットプロパティは競合値を#libフィールドなどで上書きし、APP SDKの値はJavaScript SDKの値
  4. APP SDKのパブリックプロパティ: JavaScriptで渡されたプロパティと競合する場合は、ネイティブのパブリックプロパティ値を破棄します
  5. APP SDKのtimeEventインターフェイスインターフェイスは、JavaScript SDKによって収集されたイベントに対して有効
  6. JavaScript SDKのlogin, logout, identifyインタフェースではAPP SDKのユーザーIDを修正できず、H5でAPP SDKと通じた場合、JavaScript SDKでは上記インタフェースでデータのユーザーIDを修正でき
  7. H5とAPP SDKのスイッチをオンにすると、実行環境にAPP SDKが存在しない場合、JavaScript SDKはデータを直接報告します。

# 二、使用方法

H5とAPP SDKのパススルー機能を有効にするには、JavaScript SDKとAPP SDKで次のように構成する必要がありSDKの該当バージョンてください。履歴バージョンを使用するユーザーは最新バージョンにアップグレードしてください。

# 2.1 Android SDKの使用方法

Android SDKは1.2.0以降のバージョンが必要

WebViewを初期化するときにsetJsBridgeを呼び出します:

ThinkingAnalyticsSDK.sharedInstance(getApplicationContext()).setJsBridge(WebView webView);

X5Webviewをサポートする必要がある場合、Android SDKをサポートする必要がある場合は、setJsBridgeForX5WebViewを呼び出します:

ThinkingAnalyticsSDK.sharedInstance(context, appId).setJsBridgeForX5WebView(webView);

# 2.2 iOS SDKの使用方法

iOS SDKは1.1.1以降のバージョンが必要

1.SDKを初期化した後、addWebViewUserAgentを呼び出します:

   [[ThinkingAnalyticsSDK sharedInstance] addWebViewUserAgent];

2.を初期化するWebViewときに、WebViewの種類に応じて次の呼び出しを実行します。

  • 場合はUIWebView

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if ([[ThinkingAnalyticsSDK sharedInstance] showUpWebView:webView WithRequest:request]) {
        return NO;
    }
     // 在这里添加您的逻辑代码
    return YES;
}
  • 場合はWKWebView

WKWebViewのcustomUserAgentプロパティを次のように設定します

    _wkWebView.customUserAgent = @" /td-sdk-ios";

UAがある場合は"/td-sdk-ios"をつなぎ合わせ、decidePolicyForNavigationActionに次のコード


- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    if ([[ThinkingAnalyticsSDK sharedInstance] showUpWebView:webView WithRequest:navigationAction.request]) {
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
    }
    // 在这里添加您的逻辑代码
    decisionHandler(WKNavigationActionPolicyAllow);
}

# 2.3 JavaScript SDKの使用方法

JavaScript SDKは1.0.6以降のバージョン

  • 初期化パラメーター構成にuseAppTrack:: trueを追加します。
(function(param) {
  var p = param.sdkUrl,
    n = param.name,
    w = window,
    d = document,
    s = "script",
    x = null,
    y = null;
  w["ThinkingDataAnalyticalTool"] = n;
  w[n] =
    w[n] ||
    function(a) {
      return function() {
        (w[n]._q = w[n]._q || []).push([a, arguments]);
      };
    };
  var methods = [
    "track",
    "quick",
    "login",
    "logout",
    "trackLink",
    "userSet",
    "userSetOnce",
    "userAdd",
    "userDel",
    "setPageProperty"
  ];
  for (var i = 0; i < methods.length; i++) {
    w[n][methods[i]] = w[n].call(null, methods[i]);
  }
  if (!w[n]._t) {
    (x = d.createElement(s)), (y = d.getElementsByTagName(s)[0]);
    x.async = 1;
    x.src = p;
    y.parentNode.insertBefore(x, y);
    w[n].param = param;
  }
})({
  appId: "APP_ID", //系统分配的APPID
  name: "ta", //全局的调用变量名,可以任意设置,后续的调用使用该名称即可
  sdkUrl: "http://www.a.com/thinkingdata.js", //统计脚本URL
  serverUrl: "http://receiver.ta.thinkingdata.cn:9080/sync_js", //数据上传的URL
  send_method: "image", //数据上传方式
  useAppTrack: true // 打通 APP 与 H5
});