App内H5数据上报

说明

文档说明:本文档内容为介绍当App内存在H5页面时,H5数据应该如何上报?

1 H5桥接使用场景

1.1 如何将H5数据同时上报至H5应用和App应用?

场景举例:

一个“春日”活动H5嵌入在多个App端,按照当前方式操作,可以满足下述分析诉求:

  • App运营需要看到客户在App内参加H5活动前后的完整链路数据。

  • H5活动运营需要看到H5在所有App端内的活动数据。

操作说明:

  1. 创建两个应用:

  • 一个App应用,该App有自己的Appkey_app

  • 一个Web/H5应用,该Web/H5有自己的Appkey_h5

  1. 调用App内的attach接口,进行H5桥接

上报日志:

  1. App报一条日志:

    1. Appkey是App的“Appkey_app”

    2. 用户账号为App的用户账号

    3. 设备ID为App的设备ID

    4. 系统属性为App的系统属性

    5. 全局属性是App内埋点的全局属性

    6. 事件编码和事件属性为H5内的埋点

  2. H5上报一条日志:

    1. Appkey是H5的“Appkey_h5”

    2. 用户账号为H5的用户账号

    3. 设备ID为H5的设备ID

    4. 系统属性为H5的系统属性

    5. 全局属性是H5内埋点的全局属性

    6. 事件编码和事件属性为H5内的埋点

1.2 如何将H5数据仅上报至唯一App应用中?

场景举例:

由于技术架构,一部分页面为H5技术结构,按照当前方式操作,可以满足下述分析诉求:

  • App业务、运营和PD等可以在App数据内看到完整的全链路数据。

操作说明:

  1. 创建一个App应用,仅有一个Appkey_app

  2. 调用App内的attach接口,进行H5桥接

  3. H5 Appkey设置为空,并调用aplus-jsbridge-only等于true,关闭H5数据上报

上报日志:

  1. 仅App报一条日志:

    1. Appkey是App的“Appkey_app”

    2. 用户账号为App的用户账号

    3. 设备ID为App的设备ID

    4. 系统属性为App的系统属性

    5. 全局属性是App内埋点的全局属性

    6. 事件编码和事件属性为H5内的埋点

1.3 如果将H5数据仅上报至H5应用中?

场景举例:

  1. App业务、运营和PD等不希望在App中看到H5的数据

操作说明:

  1. 创建两个应用:

  • 一个App应用,该App有自己的Appkey_app

  • 一个Web/H5应用,该Web/H5有自己的Appkey_h5

  1. 不进行任何API的调用

上报日志:

  1. 仅H5报一条日志:

    1. Appkey是H5的“Appkey_h5”

    2. 用户账号为H5的用户账号

    3. 设备ID为H5的设备ID

    4. 系统属性为H5的系统属性

    5. 全局属性是H5内埋点的全局属性

    6. 事件编码和事件属性为H5内的埋点

2 H5桥接原理说明

yuque_diagram (2)

上述方式的前提为:

  1. App集成QuickTrackingApp SDK

  2. 以及app内的H5集成QuickTracking H5 SDK

图中表示当用户触发app中h5页面上的button2时,会同时上报两条日志:

  1. 通过App SDK上报:上报的日志中,appkey为app的appkey,全局属性为app的全局属性,事件编码和事件属性为h5中埋点的编码和属性。(图中绿色箭头)

  2. 通过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中globalpropertyaplus.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;