帮助中心 > 技术文档 > 客户端SDK > 跨平台框架 > Uni App > 使用说明

1. 初始化整体说明

说明:初始化整体说明是对初始化参数的数据结构说明,具体的初始化参数详见【集成文档(native)】、【集成文档(js)】。

var param = {
   /**-- 1、app初始化脚本 --**/
  serverUrl:"采集上报地址URL"//【native】【必填】配置采集上报地址URL
  enableLog:true//【native】【可选】开启日志
  flushInterval:5000,            //【native】【可选】上报时间间隔(毫秒)
  flushPendSize:100,             //【native】【可选】自定义上报缓存条数
  autoTrackTypePolicy:3//【native】【可选】开启全埋点
  ...
  ...
  /**-- 2、微信小程序初始化脚本 --**/
  applet:{
        showLog:false,           // 是否开启日志
        name:"hina",
        autoTrack:{              // 小程序全埋点配置
            appLaunch: true,     // 默认为 true,false 则关闭 H_MPLaunch 事件采集
            appShow: true,       // 默认为 true,false 则关闭 H_MPShow 事件采集
            appHide: true,       // 默认为 true,false 则关闭 H_MPHide 事件采集
            pageShow: true,      // 默认为 true,false 则关闭 H_MPViewScreen 事件采集
            pageShare: true,     // 默认为 true,false 则关闭 H_MPShare 事件采集
            mpClick: false,      // 默认为 false,true 则开启 H_MPClick 事件采集
            mpFavorite: true,    // 默认为 true,false 则关闭 H_MPAddFavorites 事件采集
            pageLeave: false     // 默认为 false, true 则开启 H_MPPageLeave事件采集
        }
        ...
  },
    /**-- 3、H5初始化(开启全埋点)脚本 --**/
   h5: {
      // default 表示开启,自动采集 H_WebClick 事件,可以设置 'not_collect' 表示关闭。
      clickAutoTrack: true,
      // default 表示开启,自动采集 H_WebStay 事件,可以设置 'not_collect' 表示关闭。
      stayAutoTrack: true,
  }
};

hinaCloud.init(param)

2. 开启全埋点(自动采集)

2.1 全埋点(小程序)

小程序全埋点支持事件说明:

字段名 用户行为 默认(开启)值 支持平台
appLaunch 应用启动 true 微信、支付宝、百度、抖音、快手、京东、QQ
appShow 应用显示 true 微信,支付宝、百度、抖音、快手、京东、QQ
appHide 应用隐藏 true 微信,支付宝、百度、抖音、快手、京东、QQ
pageShow 页面显示 true 微信,支付宝、百度、抖音、快手、京东、QQ
pageShare 分享 true 微信
mpClick 点击 false 微信,支付宝、百度、抖音、快手、京东、QQ
mpFavorite 收藏 true 微信
pageLeave 页面离开 false 微信,支付宝、百度、抖音、快手、京东、QQ

需了解事件详情,请查看微信小程序 SDK 全埋点

2.2 全埋点(H5)

H5全埋点支持事件说明:

字段名 用户行为 默认(开启)值
clickAutoTrack 点击事件 true
stayAutoTrack 页面停留 true

需了解H5事件详情,请查看Web JS SDK 全埋点 autoTrackConfig 参数。

2.3 全埋点(native)

Native SDK 可以自动采集一些用户行为,如 App 启动、退出、浏览页面、控件点击,共计四种。但是,uniapp工程仅支持采集APP启动和退出,对于浏览页面和控件点击的采集,在下面的注意事项里提供了建议方案。

说明:在初始化时,通过autoTrackTypePolicy参数进行配置开启,不配置则视为关闭全埋点。

var param = {
    /**1、app初始化脚本**/
    ...
    //比如:1:开启App 启动事件;2:开启App 退出事件,3:开启App启动和退出事件,0:不开启(默认);
    autoTrackTypePolicy:3//【native】【可选】开启全埋点
    ...
    /**2、微信小程序初始化脚本**/
    applet:{
        ...
        autoTrack:{// 在这里进行小程序全埋点配置,配置请参考【集成文档(js)】
        }
        ...
  },
  h5: {
      // 在这里进行h5全埋点配置,配置请参考【集成文档(js)】
  }
};

