有一种业务场景,移动活动页面或者移动 Web App 可以通过浏览器独立访问,同时也可以在 App WebView 中内嵌访问,或者可以在小程序中内嵌访问。
现在有一个问题,怎么把页面中的行为跟踪与 APP 或者小程序中的行为跟踪整合?
如果您只是单一场景下进行跟踪,请阅读以下解决方案:
如果您已经使用 Web JS SDK,想多环境适配,阅读下文中的设置说明。
在安装 Web JS SDK以后,配置好自定义行为跟踪,就会自动触发 APP 或者微信小程序的用户行为跟踪请求。
Web JS SDK 提供了开关,可以控制是否发生跟踪请求,在 create
方法创建跟踪中进行配置。
_ha("create", "PROJECT ID", {
/** 所有 web 跟踪,默认 true(开启),当设置为 false 则关闭 */
web_track: true,
/**
* 当前页面载入到移动 App 的 webview 中,
* 所有 web 对应的配置的行为跟踪都会调用 App SDK 的行为跟踪
* 默认 true(开启),当设置为 false 则关闭
*/
app_track: true,
/**
* 当前页面载入到微信小程序的 <web-view> 中,
* 所有 web 对应的配置的行为跟踪都会调用微信小程序 SDK 的行为跟踪
* 默认 true(开启),当设置为 false 则关闭
*/
wechat_applet_track: true,
});
如果需要在 APP 中嵌入页面,则设置以下两步骤。
首先需要集成 iOS SDK 或者 Android SDK。
在 Android Native 端添加如下代码:
在加载 webview 之前添加:
HMTAgent.setWebViewAction(WebView webview, Context context);
注:此处 Context 必须为 activity 对象。
在 iOS Native 端添加如下代码:
UIWebView 场景:
Naive 端只需在 UIWebView 加载完成的代理方法中调用 SDK 提供的对应方法即可:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
[HMTAgentSDK setActionOnWebView:webView];
}
WKWebView 场景:
Navie 端需要在 WKWebView 初始化完成后调用 SDK 提供给 WkWebView 的设置方法
[HMTAgentSDK setActionOnWKWebView:self.WKWebView];
并且需要在页面销毁时调用 SDK 提供的注销网页方法
[HMTAgentSDK removeHmtWKWebAction:self.WKWebView];
如果需要在微信小程序中嵌入页面,则设置以下三步骤
首先需要集成 微信小程序 SDK。
根据 <web-view>
文档,首先在需要调用 hxt
的网页中引入 JSSDK 1.3.2
<web-view>
组件绑定 bindmessage
事件<web-view src="..." bindmessage="handleWebviewMessage"></web-view>;
Page({
handleWebviewMessage(e) {
app.hxt.onWebviewMessage(e);
},
});
Webview SDK 使用微信 JSSDK 提供的
wx.miniProgram.postMessage()
接口来与小程序 SDK 通讯。如果你在网页中也使用了 postMessage 接口,需要区分由 SDK 发送的消息,可通过消息对象的type
字段来判断handleWebviewMessage(e) { app.hxt.onWebviewMessage(e); // SDK 发送的消息 type 字段固定为 invokeHxt const hxtMessages = e.detail.data.filter(message => message.type === 'invokeHxt') }