文档说明:本文档内容为介绍当App内存在H5页面时,H5数据应该如何上报?
1 H5桥接使用场景
1.1 如何将H5数据同时上报至H5应用和App应用?
场景举例:
一个“春日”活动H5嵌入在多个App端,按照当前方式操作,可以满足下述分析诉求:
App运营需要看到客户在App内参加H5活动前后的完整链路数据。
H5活动运营需要看到H5在所有App端内的活动数据。
操作说明:
创建两个应用:
一个App应用,该App有自己的Appkey_app
一个Web/H5应用,该Web/H5有自己的Appkey_h5
调用App内的attach接口,进行H5桥接
上报日志:
App报一条日志:
Appkey是App的“Appkey_app”
用户账号为App的用户账号
设备ID为App的设备ID
系统属性为App的系统属性
全局属性是App内埋点的全局属性
事件编码和事件属性为H5内的埋点
H5上报一条日志:
Appkey是H5的“Appkey_h5”
用户账号为H5的用户账号
设备ID为H5的设备ID
系统属性为H5的系统属性
全局属性是H5内埋点的全局属性
事件编码和事件属性为H5内的埋点
1.2 如何将H5数据仅上报至唯一App应用中?
场景举例:
由于技术架构,一部分页面为H5技术结构,按照当前方式操作,可以满足下述分析诉求:
App业务、运营和PD等可以在App数据内看到完整的全链路数据。
操作说明:
创建一个App应用,仅有一个Appkey_app
调用App内的attach接口,进行H5桥接
H5 Appkey设置为空,并调用aplus-jsbridge-only等于true,关闭H5数据上报
上报日志:
仅App报一条日志:
Appkey是App的“Appkey_app”
用户账号为App的用户账号
设备ID为App的设备ID
系统属性为App的系统属性
全局属性是App内埋点的全局属性
事件编码和事件属性为H5内的埋点
1.3 如果将H5数据仅上报至H5应用中?
场景举例:
App业务、运营和PD等不希望在App中看到H5的数据
操作说明:
创建两个应用:
一个App应用,该App有自己的Appkey_app
一个Web/H5应用,该Web/H5有自己的Appkey_h5
不进行任何API的调用
上报日志:
仅H5报一条日志:
Appkey是H5的“Appkey_h5”
用户账号为H5的用户账号
设备ID为H5的设备ID
系统属性为H5的系统属性
全局属性是H5内埋点的全局属性
事件编码和事件属性为H5内的埋点
2 H5桥接原理说明
上述方式的前提为:
App集成QuickTrackingApp SDK
以及app内的H5集成QuickTracking H5 SDK
图中表示当用户触发app中h5页面上的button2时,会同时上报两条日志:
通过App SDK上报:上报的日志中,appkey为app的appkey,全局属性为app的全局属性,事件编码和事件属性为h5中埋点的编码和属性。(图中绿色箭头)
通过H5 SDK上报:上报的日志中,appkey为h5的appkey,全局属性为h5的全局属性,事件编码和事件属性为h5中埋点的编码和属性。(图中黄色箭头)
3 App桥接H5接口
iOS:默认关闭,只有调用下述API才能打开
注意:iOS SPM版本1.3.0以下版本是默认自动桥接的,如果您升级,需要修改该逻辑
/**
* @brief H5桥接接口
*
* @param WebView WKWebView对象
* @warning
*
*/
+ (void)attach:(id)WebView;
例:
#import <QTCommon/UMSpmHybrid.h>
WKWebView *webView=[[WKWebView alloc]init];
[UMSpmHybrid attach:webView];
4 H5 SDK上报日志开关
控制黄色箭头链路的开关API:
H5 SDK API:
SDK配置 | ||
aplus-jsbridge-only | true | 关闭H5的日志发送(黄色箭头) |
false(默认false) | 打开H5的日志发送(黄色箭头) |
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-jsbridge-only', true]
});
5 H5 全局属性全局生效接口
在H5中设置开启下述接口后,H5中通过aplus.appendMetaInfo中globalproperty
或aplus.setMetaInfo中globalproperty
设置的全局属性将会同步生效至App原生中。(该接口默认为false)
注意,该接口在qt_web_v2.0.12中支持,需搭配android 1.4.3.PX及以上版本,iOS 1.4.0.PX及以上版本使用。
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-globalproperty-sync-enable', true]
});
例如:在App中设置全局属性「当前所在城市:北京」,在App内H5中设置全局属性「当前所在城市:上海」,则在H5和App原生中触发的事件的全局属性都将为「当前所在城市:上海」。如果不开启该开关,则H5中设置的全局属性不会再App原生中生效。
6 历史文档
注意:iOS SPM版本1.3.0以下版本是默认自动桥接的,如果您升级,需要修改该逻辑
H5桥接API介绍
在进行H5桥接前,需要首先集成App SDK和JS SDK,并初始化。
API接口
在iOS中,H5页面上的事件统计协议默认跟随Native上报。
Native页面PV事件不上报
当对h5层进行统计时,若需要避免native层和h5层页面PV事件重复上报,需要调用此函数。此函数调用后,SDK不会在对当前native层页面PV事件进行统计及上报,避免和H5层页面PV事件重复上报。
/**
* @brief 跳过当前页面统计.
*
* @param PageObject 容器对象(自动获取页面时使用,默认手动可填nil)
* @param pageName 页面名称(手动设置页面时使用,当设置自动获取页面时可填nil)
* @warning 建议在设置页面之前调用此接口,调用后设置的native页面将不发送数据
*
*/
+ (void)skipMe:(id)PageObject pageName:(NSString *)pageName;