You need to enable JavaScript to run this app.
导航

SDK通用FAQ

最近更新时间2023.07.20 15:04:46

首次发布时间2023.07.20 12:07:33

  1. 埋点和预置埋点事件的区别?

    • 预置事件(主动上报)用于预置分析模型,比如app_launch,any_event,app_terminate,abtest_exposure;

    • 全埋点事件(通过全埋点开关控制,打开开关主动上传,不打开开关不上传)比如bav2b_page 全埋点页面访问,bav2b_click全埋点元素点击;

    • 自定义事件(根据业务需要设计埋点方案然后研发进行代码埋点) 。


  1. 如果SDK不初始化,会不会发网络请求?

    不初始化SDK时不会发网络请求。


  1. app_launch和app_terminate事件的采集时机

    app_launch:当用户启动APP或者进入前台的时候,SDK内部会产生一个Launch事件。
      app_terminate:iOS是在用户切后台后(包括锁屏),立刻算作Session结束,会产生一个Terminate事件;而Android是当用户在后台停留30s后(包括锁屏),然后在下一次打开监听到超过30s才会生成terminate。


  1. SDK初始化之后,会取哪些敏感信息,比如用户信息这些?

    SDK有cn(国内)和global (海外)两种版本均满足国内海外的合规要求,如果想了解具体用户信息,请参考https://www.volcengine.com/docs/6285/72216


  1. 如果私有化部署之后,SDK还会向字节服务器发送什么信息吗?

    私有部署,SDK不会向字节服务器发送信息。


  1. 客户端SDK的分流缓存策略

    客户端: 客户端SDK初始化时会请求分流服务(http服务),之后每10min(abtest_fetch_interval)请求一次分流服务,获取分流结果(即用户命中的实验及分流的版本),并缓存在SDK本地。客户调用SDK中的API获取分流结果时,本质上是从缓存中直接读取结果,没有发生http请求。
      服务端: 服务端SDK,会在初始化时请求meta服务(基于mysql的http服务),之后每隔一段时间请求一次meta服务(间隔时间可以通过SDK的API进行设置,默认是60秒更新)获取实验的元信息(非分流结果),并缓存。客户调用SDK中的API获取分流结果时,本质上是SDK使用实验元信息在本地进行分流,并没有发生http请求


  1. 如何获取客户端SDK离线包?

    可以参考官方帮助文档的手动集成处的SDK链接。


  1. 实验曝光事件 abtest_exposure 可以关闭吗?

    事件采集可以关闭,但是关闭后AB系统就不会有相应的数据,所以实验和Feature在运行状态,并且想看实验报告数据,不建议关闭 abtest_exposure 事件采集。


  1. 客户端分流结果刷新时间间隔是多久?可以自定义时间间隔拉取分流结果吗?

    每隔10分钟(600s)会重新请求一次分流结果,但是可以通过客户端提供的 pullAbTestConfigs 方法拉取最新的分流结果。


  1. 上报事件后多久可以在系统看到数据?

    上报事件后,一般情况下5-10分钟就可以在系统中看到对应的数据,因为数据需要经过采集,处理,构建,入库等相关步骤。


  1. 客户端SDK数据上报策略

    客户端SDK是批量上报,具体策略如下:

    • 每隔60s上报一次;

    • 切换用户,立即上报一次;

    • profile请求,立即上报一次;

    • 调用 flush 会触发立即调用;


  1. 客户端SDK分流时机

    1. 初始化就会执行分流,一般冷启动才会初始化;

    2. 每隔10分钟会重新请求一次分流服务;

    3. 分流成功拿到实验结果,如果本地没有,就存在本地,如果本地已经有了就覆盖之前存的,获取实验参数(调getabconfig),命中实验就会获取相应的版本值,没有就是默认值。


  1. 客户端SDK如何实时获取分流结果?

    客户端SDK提供实时获取分流结果的api:pullAbTestConfigs(),该方法也可以在子线程中执行。


  1. Finder和A/B的SDK是不是同一套?

    客户端SDK:Finder和A/B共用一套SDK,Finder使用SDK的上报能力,A/B使用SDK的分流和上报能力。
      服务端SDK:Finder和A/B是两套SDK,Finder服务端SDK具有自定义事件上报能力,A/B服务端SDK具有分流能力和预置曝光事件上报能力。


  1. 对于购买Finder后期增购A/B产品的客户,A/B的SDK是否需要重新集成or需要进行配置的

    客户端SDK:Finder和A/B是同一套客户端SDK,只需要打开下A/B开关就OK,并且需要在代码中放获取实验参数相关代码,对于APP任何代码上的变动都需要重新发版。
      服务端SDK:Finder和A/B是不同的服务端SDK,需要单独参考帮助文档集成。


  1. A/B系统一个项目对应的app_id是固定的吗?多端是否使用同一个app_id

    appid 是应用的唯一标识,多端是否选择同一个appid取决于是否需要做数据打通,因为不同应用间数据是隔离的。如果是同一个应用且希望在一个应用内分析这些数据就上报在一个应用下,如果希望数据隔离,请创建不同的实验,并指定对应的appid进行事件上报。


  1. 客户端SDK是否支持配置不上报数据?

    暂不支持。


  1. 可以支持watch os埋点吗?

    不支持。


  1. 客户端SDK是否支持横屏/竖屏采集,如何实现的?

    Android和iOS支持,小程序和Web/JS暂时不支持。初始化时设置开启屏幕方向采集,开启后所有上报事件的 params 中会增加参数:

    • key: $screen_orientation

    • value: "portrait" | "landscape"

    iOS

    config.screenOrientationEnabled = YES;
    

    Android

    config.setSecreenOrientationEnabled(true);
    

  1. 移动端SDK什么情况下会发起设备注册请求?

    1. 切换uuid会发起设备注册

    2. 定期刷新,刷新间隔6个小时

    3. 本地没有 did 的时候


  1. APP内嵌H5怎么实现数据打通?

    具体请参考官网文档中关于“打通内嵌 H5 页”部分。


  1. APP内嵌H5如何做分流,打通与不打通有什么方案?

    如果要完整看用户的链路行为,需要做APP内嵌H5的打通,但是打通之后没办法在APP内嵌H5侧做A/B实验,如果要做A/B实验,需要在APP侧做实验,因此每一次实验都需要客户端发版支持;
      如果APP和H5比较独立,也不关注用户的完整链路行为,那么就不需要做数据打通,H5集成H5 SDK,APP集成APP SDK,系统中也是分别查看APP和H5的数据,H5做实验直接按照文档集成即可;
      如果APP和H5不做数据打通,但是想关联,目前也就只能做到实名用户关联,需要APP和H5都设置uuid,并且两个uuid保持一致,匿名用户等都没办法关联。H5做实验直接按照文档集成,但是对于H5做的实验,也没办法把APP的埋点行为当成实验指标。


  1. APP能否支持打通阿里mpass h5?

    目前SDK仅支持原生WebView与腾讯 X5打通,暂不支持其他框架。


  1. 移动端SDK的ssid存到哪里?是SDCard或者Keychain里吗?

    不是,Android的ssid会存到sharedpreference,iOS的ssid会存到userdefaults,卸载之后ssid就没了。


  1. Flutter SDK哪个版本支持全埋点功能?

    1.4.0版本开始支持全埋点功能,引入请参考文档:https://www.volcengine.com/docs/6285/357814


  1. React Native SDK如何接入全埋点功能?

    详情参考此功能:https://www.volcengine.com/docs/6285/148442


  1. React Native 版本的全埋点SDK,点击日志抓不到page_path?

    APP端page_path 是点击的元素所在页面,在 autoTrack.config 中配置的,这个不配置的话就没有值。参考文档:https://www.volcengine.com/docs/6285/148442#_3-2-%E9%85%8D%E7%BD%AE-rn-%E9%A1%B5%E9%9D%A2