You need to enable JavaScript to run this app.
文档中心
增长分析 DataFinder

增长分析 DataFinder

复制全文
下载 pdf
Android SDK
Android SDK API 说明
复制全文
下载 pdf
Android SDK API 说明

本文为您介绍 Android SDK 为您提供的主要 API,您可以结合埋点规划调用对应 API 进行埋点。

AppLog 埋点 API 介绍

说明

埋点功能对外的全局接口,支持静态调用。

init

  • 作用:是对SDK实例进行初始化配置,init 之后产生的事件就都会存储到本地数据库里确保事件不会丢失。

  • 定义

    • void init(@NonNull Context context, @NonNull InitConfig config)
    • void init(@NonNull Context context, @NonNull InitConfig config, Activity activity)
  • 参数

    参数名

    类型

    必填

    说明

    context

    Context

    应用 Context 上下文

    config

    InitConfig

    SDK 初始化配置,包括 AppId、上报地址等各种初始化配置

    activity

    Activity

    SDK 内部监听 Activity 生命周期用于判断应用前后台状态 / 全埋点事件记录(如有需要)等,所以如果您在进入 Activity 后才初始化 SDK,建议可以额外传入 Activity,以便 SDK 能更好的统计您所需的数据

  • 示例

    //  Applition 中初始化建议使用该方法
    AppLog.init(context, config);
    
    // 在 Activity 中初始化建议使用该方法
    AppLog.init(context, config, activity)
    

start

  • 作用:启动 SDK,配合 initConfig.setAutoStart 使用,常用于隐私合规。
    • 如果 initConfig.setAutoStart(true),则无需手动调用,SDK 内部自动 start
    • 如果 initConfig.setAutoStart(false),则需手动调用,调用后 SDK 才会采集敏感信息与请求上报
  • 定义:void start()
  • 示例
    // 忽略其他配置
    config.setAutoStart(false);
    // 提前 init 确保事件可以本地落库
    AppLog.init(context, config);
    
    // 用户同意隐私协议后触发 start,开始采集用户信息与上报事件
    AppLog.start();
    