hinaCloud.init(param)

注意:浏览页面[H_AppViewScreen]、控件点击[H_AppClick]的两个行为事件仅对原生工程支持,所以在非原生工程的情况下,该两个行为事件(浏览页面[H_AppViewScreen]、控件点击[H_AppClick])需要手动设置,设置示例代码如下,可参考进行埋点:

1、对于“浏览页面”事件,通过监听页面路由切换,然后添加自定义埋点来实现,uniapp切换路由监听导航跳转示例如下:

//注意要写在App.vue文件的onLauch方法里面
onLaunch: function() {
    //监听页面跳转变化
    let that = this;
    uni.addInterceptor('navigateTo', {    // 监听跳转
        success(e) {
            var properties = {H_title:"首页",H_url:"http://xxx",H_screen_name:"您的页面名称"};
            hinaCloud.track("H_AppViewScreen",properties)
            //
            that.watchRouter();
        }
    })
    uni.addInterceptor('redirectTo', {    // 监听关闭本页面跳转
        success(e) {
            that.watchRouter();
        }
    })
    uni.addInterceptor('switchTab', {     // 监听tabBar跳转
        success(e) {
            that.watchRouter();
        }
    })
    uni.addInterceptor('navigateBack', { // 监听返回
        success(e) {
            that.watchRouter();
        }
    })
}
methods: {
    watchRouter(){
        console.log('路由进行跳转');
    },
}

2、对于“控件点击”事件,首先看下项目使用的控件,有没有统一的设置监听方法;如果没有,是否可以在编译过程对控件统一植入监听器代码实现(切面编程);或者可以从页面渲染过程,遍历控件树,按需添加监听器相关逻辑;

methods: {
            focus(){
                console.log("聚焦");
            },
            blur(){
                console.log("失去焦点");
            },
            confirm(){
                console.log("回车确认");
            },
            click(){
                console.log("单击事件");
                // 设置事件属性信息
                var properties = {element_type:"button",element_content:"支付"};
              hinaCloud.track("H_AppClick",properties)
            },
            tap(){
                console.log("触摸");
            },
            longpress(){
                console.log("长时间按压");
            },
            touchcancel(){
                console.log("触摸中断");
            },
            touchmove(){
                console.log("触摸移动");
            }
        }

3. 用户关联

3.1 关联用户ID

适用平台:【Andorid、iOS、H5、小程序】

说明:当用户注册成功或登录成功时,需要调用 SDK 的 setUserUId() 方法。

hinaCloud.setUserUId("您平台用户唯一标识");// 比如:登录手机号、登录邮箱 、用户唯一主键值

注意:为了准确记录登录用户的行为信息,建议在以下时机各调用一次用户登录方法:

· 用户在注册成功时
· 用户登录成功时
· 已登录用户每次启动 App 时

3.2 获取设备唯一ID(匿名ID)

适用平台:【Andorid、iOS、H5、小程序】

说明:如需获取设备唯一id,请在初始化SDK后调用getDeviceUId()方法进行获取。

// 返回String类型
var deviceUID = hinaCloud.getDeviceUId();

3.3 自定义设备唯一ID(匿名ID)

适用平台:【Andorid、iOS、H5、小程序】

说明:默认情况下,SDK 会生成设备唯一ID 并可以保证该ID的唯一性,如需替换SDK默认分配的,配置如下:

hinaCloud.setDeviceUId("自定义设备唯一ID");

注意:

1、android平台:默认使用 AndroidId 作为设备 ID,如果 AndroidId 获取不到则获取随机的 UUID。

