# 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 によって収集されたデータを次のように
- JavaScript SDK 着信の
#time
、つまりイベントの時刻は、埋め込みポイントがトリガーされた時刻に基づいて - APP SDK を使用する
#account_id
と#distinct_id
、APP SDK が保守するユーザーに準じ - APP SDK のプリセットプロパティに参加し、JavaScript のプリセットプロパティと競合する場合、APP SDK のプリセットプロパティは競合値を
#lib
フィールドなどで上書きし、APP SDK の値は JavaScript SDK の値 - APP SDK のパブリックプロパティ: JavaScript で渡されたプロパティと競合する場合は、ネイティブのパブリックプロパティ値を破棄します
- APP SDK の timeEvent
インターフェイス
インターフェイスは、JavaScript SDK によって収集されたイベントに対して有効 - JavaScript SDK の login, logout, identify インタフェースでは APP SDK のユーザー ID を修正できず、H5 で APP SDK と通じた場合、JavaScript SDK では上記インタフェースでデータのユーザー ID を修正でき
- 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
});