onEventV3

  • 作用:上报自定义事件,Android 支持 init 前 / init 后调用。

    • 如果在 init 之前调用缓存在应用内存中,最多支持 300 条缓存,超过 300 条后会丢弃最早的缓存事件,直到触发 init 才会将事件存储到本地应用数据库中等待上报,如果应用使用过程中一直未 init,则缓存事件会在应用关闭时丢弃
    • 如果在 init 之后调用,事件直接存储到本地应用数据库中等待上报,直到上报成功删除本地数据库对应事件
  • 定义

    • void onEventV3(@NonNull String event)
    • onEventV3(@NonNull String event, @Nullable JSONObject params)
  • 参数

    参数名

    类型

    必填

    说明

    event

    String

    事件名

    params

    JSONObject

    事件属性,建议自定义属性不超过 50kb,避免影响整体数据上报,超过 50kb 数据会丢弃所有自定义属性调整为报错信息
    调整后报错事件示例:
    {
    "params":{
    "description":"event param too large"
    },
    "event":原事件事件名,
    }

  • 示例

    // 示例:上报事件 event,该事件不包含属性
    AppLog.onEventV3("event");
    
    // 示例:上报事件 event,该事件包含两个属性
    // 一个 string 类型的属性,属性名为 key_string,属性值为 value_string
    // 一个 int 类型的属性,属性名为 key_int,属性值为 10
    JSONObject paramsObj = new JSONObject();
    try {
        paramsObj.put("key_string", "value_string");
        paramsObj.put("key_int", 10);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    AppLog.onEventV3("event", paramsObj);
    

setUserUniqueID

  • 作用:设置 user_unique_id,可以调用多次,后面设置会覆盖之前相同设置项。

  • 定义

    • void setUserUniqueID(@Nullable String id)
    • void setUserUniqueID(@Nullable String id, @Nullable String type)
  • 参数

    参数名

    类型

    必填

    说明

    id

    String

    用户体系下 UserUniqueID

    type

    String

    用户多口径,仅涉及到多口径使用即可

  • 示例

    // 非多口径示例,一般都不需要多口径
    // 登录,设置您账号体系的 ID, 并保证其唯一性
    AppLog.setUserUniqueID("your_USER_UNIQUE_ID");
    // 登出,设置 uuid 为 null
    AppLog.setUserUniqueID(null);
    
    // 多口径示例
    // 登录,设置您账号体系的 ID, 并保证其唯一性
    AppLog.setUserUniqueID("your_USER_UNIQUE_ID", "your_USER_UNIQUE_ID_type");
    // 登出,设置 uuid 与 uuidType 同时设置为 null
    AppLog.setUserUniqueID(null, null);
    

setHeaderInfo

  • 作用:设置事件公共属性,可以调用多次,后面设置会覆盖之前相同设置项。

    • 上报机制是随着每一次日志发送进行提交,默认的日志发送频率是 1 分钟,所以如果在一分钟内连续修改自定义公共属性,按照日志发送前的最后一次修改为准
    • 建议公共属性为不推荐高频变动或不变的值
  • 定义

    • void setHeaderInfo(HashMap<String, Object> custom)
    • void setHeaderInfo(String key, Object value)
  • 参数

    参数名

    类型

    必填

    说明

    custom

    HashMap<String, Object>

    用于批量设置公共属性

    key

    string

    用于单个设置公共属性,key 为公共属性名

    value

    Object

    用于单个设置公共属性,value 为公共属性值

  • 示例

    // 批量设置
    HashMap<String,Object> headerMap = new HashMap<String, Object>();
    headerMap.put("key_public", "value_public");
    AppLog.setHeaderInfo(headerMap);
    
    // 单个设置
    AppLog.setHeaderInfo("key_public", "value_public");
    

removeHeaderInfo

  • 作用:移除事件公共属性。

  • 定义:void removeHeaderInfo(String key)

  • 参数

    参数名

    类型

    必填

    说明

    key

    String

    用于单个设置公共属性,key 为公共属性名

  • 示例

    // 示例:移除属性名为 key_public 的公共属性
    AppLog.removeHeaderInfo("key_public");
    
    // 通过传入 null 移除所有设置过的公共属性
    // 相当于 set 时设置了 null 就会清空所有公共属性
    AppLog.setHeaderInfo(null);
    

setEncryptAndCompress

  • 作用:设置请求是否压缩加密,默认开启。

  • 定义:void setEncryptAndCompress(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    请求是否压缩加密,默认开启

  • 示例

    // 开启请求压缩加密
    AppLog.setEncryptAndCompress(true);
    
    // 关闭请求压缩加密
    AppLog.setEncryptAndCompress(false);
    

getDid

  • 作用:获取当前设备的 device_id。
    • 不一定能获取到有效值,因为 device_id 是设备服务返回的,使用的话建议配置 AppLog.addDataObserver 使用
  • 定义:String getDid()
  • 返回值

类型

说明

String

当前设备 device_id,由设备服务下发

  • 示例
    String did = AppLog.getDid();
    

getSsid

  • 作用:获取当前用户对应的 SSID。

    • 不一定能获取到有效值,因为 SSID 是设备服务返回的,使用的话建议配置 AppLog.addDataObserver 使用
  • 定义:String getSsid()

  • 参数

    类型

    说明

    String

    当前设备 SSID,由设备服务下发

  • 示例

    String ssid = AppLog.getSsid();
    

addDataObserver / removeDataObserver

  • 作用:添加 / 移除各类数据回调监听,配套使用。

  • 定义

    • void addDataObserver(IDataObserver listener)
    • void removeDataObserver(IDataObserver listener)
  • 参数

    参数名

    类型

    必填

    说明

    key

    IDataObserver

    监听 SDK 初始化 / 设备注册请求 / AB 实验拉取 / SDK 服务端配置 / ABVid 变化

  • 示例

    // 添加数据集观察回调,this 指代实现了 IDataObserver 的类
    AppLog.addDataObserver(this);
    
    // IDataObserver 主要功能介绍与参数介绍:
    //  - did、iid、ssid 获取都可以通过该回调获取
    //  - 服务端配置获取
    //  - ab 实验配置获取
    public interface IDataObserver {
        /**
         * 本地的id数据加载结果通知,初始化加载本地缓存后回调,每次初始化都会回调
         * @param did device id
         * @param iid install id
         * @param ssid ssid
         */
        void onIdLoaded(@NonNull String did, @NonNull String iid, @NonNull String ssid);
    
        /**
         * 通知注册结果,以及id变化情况,每次触发设备注册后回调
         * 仅主进程会被调用
         * @param changed 是否和本地缓存有所不同
         * @param oldDid 本地老的 oldDid,可能为空
         * @param newDid server返回新的 device id
         * @param newIid server返回新 install id
         * @param newSsid server返回新 ssid
         */
        void onRemoteIdGet(boolean changed, @Nullable String oldDid, @NonNull String newDid,
                           @NonNull String oldIid, @NonNull String newIid, 
                           @NonNull String oldSsid, @NonNull String newSsid);
    
        /**
         * Config拉取数据,和本地数据对比有变化的通知
         * 仅主进程会被调用
         * @param changed 是否和本地缓存有所不同
         * @param config server返回新config内容
         */
        void onRemoteConfigGet(boolean changed, @Nullable JSONObject config);
    
        /**
         * server拉取AbConfig数据,和本地数据对比有变化的通知
         * 仅主进程会被调用
         * @param changed 是否和本地缓存有所不同
         * @param abConfig server返回新abConfig内容
         */
        void onRemoteAbConfigGet(boolean changed, @NonNull JSONObject abConfig);
    
        /**
         * 客户端ab实验曝光vid集合发生变化的通知
         * @param vids 客户端ab实验曝光vid集合
         * @param extVids 外部设置的external vid集合
         */
        void onAbVidsChange(@NonNull String vids, @NonNull String extVids);
    }
    

setGPSLocation

  • 作用:为事件追加 gps 相关自定义属性。

  • 定义:void setGPSLocation(float longitude, float latitude, String geoCoordinateSystem)

  • 参数

    参数名

    类型

    必填

    说明

    longitude

    float

    经度

    latitude

    float

    纬度

    geoCoordinateSystem

    String

    坐标系
    GeoCoordinateSystemConst 为坐标系静态类

    • WGS84 地球坐标系
    • GCJ02 火星坐标系
    • BD09 百度坐标系
    • BDCS 北斗坐标系
  • 示例

    // GeoCoordinateSystemConst 为坐标系静态类
    // WGS84 地球坐标系
    // GCJ02 火星坐标系
    // BD09 百度坐标系
    // BDCS 北斗坐标系
    // 本功能仅支持6.10.1及以上版本
    AppLog.setGPSLocation(18.00f, 18.00f, GeoCoordinateSystemConst.WGS84);
    

InitConfig SDK 配置 API 介绍

setLogEnable

  • 作用: **** 是否开启 SDK 日志,默认关闭。

  • 定义:setLogEnable(boolean enable)

  • 参数:

    参数名

    类型

    必填

    说明

    enable

    boolean

    日志开关

  • 示例:

    // 开启 SDK 日志
    config.setLogEnable(true);  
      
    // 关闭 SDK 日志
    config.setLogEnable(false);  
    

setLogger

  • 作用:接管 SDK 内部日志内容,后续输出由开发者处理,需要配合 setLogEnable 先开启日志。

  • 定义:void setLogger(ILogger logger)

  • 参数

    参数名

    类型

    必填

    说明

    logger

    ILogger

    SDK 内部日志回调

  • 示例

    // 先开启日志
    config.setLogEnable(true); 
    // 接管日志打印
    config.setLogger(new ILogger() {
        @Override
        public void log(String s, Throwable throwable) {
            Log.d("AppLog------->: ", "" + s);
        }
    });
    

setAutoStart

  • 作用:是否自动启动 SDK,默认自动开启,如果涉及到延迟启动,可以先 init 配置 autoStart false,在可以采集敏感信息和请求上报时手动调用 AppLog.start()。

  • 定义: void setAutoStart(boolean autoStart)

  • 参数

    参数名

    类型

    必填

    说明

    autoStart

    boolean

    是否在 init 之后就启动 SDK。

  • 示例

    // SDK 在 AppLog.init 后自动完成初始化,init 时就开始采集敏感信息 + 发送请求
    config.setAutoStart(true);    
    
    // SDK 在 AppLog.init 后不继续初始化,等待调用 AppLog.start 才开始采集敏感信息 + 发送请求
    config.setAutoStart(false); 
    AppLog.init(context, config);
    // 适当时机调用 start 来真正启动 SDK(如同意隐私协议后)
    AppLog.start()   
    

setUriConfig

  • 作用:设置 SDK 请求域名。

  • 定义:void setUriConfig(UriConfig config)

  • 参数:

    参数名

    类型

    必填

    说明

    config

    UriConfig

    请求域名配置

  • 示例:

    String host = "xxxx";
    // createByDomain 的第二个参数无需设置,null 即可
    config.setUriConfig(UriConfig.createByDomain(host, null));    
    

setAbEnable

  • 作用:是否开启 AB 实验功能,默认关闭。

  • 定义:void setAbEnable(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    AB 实验开关

  • 示例

    // 开启 AB 实验
    config.setAbEnable(true);
    
    // 关闭 AB 实验
    config.setAbEnable(false);
    

  • 作用:开启 Tracer 广告监测功能,默认关闭。
  • 定义:void enableDeferredALink()
  • 示例
    // 开启 Tracer 广告监测功能
    config.enableDeferredALink()
    

  • 作用:关闭 Tracer 广告监测功能,默认关闭。
  • 定义:void disableDeferredALink()
  • 示例
    // 关闭 Tracer 广告监测功能
    config.disableDeferredALink()
    

setExposureEnabled

  • 作用:是否元素曝光功能,默认关闭。

  • 定义:void setExposureEnabled(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    元素曝光能力开关

  • 示例

    // 开启元素曝光能力
    config.setExposureEnabled(true);
    
    // 关闭元素曝光能力
    config.setExposureEnabled(false);
    

setAutoTrackEnabled

  • 作用:是否开启全埋点采集,默认开启。

    • 全埋点包含页面进入、页面退出、元素点击三种埋点
    • Android 全埋点需要集成 RangersAppLog-All-xx 版本,并且需要集成 RangersAppLog-All-plugin 插件
    • 页面退出由于默认不采集需要 setAutoTrackEventType 配合
  • 定义:void setAutoTrackEnabled(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    全埋点采集开关

  • 示例

    // 开启全埋点采集
    config.setAutoTrackEnabled(true);
    
    // 关闭全埋点采集
    config.setAutoTrackEnabled(false);
    

setAutoTrackFragmentEnabled

  • 作用:是否开启 Fragment 页面的相关全埋点采集,默认关闭。

  • 定义:void setAutoTrackFragmentEnabled(boolean enabled)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    Fragment 页面全埋点采集开关

  • 示例

    // 开启 Fragment 页面的相关全埋点采集
    config.setAutoTrackFragmentEnabled(true);
    
    // 关闭 Fragment 页面的相关全埋点采集
    config.setAutoTrackFragmentEnabled(false);
    

setAutoTrackEventType

  • 作用:设置全埋点采集类型,默认采集页面进入与元素点击。

  • 定义:void setAutoTrackEventType(int type)

  • 参数

    参数名

    类型

    必填

    说明

    setAutoTrackEventType

    int

    设置全埋点采集类型,调用形式为 AutoTrackEventType.xxx ,取值会被映射为已提前声明好的int值:

    • 配置为:AutoTrackEventType.PAGE,表明采集全埋点页面事件,默认开启。
    • 配置为:AutoTrackEventType.CLICK ,表明采集全埋点点击事件,默认开启。
    • 配置为:AutoTrackEventType.PAGE_LEAVE ,表明采集全埋点页面离开事件,默认关闭。
    • 配置为:AutoTrackEventType.ALL,表明采集全埋点所有事件。
  • 示例

    // 默认配置
    config.setAutoTrackEventType(AutoTrackEventType.PAGE | AutoTrackEventType.CLICK);
    
    // 全部采集,页面进入 + 页面退出 + 元素点击
    AppLog.setEncryptAndCompress(AutoTrackEventType.ALL);
    

setMacEnable

  • 作用:是否开启 mac 采集,默认采集。

  • 定义:void setMacEnable(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    mac 采集开关

  • 示例

    // 开启 mac 采集
    config.setMacEnable(true);
    
    // 关闭 mac 采集
    config.setMacEnable(false);
    

setImeiEnable

  • 作用:是否开启 imei 采集,默认采集。

  • 定义:void setImeiEnable(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    imei 采集开关

  • 示例

    // 开启 imei 采集
    config.setImeiEnable(true);
    
    // 关闭 imei 采集
    config.setImeiEnable(false);
    

setOaidEnabled

注意

OAID 是重要设备追踪信息,若关闭 OAID 会影响 Tracer 归因,使用 Tracer 请谨慎考虑

  • 作用:是否开启 oaid 采集,默认采集。

  • 定义:void setOaidEnabled(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    oaid 采集开关

  • 示例

    // 开启 oaid 采集
    config.setOaidEnabled(true);
    
    // 关闭 oaid 采集
    config.setOaidEnabled(false);
    

setAndroidIdEnabled

注意

关闭 Android ID 会影响 device_id 生成逻辑,导致 device_id 卸载重装不一致,请谨慎关闭。
后续文档中会简称 device_id 为 did。

  • 作用:是否开启 AndroidId 采集,默认采集。

  • 定义:void setAndroidIdEnabled(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    AndroidId 采集开关

  • 示例

    // 开启 AndroidId 采集
    config.setAndroidIdEnabled(true);
    
    // 关闭 AndroidId 采集
    config.setAndroidIdEnabled(false);
    

setIccIdEnabled

  • 作用:是否开启 iccid 采集,默认采集。

  • 定义:void setIccIdEnabled(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    iccid 采集开关

  • 示例

    // 开启 iccid 采集
    config.setIccIdEnabled(true);
    
    // 关闭 iccid 采集
    config.setIccIdEnabled(false);
    

setSerialNumberEnable

  • 作用:是否开启 mac 采集,默认采集。

  • 定义:void setSerialNumberEnable(boolean enable)

  • 参数

    参数名

    类型

    必填

    说明

    enable

    boolean

    SN 序列号采集开关

  • 示例

    // 开启 SN 序列号采集
    config.setSerialNumberEnable(true);
    
    // 关闭 SN 序列号采集
    config.setSerialNumberEnable(false);
    

setGaidEnabled

  • 作用:是否开启 mac 采集,默认不采集。

    • cn 版本默认不采集,global 默认采集
    • 采集之前还会看是否有 com.google.android.gms:play-services 依赖,没有的话也不采集
  • 定义:void setGaidEnabled(boolean enabled)

  • 参数

    参数名

    类型

    必填

    说明

    enabled

    boolean

    gaid 采集开关

  • 示例

    // 开启 gaid 采集
    config.setGaidEnabled(true);
    
    // 关闭 gaid 采集
    config.setGaidEnabled(false);
    

setOperatorInfoEnabled

  • 作用:是否开启运营商信息采集,默认采集。

  • 定义:void setOperatorInfoEnabled(boolean enabled)

  • 参数

    参数名

    类型

    必填

    说明

    enabled

    boolean

    运营商信息采集开关

  • 示例

    // 开启运营商信息采集
    config.setOperatorInfoEnabled(true);
    
    // 关闭运营商信息采集
    config.setOperatorInfoEnabled(false);
    

setCPUAbiEnabled

  • 作用:是否开启 cpu 架构采集,默认采集。

  • 定义:void setCPUAbiEnabled(boolean enable)

  • 参数:

    参数名

    类型

    必填

    说明

    enable

    boolean

    cpu 架构采集开关

  • 示例:

    // 开启 cpu 架构
    config.setCPUAbiEnabled(true);
    
    // 关闭 cpu 架构
    config.setCPUAbiEnabled(false);
    

setDisplayDensityAndDpiEnabled

  • 作用:是否开启屏幕信息采集,默认采集。

  • 定义:void setDisplayDensityAndDpiEnabled(boolean enable)

  • 参数:

    参数名

    类型

    必填

    说明

    enable

    boolean

    屏幕信息采集开关

  • 示例:

    // 开启屏幕信息采集
    config.setDisplayDensityAndDpiEnabled(true);
    
    // 关闭屏幕信息采集
    config.setDisplayDensityAndDpiEnabled(false);
    

setScreenOrientationEnabled

  • 作用:是否开启屏幕方向采集,默认采集。

  • 定义:void setEncryptAndCompress(boolean enable)

  • 参数:

    参数名

    类型

    必填

    说明

    enable

    boolean

    屏幕方向采集

  • 示例:

    // 开启屏幕方向采集
    config.setScreenOrientationEnabled(true);
    
    // 关闭屏幕方向采集
    config.setScreenOrientationEnabled(false);
    

setTrackCrashType

  • 作用:崩溃事件采集配置,默认不采集。

  • 定义:void setTrackCrashType(int options)

  • 参数:

    参数名

    类型

    必填

    说明

    options

    int

    崩溃事件采集配置

  • 示例:

    // 开启 Java 崩溃采集
    config.setTrackCrashType(AppCrashType.JAVA);
    
    // 关闭 Java 崩溃采集
    config.setTrackCrashType(0);
    

setEncryptor

  • 作用:设置自定义加密相关逻辑。

    • 私有化 V4.4.0 版本支持了国密 SM2 算法的请求加密
  • 定义:

    • void setEncryptor(IEncryptor encryptor)
    • void setEncryptor(IEncryptor encryptor, String encryptorType)
  • 参数:

    参数名

    类型

    必填

    说明

    encryptor

    IEncryptor

    请求是否压缩加密,默认开启

    encryptorType

    String

  • 示例:

    // sm2 加密
    Sm2Helper sm2Helper = new Sm2Helper(yourPublicKey);
    config.setEncryptor(new IEncryptor() {
        @Override
        public byte[] encrypt(byte[] data, int size) {
            // 将原数据转换为加密数据
            return sm2Helper.encrypt(data, size);
        }
        // 加密类型会放到 Content-Type 中,需要与私有化部署配合协商一致
    }, sm2Helper.encryptorType());
    

setPicker

  • 作用:设置圈选器,使用圈选时需要。

  • 定义:void setPicker(IPicker picker)

  • 参数:

    参数名

    类型

    必填

    说明

    picker

    IPicker

    圈选器配置

  • 示例:

    // 设置圈选器
    config.setPicker(new Picker(this, config));
    

setH5BridgeEnable

  • 作用:是否开启 h5 打通,默认不开启。
    注意:

    • h5 打通仅支持原生 WebView 与腾讯 X5
    • h5 打通指的是在端上集成了 h5 并且 h5 里面集成了 Finder Web SDK,希望在 App 内 Web SDK 内部也是用 App 端上口径通过端上进行
    • 打通前:Web SDK / Android SDK 各自产生事件各自上报
    • 打通后:Web SDK 产生的事件 / 变更新的用户同步到端上,最后走 App 端上报
  • 定义:void setH5BridgeEnable(boolean enable)

  • 参数:

    参数名

    类型

    必填

    说明

    enable

    boolean

    h5 打通采集开关

  • 示例:

    // 开启 h5 打通
    config.setH5BridgeEnable(true);
    
    // 关闭 h5 打通
    config.setH5BridgeEnable(false);
    

setH5BridgeAllowlist

  • 作用:设置 H5 打通的白名单列表,setH5BridgeAllowlist / setH5BridgeAllowAll 二选一设置即可,默认空。

  • 定义:void setH5BridgeAllowlist(List h5BridgeAllowlist)

  • 参数:

    参数名

    类型

    必填

    说明

    h5BridgeAllowlist

    List

    允许打通的 h5 白名单列表

  • 示例:

    // 配置允许打通的白名单
    config.setH5BridgeAllowlist(Arrays.asList("xxxx"));
    

setH5BridgeAllowAll

  • 作用:H5 打通时不做域名校验,setH5BridgeAllowlist / setH5BridgeAllowAll 二选一设置即可,默认关闭。

    • 如果 setH5BridgeAllowAll 关闭,会再去判断 setH5BridgeAllowlist 里是否有配置当前 h5 域名
    • 判断当前 h5 是否允许打通,先判断 setH5BridgeAllowAll,如果为 true,直接尝试打通,如果为 false 判断 setH5BridgeAllowlist 里面是否配置了当前 h5 为白名单
  • 定义:void setH5BridgeAllowAll(boolean enable)

  • 参数:

    参数名

    类型

    必填

    说明

    enable

    boolean

    判断是否允许不做校验

  • 示例:

    // 允许所有 h5 的域名都可以打通
    config.setH5BridgeAllowAll(true);
    
    // 关闭允许全部,是否打通需要做进一步校验
    config.setH5BridgeAllowAll(false);
    

setH5CollectEnable

  • 作用:是否采集 H5 的全埋点,默认关闭。

    注意

    • 可以独立使用该功能,无需集成 Web/JS SDK。
    • 该功能 6.14.4 版本后提供,且目前的 H5 全埋点仅支持进入页面事件与点击事件。
    • 该功能仅支持原生 WebView 与腾讯 X5 。
    • 老版本 Web SDK 在打通时无法采集 H5 的全埋点,需要在初始化时配套设置。
  • 定义:void setH5CollectEnable(boolean enable)

  • 参数:

    参数名

    类型

    必填

    说明

    enable

    boolean

    H5 全埋点采集开关

  • 示例:

    // 开启 H5 全埋点采集
    config.setH5CollectEnable(true);
    
    // 关闭 H5 全埋点采集
    config.setH5CollectEnable(false);
    

setCustomOaidCallback

  • 作用:设置自定义注入 Oaid,默认无实现,由 SDK 内部采集。

    • 如果您对 Oaid 采集率要求很高,并且有自己的 Oaid 采集方式您可以通过注入的方式使用自己的 Oaid
  • 定义:void setCustomOaidCallback(DynamicValueCallback callcack)

  • 参数:

    参数名

    类型

    必填

    说明

    callcack

    boolean

    oaid 回调

  • 示例:

    // 6.16.11 版本新增
    InitConfig config = new InitConfig("yourAPPID", "yourCHANNEL");
    // 重点:确保 start 才开始用用户信息采集
    config.setAutoStart(false);
    // 重点:设置自定义 Oaid 自定义设置回调
    config.setCustomOaidCallback(new DynamicValueCallback<String>() {
        @Override
        public String get() {
            // 自定义获取逻辑,如果未设置回调或回调返回 "" / null 走内置 Oaid 采集逻辑
            return getCustomOaid();
        }
    });
    // 省略其他 SDK 配置
    // 初始化一次即可
    // Applition 中初始化建议使用该方法
    AppLog.init(this, config);
    // Activity 中初始化建议使用该方法
    AppLog.init(this, config, activity);
    
    // 重点:由于设置了 setAutoStart false,需要手动调用 start 触发 SDK,请在拿到 oaid 后调用
    // start 开始实际采集用户信息+上报:
    AppLog.start();
    

AB实验功能及 API 介绍

SDK 提供 AB 实验能力,并提供了一系列的方法:getAbConfig、getAbSdkVersion、getAllAbTestConfigs、setExternalAbVersion、pullAbTestConfigs

开启 AB 实验

使用功能,需要在 SDK 初始化设置时开启相应参数:

// 省略其他配置
config.setAbEnable(true);
AppLog.init(context, config);

AB 实验方法

getAbConfig

  • 作用:获取 AB 实验配置中的实验对应的配置项值,同时 SDK 会收集对应的 vid(业务一般不用直接关心该 vid)。

  • 定义: T getAbConfig(String key, T defaultValue)

  • 参数:

    参数名

    类型

    必填

    说明

    key

    String

    实验配置中的 key

    defaultValue

    T 泛型 根据传入类型推断返回值类型

    兜底值,当实验配置中没有相应的 key 的配置项,该方法会返回这个兜底值

  • 返回值:

    类型

    说明

    T

    返回实验 key 对应的实验结果,如果没有对应实验,返回传入的 defaultValue 作为兜底

  • 示例:

    // 通过 ab_key 对应的实验,并且认为他返回的是 String 类型,如果没有对应实验返回 default_value
    String result = AppLog.getAbConfig("ab_key", "default_value");
    

说明

提示:业务调用 getAbConfig 方法,SDK 发现实验配置中有对应的 key 时,会上报一个预置事件 abtest_exposure。

getAllAbTestConfigs

  • 作用:获取 AB 实验所有配置信息。

  • 定义:JSONObject getAllAbTestConfigs()

  • 返回值:

    类型

    说明

    JSONObject

    返回所有所有实验结果,如果没有拉取到实验返回空 JSONObject

  • 示例:

    // 通过 ab_key 对应的实验,并且认为他返回的是 String 类型,如果没有对应实验返回 default_value
    JSONObject abConfigs = AppLog.getAllAbTestConfigs();
    

getAbSdkVersion

  • 作用:获取已曝光的实验,返回的结果是所有曝光实验的 vid,使用逗号连接起来,示例:123,234,678

  • 定义:String getAbSdkVersion()

  • 返回值:

    类型

    说明

    String

    所有曝光实验的 vid,使用逗号连接起来,示例:123,234,678

  • 示例:

    // vids 值类似 123,234,678
    String vids = AppLog.getAbSdkVersion();
    

setExternalAbVersion

  • 作用:手动设置额外的 AB 实验配置。

  • 定义:void setExternalAbVersion(@NonNull String version)

  • 参数:

    参数名

    类型

    必填

    说明

    version

    String

    version 的格式要求:使用逗号将 version 值连接起来,大概这样 '123,234,678'
    通过此方式设置的额外的实验配置 vids,会合并到通过 getAbConfig 处理获得到的 vids 中
    多次调用时,会合并,通过 Set 存储会去重

  • 示例:

    // 额外设置 vid
    AppLog.setExternalAbVersion("123")
    

pullAbTestConfigs

  • 作用:手动触发一次 AB 实验结果的请求,用于拉取最新实验。

  • 定义:

    • void pullAbTestConfigs();
    • void pullAbTestConfigs(int timeout, IPullAbTestConfigCallback callback);
  • 参数:

    参数名

    类型

    必填

    说明

    timeout

    int

    超时时间

    callback

    IPullAbTestConfigCallback

    拉取结果回调,包含拉取成功或者拉取失败
    void onRemoteConfig(@Nullable JSONObject config);

    • 拉取到实验结果
      void onTimeoutError();
    • 拉取实验超时
      void onThrottle(long remainingTime);
    • 拉取间隔过于频繁,触发限制
  • 示例:

    // 无回调
    AppLog.pullAbTestConfigs();
    
    // 有回调
    AppLog.pullAbTestConfigs(
            5000,
            new IPullAbTestConfigCallback() {
                @Override
                public void onRemoteConfig(JSONObject config) {
                    Log.i("pull", config == null ? "" : config.toString());
                }
    
                @Override
                public void onTimeoutError() {
                    Log.e("pull", "errr");
                }
    
                @Override
                public void onThrottle(long remainingTime) {
                    Log.e("pull", "errr " + remainingTime);
                }
    });
    

用户属性模块及 API 介绍

提供设置用户属性能力,并提供了一系列的方法:profileSet、profileSetOnce、profileUnset、profileIncrement、profileAppend。

用户属性方法

profileSet

  • 作用:将属性字段用新的值覆盖,一次可以设置一个或多个属性,支持数组类型属性值。

  • 定义:void profileSet(JSONObject jsonObject)

  • 参数:

    参数名

    类型

    必填

    说明

    jsonObject

    JSONObject

  • 示例:

    // 示例:设置用户属性,属性名为 key,属性值为 value
    JSONObject paramsObj = new JSONObject();
    try {
        paramsObj.put("key", "value");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    AppLog.profileSet(paramsObj);
    

profileSetOnce

  • 作用:按属性字段,只设置一次,如果已经有值,则不再更新。

  • 定义:void profileSetOnce(JSONObject jsonObject)

  • 参数:

    参数名

    类型

    必填

    说明

    jsonObject

    JSONObject

  • 示例:

    // 示例:设置用户属性,属性名为 key_once,属性值为 value_once
    JSONObject paramsObj = new JSONObject();
    try {
        paramsObj.put("key_once", "value_once");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    AppLog.profileSetOnce(paramsObj);
    

profileUnset

  • 作用:删除某个属性的值。

  • 定义:void profileUnset(String key)

  • 参数:

    参数名

    类型

    必填

    说明

    key

    String

  • 示例:

    // 示例:删除用户属性,属性名为 key
    AppLog.profileUnset("key");
    

profileIncrement

  • 作用:将数值型属性增加指定的值,可以为负数。

  • 定义:void profileIncrement(JSONObject jsonObject)

  • 参数:

    参数名

    类型

    必填

    说明

    jsonObject

    JSONObject

  • 示例:

    // 示例:设置用户属性,属性名为 key,属性值为 1
    JSONObject paramsObj = new JSONObject();
    try {
        paramsObj.put("key", 1);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    AppLog.profileIncrement(paramsObj);
    

profileAppend

  • 作用:当属性不存在时候,创建属性,并set,如果是数组类型属性的,会把值追加进数组。

  • 定义:void profileAppend(JSONObject jsonObject)

  • 参数:

    参数名

    类型

    必填

    说明

    jsonObject

    JSONObject

  • 示例:

    // 示例:设置用户属性,属性名为 key,原本已有属性值,现添加属性值为 value_append
    JSONObject paramsObj = new JSONObject();
    try {
        paramsObj.put("key", "value_append");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    AppLog.profileAppend(paramsObj);
    

元素曝光功能及 API 介绍

开启元素曝光

本功能在 6.10.1+ 后开始支持,使用曝光建议及早初始化 SDK,比如在 Application 中先初始化。

  1. 在 SDK 初始化时,在 InitConfig 中配置。
    // 省略其他配置
    config.setExposureEnabled(true);
    AppLog.init(context, config);
    

设置全局曝光配置

全局曝光配置介绍

配置项

类型

默认值

说明

支持版本

有效曝光面积

float

1f

有效曝光面积配置,配置为百分比,1f 表示组件 100% 可见时触发曝光。

6.10.1+

可视化调试开关

boolean

false

可视化调试开关,会给组件加个边框,红色表示曝光,黄色表示未曝光。

6.10.1+

有效曝光时间

long

0

有效停留时长,单位为 ms,比如可以设置组件停留超过 3000ms 才曝光。

6.16.2+

曝光事件回调

(ViewExposureParam) -> Boolean

{ true }

组件曝光后的回调,支持额外添加新的属性,或者针对特定曝光事件做过滤,返回 true 表示事件保留,返回 false 表示事件丢弃。

6.16.2+

6.16.2 及以上

// 6.16.2 后:曝光支持按面积+时间检测,并提供了曝光回调进行事件处理
// Optional, 曝光配置,有效曝光面积、可视化调试开关、有效曝光时间和曝光事件回调
// 有效曝光面积: 有效曝光的 View 显示面积的比例,默认是 0,取值 0-1
// 可视化调试开关: 默认 false,线上不要开启,开启后曝光的 View 会增加 background 红色边框,用于调试
// 有效曝光时间: 有效曝光的 View 时间,默认是 0,单位 ms
// 曝光事件回调: 触发曝光事件时回调,会携带当前曝光事件相关属性,可以进行自定义追加以及支持过滤
ViewExposureConfig config = new ViewExposureConfig(0.5F, false, 200, viewExposureParam -> {
      try {
            // 在回调中添加自定义属性
            viewExposureParam.getExposureParam().put("key", "value");
            // 打印曝光类型
            Log.d("Exposure", "ExposureType: " + viewExposureParam.getExposureParam().get("$exposure_type"));
      } catch (JSONException e) {
            // 在发生异常时过滤当前曝光事件
            return false;
      }
      // true 保留曝光事件
    return true;
});

6.16.2 以下

// 6.16.2 前:曝光仅支持按面积检测是否曝光
// Optional, 曝光配置,有效曝光面积和可视化调试开关
// 有效曝光面积: 有效曝光的 View 显示面积的比例,默认是 0,取值 0-1
// 可视化调试开关: 默认 false,线上不要开启,开启后曝光的 View 会增加 background 红色边框,用于调试
ViewExposureConfig config = new ViewExposureConfig(0.5F, false);

全局曝光配置更新

6.15.2 及以上

// 6.15.2 后调整至 ViewExposureManager 中,用以代替之前 InitConfig.setViewExposureConfig 的方法
// 请在 SDK init 之后调用
AppLog.getViewExposureManager().updateViewExposureConfig(config);

6.15.2 以下

// 6.15.2 前通过 InitConfig 设置全局曝光配置
config.setViewExposureConfig(config);

曝光检测频率配置

在部分特殊场景下可能会由于页面不断重绘导致一直无法触发曝光,目前新增了两种曝光检测策略以供选择,可动态调整:

// 6.16.2 新增
// 默认检测策略 如果有多次频繁触发 会在最后一次触发的 100ms 后触发曝光检测
AppLog.getViewExposureManager().updateExposureCheckStrategy(ExposureCheckType.DEBOUNCE);

// 新增检测策略 如果有多次频繁触发 会在每隔 500ms 触发一次曝光检测
AppLog.getViewExposureManager().updateExposureCheckStrategy(ExposureCheckType.THROTTLE);

组件曝光使用

开启配置后,在需要曝光的 View 上增加曝光监听,示例代码:
6.16.2 及以上

View banner = findViewById(R.id.banner);
// Optional,自定义曝光事件属性
JSONObject properties = new JSONObject();
properties.put("custom_key", "custom_value");
// Optional,默认为 "$bav2b_exposure"
String eventName = "custom_exposure";

// 6.16.2 后:曝光支持按面积+时间检测,并提供了曝光回调进行事件处理
// Optional, 曝光配置,有效曝光面积、可视化调试开关、有效曝光时间和曝光事件回调
// 有效曝光面积: 有效曝光的 View 显示面积的比例,默认是 0,取值 0-1
// 可视化调试开关: 默认 false,线上不要开启,开启后曝光的 View 会增加 background 红色边框,用于调试
// 有效曝光时间: 有效曝光的 View 时间,默认是 0,单位 ms
// 曝光事件回调: 触发曝光事件时回调,会携带当前曝光事件相关属性,可以进行自定义追加以及支持过滤
ViewExposureConfig config = new ViewExposureConfig(0.5F, false, 200, viewExposureParam -> {
      try {
            // 在回调中添加自定义属性
            viewExposureParam.getExposureParam().put("key", "value");
            // 打印曝光类型
            Log.d("Exposure", "ExposureType: " + viewExposureParam.getExposureParam().get("$exposure_type"));
      } catch (JSONException e) {
            // 在发生异常时过滤当前曝光事件
            return false;
      }
      // true 保留曝光事件
    return true;
});
ViewExposureData<ViewExposureConfig> callbackData = new ViewExposureData<>(eventName, null, config);

// 开始监听 View 曝光事件,viewExposureManager字段通过AppLog.getViewExposureManager()来定义,详情可参见 曝光检测频率配置  章节
viewExposureManager.observeViewExposure(banner, data);
// 取消监听
viewExposureManager.disposeViewExposure(banner);

6.16.2 以下

View banner = findViewById(R.id.banner);
// Optional,自定义曝光事件属性
JSONObject properties = new JSONObject();
properties.put("custom_key", "custom_value");
// Optional,默认为 "$bav2b_exposure"
String eventName = "custom_exposure";

// 6.16.2 前:曝光仅支持按面积检测是否曝光
// Optional, 曝光配置,有效曝光面积和可视化调试开关
// 有效曝光面积: 有效曝光的 View 显示面积的比例,默认是 0,取值 0-1
// 可视化调试开关: 默认 false,线上不要开启,开启后曝光的 View 会增加 background 红色边框,用于调试
ViewExposureConfig config = new ViewExposureConfig(0.5F, false);
ViewExposureData data = new ViewExposureData(eventName, properties, config);

// 开始监听 View 曝光事件,viewExposureManager字段通过AppLog.getViewExposureManager()来定义,详情可参见 曝光检测频率配置  章节
viewExposureManager.observeViewExposure(banner, data);
// 取消监听
viewExposureManager.disposeViewExposure(banner);
最近更新时间:2025.12.04 14:01:38
这个页面对您有帮助吗?
有用
有用
无用
无用