2、iOS平台:如果 App 引入了 AdSupport 库,SDK 默认使用 IDFA 作为设备唯一 ID,使用 IDFA 能避免用户在重装 App 后设备 ID 发生变化的情况。若没有IDFA,SDK 会使用 IDFV,如果 IDFV 获取失败,则使用随机的 UUID,一般情况下都能够获取到 IDFV。如果使用 IDFV 或 UUID ,当用户卸载重装 App 时设备 ID 会变。

3、web平台:默认是 cookie_id。

4. 用户属性

4.1 设置用户属性

适用平台:【Andorid、iOS、H5、小程序】

说明:同一个 key 多次设置时,value 值会进行覆盖替换。

var properties = {age:"18"};
hinaCloud.userSet(properties);

4.2 固定初始值的属性

适用平台:【Andorid、iOS、H5、小程序】

说明:同一个 key 多次设置时,value 值只会记录初次设定的值;适用于为用户设置首次激活时间、首次注册时间等属性。

var properties = {register_date:"2022-01-01"};
hinaCloud.userSetOnce(properties);

4.3 数值类型的属性

适用平台:【Andorid、iOS、H5、小程序】

说明:同一个 key 多次设置时,value 值(数值类型)进行求和计算;常用于记录用户付费次数、付费额度、积分等属性。

var properties = {score:80};
hinaCloud.userAdd(properties);

4.4 集合类型的属性

适用平台:【Andorid、iOS、H5、小程序】

说明:同一个 key 多次设置时,value 值(字符串类型)进行追加;

// 示例代码
hinaCloud.userAppend("books", ["童话世界", "三字经"]);

4.5 属性取消

适用平台:【Andorid、iOS、H5、小程序】

说明:取消已设置的某个用户属性。

hinaCloud.userUnset("gender");

4.6 清空用户属性

适用平台:【Andorid、iOS、H5、小程序】

说明:清空当前用户的用户属性。

hinaCloud.userDelete();

5. 自定义埋点

用于记录埋点事件。

5.1 自定义埋点

适用平台:【Andorid、iOS、H5、小程序】

说明:使用track()方法进行直接埋点,埋点事件支持添加自定义属性。

//比如:点击“开始阅读”按钮,并添加属性:小说id、小说的章节;
var eventName = "novel_read_btn_click";
var properties = {novel_id:"1234567890",novel_chapter:"3"};
hinaCloud.track(eventName, properties);

5.2 自定义时长埋点

适用平台:【Andorid、iOS】

说明:需要成对调用计时器的开始和结束方法,以此来实现对统计时长的事件采集;

*在事件开始时,调用trackTimerStart("event1"),该方法并不会真正发送事件;
*在事件结束时,调用trackTimerEnd("event1", properties),SDK 会触发 “Event” 事件,并自动将事件持续时间记录在事件属性 “event_duration” 中。

// 比如:开始观看视频;
hinaCloud.trackTimerStart("watch_video");

// 比如:结束观看视频;
// 调用 trackTimerEnd 方法,会触发事件,并在属性 event_duration 中记录时长;
hinaCloud.trackTimerEnd("watch_video", {video_id:"1234567890",video_type:"娱乐"});

6. 事件属性

在进行埋点事件追踪时,您可以根据需求对埋点事件进行属性的定义。目前 SDK 中提供了公共属性用于给每个埋点事件添加属性。

6.1 设置公共属性

适用平台:【Andorid、iOS、H5、小程序】

说明:公共属性是指对于所有事件都需要添加的属性,设置之后 SDK 会在每次触发埋点时,自动获取并添加到触发的事件中。

var properties = {app_name: 'SDKDemo'};
hinaCloud.registerCommonProperties(properties);

6.2 获取预置属性

适用平台:【Andorid、iOS、H5、小程序】

说明:如需了解和使用预置属性,可以通过此方法获取预置属性。

// 返回json类型
var presetProperties = hinaCloud.getPresetProperties();

7. 数据存储与发送(native)

在每次调用 track()、setUserUId()、userSet() 等方法时,SDK 会将埋点事件保存在数据库中,并会检查如下条件,以判断是否向服务器上传数据:

