本文为您介绍 Android SDK 为您提供的主要 API,您可以结合埋点规划调用对应 API 进行埋点。
说明
埋点功能对外的全局接口,支持静态调用。
作用:是对SDK实例进行初始化配置,init 之后产生的事件就都会存储到本地数据库里确保事件不会丢失。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
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)
// 忽略其他配置 config.setAutoStart(false); // 提前 init 确保事件可以本地落库 AppLog.init(context, config); // 用户同意隐私协议后触发 start,开始采集用户信息与上报事件 AppLog.start();
作用:上报自定义事件,Android 支持 init 前 / init 后调用。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
event | String | 是 | 事件名 |
params | JSONObject | 否 | 事件属性,建议自定义属性不超过 50kb,避免影响整体数据上报,超过 50kb 数据会丢弃所有自定义属性调整为报错信息 |
示例:
// 示例:上报事件 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);
作用:设置 user_unique_id,可以调用多次,后面设置会覆盖之前相同设置项。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
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);
作用:设置事件公共属性,可以调用多次,后面设置会覆盖之前相同设置项。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
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");
作用:移除事件公共属性。
定义:void removeHeaderInfo(String key)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | String | 是 | 用于单个设置公共属性,key 为公共属性名 |
示例:
// 示例:移除属性名为 key_public 的公共属性 AppLog.removeHeaderInfo("key_public"); // 通过传入 null 移除所有设置过的公共属性 // 相当于 set 时设置了 null 就会清空所有公共属性 AppLog.setHeaderInfo(null);
作用:设置请求是否压缩加密,默认开启。
定义:void setEncryptAndCompress(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | 请求是否压缩加密,默认开启 |
示例:
// 开启请求压缩加密 AppLog.setEncryptAndCompress(true); // 关闭请求压缩加密 AppLog.setEncryptAndCompress(false);
类型 | 说明 |
|---|---|
String | 当前设备 device_id,由设备服务下发 |
String did = AppLog.getDid();
作用:获取当前用户对应的 SSID。
定义:String getSsid()
参数:
类型 | 说明 |
|---|---|
String | 当前设备 SSID,由设备服务下发 |
示例:
String ssid = AppLog.getSsid();
作用:添加 / 移除各类数据回调监听,配套使用。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
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); }
作用:为事件追加 gps 相关自定义属性。
定义:void setGPSLocation(float longitude, float latitude, String geoCoordinateSystem)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
longitude | float | 是 | 经度 |
latitude | float | 是 | 纬度 |
geoCoordinateSystem | String | 是 | 坐标系
|
示例:
// GeoCoordinateSystemConst 为坐标系静态类 // WGS84 地球坐标系 // GCJ02 火星坐标系 // BD09 百度坐标系 // BDCS 北斗坐标系 // 本功能仅支持6.10.1及以上版本 AppLog.setGPSLocation(18.00f, 18.00f, GeoCoordinateSystemConst.WGS84);
作用: **** 是否开启 SDK 日志,默认关闭。
定义:setLogEnable(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | 日志开关 |
示例:
// 开启 SDK 日志 config.setLogEnable(true); // 关闭 SDK 日志 config.setLogEnable(false);
作用:接管 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); } });
作用:是否自动启动 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()
作用:设置 SDK 请求域名。
定义:void setUriConfig(UriConfig config)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
config | UriConfig | 是 | 请求域名配置 |
示例:
String host = "xxxx"; // createByDomain 的第二个参数无需设置,null 即可 config.setUriConfig(UriConfig.createByDomain(host, null));
作用:是否开启 AB 实验功能,默认关闭。
定义:void setAbEnable(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | AB 实验开关 |
示例:
// 开启 AB 实验 config.setAbEnable(true); // 关闭 AB 实验 config.setAbEnable(false);
// 开启 Tracer 广告监测功能 config.enableDeferredALink()
// 关闭 Tracer 广告监测功能 config.disableDeferredALink()
作用:是否元素曝光功能,默认关闭。
定义:void setExposureEnabled(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | 元素曝光能力开关 |
示例:
// 开启元素曝光能力 config.setExposureEnabled(true); // 关闭元素曝光能力 config.setExposureEnabled(false);
作用:是否开启全埋点采集,默认开启。
定义:void setAutoTrackEnabled(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | 全埋点采集开关 |
示例:
// 开启全埋点采集 config.setAutoTrackEnabled(true); // 关闭全埋点采集 config.setAutoTrackEnabled(false);
作用:是否开启 Fragment 页面的相关全埋点采集,默认关闭。
定义:void setAutoTrackFragmentEnabled(boolean enabled)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | Fragment 页面全埋点采集开关 |
示例:
// 开启 Fragment 页面的相关全埋点采集 config.setAutoTrackFragmentEnabled(true); // 关闭 Fragment 页面的相关全埋点采集 config.setAutoTrackFragmentEnabled(false);
作用:设置全埋点采集类型,默认采集页面进入与元素点击。
定义:void setAutoTrackEventType(int type)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
setAutoTrackEventType | int | 是 | 设置全埋点采集类型,调用形式为 AutoTrackEventType.xxx ,取值会被映射为已提前声明好的int值:
|
示例:
// 默认配置 config.setAutoTrackEventType(AutoTrackEventType.PAGE | AutoTrackEventType.CLICK); // 全部采集,页面进入 + 页面退出 + 元素点击 AppLog.setEncryptAndCompress(AutoTrackEventType.ALL);
作用:是否开启 mac 采集,默认采集。
定义:void setMacEnable(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | mac 采集开关 |
示例:
// 开启 mac 采集 config.setMacEnable(true); // 关闭 mac 采集 config.setMacEnable(false);
作用:是否开启 imei 采集,默认采集。
定义:void setImeiEnable(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | imei 采集开关 |
示例:
// 开启 imei 采集 config.setImeiEnable(true); // 关闭 imei 采集 config.setImeiEnable(false);
注意
OAID 是重要设备追踪信息,若关闭 OAID 会影响 Tracer 归因,使用 Tracer 请谨慎考虑
作用:是否开启 oaid 采集,默认采集。
定义:void setOaidEnabled(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | oaid 采集开关 |
示例:
// 开启 oaid 采集 config.setOaidEnabled(true); // 关闭 oaid 采集 config.setOaidEnabled(false);
注意
关闭 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);
作用:是否开启 iccid 采集,默认采集。
定义:void setIccIdEnabled(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | iccid 采集开关 |
示例:
// 开启 iccid 采集 config.setIccIdEnabled(true); // 关闭 iccid 采集 config.setIccIdEnabled(false);
作用:是否开启 mac 采集,默认采集。
定义:void setSerialNumberEnable(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | SN 序列号采集开关 |
示例:
// 开启 SN 序列号采集 config.setSerialNumberEnable(true); // 关闭 SN 序列号采集 config.setSerialNumberEnable(false);
作用:是否开启 mac 采集,默认不采集。
定义:void setGaidEnabled(boolean enabled)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enabled | boolean | 是 | gaid 采集开关 |
示例:
// 开启 gaid 采集 config.setGaidEnabled(true); // 关闭 gaid 采集 config.setGaidEnabled(false);
作用:是否开启运营商信息采集,默认采集。
定义:void setOperatorInfoEnabled(boolean enabled)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enabled | boolean | 是 | 运营商信息采集开关 |
示例:
// 开启运营商信息采集 config.setOperatorInfoEnabled(true); // 关闭运营商信息采集 config.setOperatorInfoEnabled(false);
作用:是否开启 cpu 架构采集,默认采集。
定义:void setCPUAbiEnabled(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | cpu 架构采集开关 |
示例:
// 开启 cpu 架构 config.setCPUAbiEnabled(true); // 关闭 cpu 架构 config.setCPUAbiEnabled(false);
作用:是否开启屏幕信息采集,默认采集。
定义:void setDisplayDensityAndDpiEnabled(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | 屏幕信息采集开关 |
示例:
// 开启屏幕信息采集 config.setDisplayDensityAndDpiEnabled(true); // 关闭屏幕信息采集 config.setDisplayDensityAndDpiEnabled(false);
作用:是否开启屏幕方向采集,默认采集。
定义:void setEncryptAndCompress(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | 屏幕方向采集 |
示例:
// 开启屏幕方向采集 config.setScreenOrientationEnabled(true); // 关闭屏幕方向采集 config.setScreenOrientationEnabled(false);
作用:崩溃事件采集配置,默认不采集。
定义:void setTrackCrashType(int options)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
options | int | 是 | 崩溃事件采集配置 |
示例:
// 开启 Java 崩溃采集 config.setTrackCrashType(AppCrashType.JAVA); // 关闭 Java 崩溃采集 config.setTrackCrashType(0);
作用:设置自定义加密相关逻辑。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
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());
作用:设置圈选器,使用圈选时需要。
定义:void setPicker(IPicker picker)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
picker | IPicker | 是 | 圈选器配置 |
示例:
// 设置圈选器 config.setPicker(new Picker(this, config));
作用:是否开启 h5 打通,默认不开启。
注意:
定义:void setH5BridgeEnable(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | h5 打通采集开关 |
示例:
// 开启 h5 打通 config.setH5BridgeEnable(true); // 关闭 h5 打通 config.setH5BridgeEnable(false);
作用:设置 H5 打通的白名单列表,setH5BridgeAllowlist / setH5BridgeAllowAll 二选一设置即可,默认空。
定义:void setH5BridgeAllowlist(List
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
h5BridgeAllowlist | List | 是 | 允许打通的 h5 白名单列表 |
示例:
// 配置允许打通的白名单 config.setH5BridgeAllowlist(Arrays.asList("xxxx"));
作用:H5 打通时不做域名校验,setH5BridgeAllowlist / setH5BridgeAllowAll 二选一设置即可,默认关闭。
定义:void setH5BridgeAllowAll(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | 判断是否允许不做校验 |
示例:
// 允许所有 h5 的域名都可以打通 config.setH5BridgeAllowAll(true); // 关闭允许全部,是否打通需要做进一步校验 config.setH5BridgeAllowAll(false);
作用:是否采集 H5 的全埋点,默认关闭。
注意
定义:void setH5CollectEnable(boolean enable)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable | boolean | 是 | H5 全埋点采集开关 |
示例:
// 开启 H5 全埋点采集 config.setH5CollectEnable(true); // 关闭 H5 全埋点采集 config.setH5CollectEnable(false);
作用:设置自定义注入 Oaid,默认无实现,由 SDK 内部采集。
定义:void setCustomOaidCallback(DynamicValueCallback
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
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();
SDK 提供 AB 实验能力,并提供了一系列的方法:getAbConfig、getAbSdkVersion、getAllAbTestConfigs、setExternalAbVersion、pullAbTestConfigs
使用功能,需要在 SDK 初始化设置时开启相应参数:
// 省略其他配置 config.setAbEnable(true); AppLog.init(context, config);
作用:获取 AB 实验配置中的实验对应的配置项值,同时 SDK 会收集对应的 vid(业务一般不用直接关心该 vid)。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
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。
作用:获取 AB 实验所有配置信息。
定义:JSONObject getAllAbTestConfigs()
返回值:
类型 | 说明 |
|---|---|
JSONObject | 返回所有所有实验结果,如果没有拉取到实验返回空 JSONObject |
示例:
// 通过 ab_key 对应的实验,并且认为他返回的是 String 类型,如果没有对应实验返回 default_value JSONObject abConfigs = AppLog.getAllAbTestConfigs();
作用:获取已曝光的实验,返回的结果是所有曝光实验的 vid,使用逗号连接起来,示例:123,234,678
定义:String getAbSdkVersion()
返回值:
类型 | 说明 |
|---|---|
String | 所有曝光实验的 vid,使用逗号连接起来,示例:123,234,678 |
示例:
// vids 值类似 123,234,678 String vids = AppLog.getAbSdkVersion();
作用:手动设置额外的 AB 实验配置。
定义:void setExternalAbVersion(@NonNull String version)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
version | String | 是 | version 的格式要求:使用逗号将 version 值连接起来,大概这样 '123,234,678' |
示例:
// 额外设置 vid AppLog.setExternalAbVersion("123")
作用:手动触发一次 AB 实验结果的请求,用于拉取最新实验。
定义:
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
timeout | int | 否 | 超时时间 |
callback | IPullAbTestConfigCallback | 否 | 拉取结果回调,包含拉取成功或者拉取失败
|
示例:
// 无回调 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); } });
提供设置用户属性能力,并提供了一系列的方法:profileSet、profileSetOnce、profileUnset、profileIncrement、profileAppend。
作用:将属性字段用新的值覆盖,一次可以设置一个或多个属性,支持数组类型属性值。
定义: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);
作用:按属性字段,只设置一次,如果已经有值,则不再更新。
定义: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);
作用:删除某个属性的值。
定义:void profileUnset(String key)
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | String | 是 |
示例:
// 示例:删除用户属性,属性名为 key AppLog.profileUnset("key");
作用:将数值型属性增加指定的值,可以为负数。
定义: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);
作用:当属性不存在时候,创建属性,并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);
本功能在 6.10.1+ 后开始支持,使用曝光建议及早初始化 SDK,比如在 Application 中先初始化。
// 省略其他配置 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);