1.是否是 WIFI/2G/3G/4G/5G 网络条件
2.是否满足发送条件之一:
    a.与上次发送的时间间隔是否大于 flushInterval
    b.本地缓存日志数目是否大于 flushPendSize
    c.事件类型为 setUserUid() 方法触发的 $SignUp 事件

7.1 上报条件(native)

7.1.1 缓存条数

适用平台:【Andorid、iOS】

说明:设置本地缓存日志的最大条目数,默认本地埋点数据缓存为 100 条。

var param = {
  ...
  flushPendSize:50,//最少50条;
  ...
};

hinaCloud.init(param)

7.1.2 发送间隔

适用平台:【Andorid、iOS】

说明:设置埋点数据发送的间隔,默认为 15s。

var param = {
  ...
  flushInterval:5000,//最小 5 秒,单位毫秒。
  ...
};

hinaCloud.init(param)

7.1.3 设置数据的网络上传策略

适用平台:【Andorid、iOS】

说明:默认情况下,在 WIFI/3G/4G/5G 网络条件下,SDK 都会尝试去同步数据。可以自由组合来指定发送数据的网络策略。

/**
 * 设置 flush 时网络发送策略,默认 3G、4G、WI-FI 环境下都会尝试 flush
 * TYPE_NONE = 0;//NULL
 * TYPE_2G = 1;//2G
 * TYPE_3G = 1 << 1;//3G 2
 * TYPE_4G = 1 << 2;//4G 4
 * TYPE_WIFI = 1 << 3;//WIFI 8
 * TYPE_5G = 1 << 4;//5G 16
 * TYPE_ALL = 0xFF;//ALL 255
 * 例:若需要开启 4G 5G 发送数据,则需要设置 4 + 16 = 20
 */
//指定只在 3G/4G/WIFI 条件下发送数据。
hinaCloud.setFlushNetworkPolicy(14);

7.2 立即上报(强制上报)

适用平台:【Andorid、iOS】

说明:如果追求数据采集的时效性,调用flush(),即可立即执行上报。

hinaCloud.flush();

注意:在 App 进入后台状态或监听到网络切换有网络时,SDK 会调用 flush() 方法,将缓存的数据发送。

7.3 本地数据缓存上限值

适用平台:【Andorid、iOS】

说明:Android和iOS设置维度不一样,如有需要,请分开设置;

var param = {
  ...
  //android配置空间大小,SDK 本地数据库默认缓存数据的上限值为 32MB
  maxCacheSizeForAndroid: 32 * 1024 * 1024,//设置最小 16MB(16 * 1024 * 1024),单位 byte;
  //iOS配置条数,默认10000条
  maxCacheSizeForIOS: 10000,//设置最少10000条;
  ...
};

hinaCloud.init(param)

注意:当存储数量达到上限值,会依次丢弃老数据,保留最新的数据。

7.4 清空本地缓存事件

适用平台:【Andorid、iOS】

说明:删除 App 本地存储的所有事件。

hinaCloud.clear();

注意:如果不是特殊要求,请不要调用此方法。

8. 其他功能

7.1 上报pushId(native)

适用平台:【Andorid、iOS】

说明:如需使用海纳云的营销推送功能,则需要上报推送id;

   /**
     * 【推送id】设置推送唯一id
     *
     * @param pushTypeKey
     * @param pushUId
     */
hinaCloud.setPushUId("JPush", "push0001");

7.2 开启App与H5打通功能(native)

适用平台:【Andorid、iOS】

说明:初始化 SDK 时,进行如下配置。

var param = {
  ...
  enableJSBridge:true,
  ...
};

hinaCloud.init(param)

7.2 日志开关

适用平台:【Andorid、iOS、H5、小程序】

说明:初始化 SDK 时,进行如下配置。

var param = {
  ...
  enableLog:true,//【native】【日志】
  ...
  applet:{
     showLog:true, //【applet】【日志】
  }
};

hinaCloud.init(param)
作者:邓昊  创建时间:2023-05-29 13:30
最后编辑:王建华  更新时间:2024-11-20 17:38