H5和小程序是两端产品,生成的设备标识不同,所以匿名访问ssid是不同的。如果想做用户标识的统一,可以做到打通登录后的行为,即两端上报同样的实名uuid。匿名情况下无法打通两端。
(1)因为页面访问事件没有时长属性,需要用页面活跃、页面关闭事件来看停留时长;enable_stay_duration这个开关是针对页面活跃、页面关闭这2个事件来采集时长。
(2)页面退出:记录用户[进入页面、切换到非活跃状态、回到活跃状态、离开页面]每一个动作的时间戳,在离开页面时上报predefine_page_close埋点,将每一段活跃状态的时长相加作为用户单次使用时长。
请检查一下相关设置,具体说明为:init初始化中设置auto_report:true后,会自动上报预定义事件,如app_launch、app_terminate、predefine_pageview、on_share(转发分享)等事件。
区别说明如下:
duration:是活跃时长,简单的说就是用户在实际使用的时长;
total_duration:是页面打开到关闭的总时长,包含了非活跃状态下的时长(用户切换了页面没有在实际使用的时长)。比如最小化、后台等,切换页面会被理解为“离开页面”这时候会上报一次close事件。
背景:Android 10之后禁用 IMEI、MAC。
移动安全联盟联合国内手机厂商推出了适用于国内的一套广告追踪标识,称为OAID。OAID跨app可打通,但用户可以随时在系统设置中进行重置。OAID具有一定的权威性,可满足用户行为统计的使用场景。
Android SDK在与H5做打通时会拦截LoadUrl方法来识别H5地址,如果用户的Activity中存在LoadUrl方法,可能被SDK拦截导致WebView无法加载内容。
在网络异常或者服务挂了的情况下。
mobile属性值为移动网络连接,取值逻辑是:当sdk无法识别是3G,4G,5G就返回mobile(移动网络连接,3G、4G、5G的统称)。
SDK初始化代码中,设置了 log:true 后,会打印调试日志,如果不需要开启可以设置为false。
predefine_pageview:页面打开,sdk初始化完成的时候发送;
predefine_page_alive :开启停留时长,每隔1分钟发送一次,切换页面发送一次,关闭页面发送一次;
predefine_page_close :开启停留时长,记录用户每次【进入页面,切换状态,离开页面】的时间戳,然后在离开或者关闭页面的时候上报predefine_page_close事件;
predefine_pageview_hide:这个是小程序特有事件,会在每个页面离开时上报这个pv_hide事件。
platform平台类型,不是必填字段,可以自定义值进行上传;
但随便传可能会影响应用概况功能的分析;应用概况中终端platform 字段值为mp是小程序、 web,wap 是网页端、 ios,android是移动端;其他的数据就只能在全部里面去查看;
建议:尽量按照正确的平台类型进行赋值。
app_platform:应用的端
比如客户的应用他有app端,有web端,有小程序端
platform:平台
这个字段是区分不同端的字段,字段值有ios、android、mp(小程序)、web、wap(H5)
整体来说,platform分的更细。
具体说明如下:
字段: mp_platform
字段值:0,1,2这种
类型:字符串
使用:在header中的custom中使用,示例如下:
"header": {
"app_name": "android",
"device_model": "vivo X20A",
"client_ip": "223.91.16.13",
"custom": "{"is_vip":"2","mp_platform":"0"}"
},
0 微信小程序
1 支付宝小程序
2 头条小程序
3 快应用
4 小游戏
5 百度小程序
6 QQ小程序
7 uniapp小程序
Android_id在Android10以上版本都采不到。
预置属性不可以删除,会影响一些基本指标的计算。
埋点中添加不了,只能在数据管理页面上添加。
在Android 6.9.0及以上版本。
bav2b_page事件:上报时机分独立页面和SPA(单页应用),独立页面的话则在页面打开后,SDK初始化完成后上报一次。如果是SPA页面,除了SDK初始化完成后上报一次,在点击切换页面时也会上报一次。主要采集的数据为页面浏览的一些参数,用于分析页面浏览行为。
bav2b_page_statistics事件:上报时机为页面打开后,SDK初始化完成后上报一次(独立页面和SPA都只上报一次),采集的数据主要是页面加载耗时、页面宽高等统计信息,用于分析页面加载统计等信息。
a、在没有使用自定义web_id时,SDK会去数据流接口获取web_id,并缓存到storage,在之后重复使用;
b、如果开启了自定义web_id的话,需要客户自己手动设置web_id(需要数字类型的值),或者通过使用setWebIDviaUnionID方法设置unionid来生成web_id,或者通过使用setWebIDviaOpenID方法设置openid来生成web_id,这种情况下都是由业务自己控制;
另:webID的生成规则和H5是一样的,具体规则如下:
在sdk初始化,即调用init方法时,会向服务器发起webid的请求,请求参数为:app_id,当前URL,URL的referer,当前浏览器的useragent,以及user_unique_id(一般为空值),请求会在服务端生成一个唯一的webid返回,同时会返回ssid。(说明:小程序侧这边的url、referer这些值都是空值)。
Androidsdk6.4.0版本才适配了1.0.26版本,建议客户升级Android sdk版本。
不能,通过sdk暴露的did接口获取到的是bd_did,bd_did是加密的did。如果想要对bd_did进行解密,内部可以使用bddid机器人进行获取,外部不提供解密。bd_did是使用集团id+did通过aes加密。
对于小程序,我们sdk没有主动监测网络,开启enable_storage参数会将事件先存下来,如果上报未成功,在下一次SDK初始化后还有机会补充上报。
注意:小程序中的storage是有大小限制的,超出限制时事件会丢掉
(1)如果这个参数为false,不管什么情况导致上传失败的数据就会丢掉
(2)如果这个参数为true,所有的事件都会去存到storage里面,然后进行上报,上报成功就删除已上传的数据,不成功就一直在storage里存着,当SDK重新走初始化流程时会看看storage里面有没有,有就补充上报上去。
场景举例:
当小程序目前在运行中,此时没有网络,然后突然有网络了,那么后续的行为是正常上报的,而之前已存在Storage里面那些,现在是不会去传的,必须小程序重新走初始化了才会执行那种去storage里面看看有没有的步骤。
有较大概率的原因是:浏览器安全策略因素导致热力图不支持在finder内查看非HTTPS站点的热图,建议使用https或者在原页面查看。
建议先检查web sdk版本,网页集成的JS SDK版本需要5.1.2及以上版本
Web/JS SDK从V5.1.2版本起支持实时埋点验证。
实时埋点检测得数据是根据上报的数据实时读取并展示的,展示的逻辑会和实际落库不完全一样;实际落库的是准确的数据。
实时埋点检测,看到的是作为参考用,有点类似于抓包的功能;数据库里会对很多信息进行补偿,以数据库为准。
a、在数据发送端验证,参考文档Finder 产品埋点验证手册;
b、在Finder产品中验证;可通过用户细查找到用户行为进行对比、也可在实时埋点检测实时观测上报的行为数据;
c、可在数据质量模块看到上报事件的报错情况。
小程序SDK预定义位置留有这个字段,但是小程序SDK本身不设置这个字段值,但业务可以设置;
iOS和Android可以在初始化的时候设置channel,如“XiaoMi、HuaWei、Baidu”等渠道。iOS如果不设置,一般默认"App Store"渠道。
app_name字段是在创建应用时设置的应用名和App Name;
应用名称可以在应用列表中修改,但是app_name设置后不支持修改。
iOS、Android SDK:6.10.1版本开始支持
Web SDK:5.1.1版本开始支持
(1)SaaS版本
微信小程序:将数据上报地址添加到微信小程序的域名白名单。
支付宝小程序:需将上报数据的服务器地址加到支付宝小程序的域名白名单。
(2)私有化版本
微信小程序:需将私有化部署的数据上报地址,添加到微信小程序的域名白名单。
支付宝小程序:需将私有化部署的数据上报地址,添加到支付宝小程序的域名白名单。
当不是在application里初始化,而是在activity初始化,由于初始化在activity展示之后,会导致没有启动事件,需要在初始化init()方法中增加第三个参数为当前Activity对象。
uuid(user_unique_id)在用户未登录情况下可不设置,用户登录之后可设置为业务上用户的登录状态的ID,我们的统计口径会将登录前后的用户识别为同一用户。
注意:请不要将UUID设置为一个固定值,这样会将大量用户识别为同一用户,造成数据统计差异。
《用户标识》文档请看:https://www.volcengine.com/docs/6285/65987
is_first_time构建的前提:需要在params里上报$is_first_time(注意要加美元符号);
app端的launch、predefine_pageview、小程序端的app_launch这三种事件不需要客户自定义上报$is_first_time即可构建(saas暂不支持app端的launch,后续会支持)
上报侧逻辑:
按照(ssid,event,is_first_time)来在本地上记录某个事件是否是第一次产生,如果该事件已发生过,$is_first_time直接设置为"false",否则设置为"true"(注意是字符串不是布尔值)
接收侧逻辑:
(1)接收的事件如果$is_first_time为"false",不作任何处理;
(2)接收的事件如果$is_first_time为"true",则会将【该用户该事件】【首次】上报的客户端时间(local_time_ms)记录下来,只设置一次,记录下来的时间戳会与后续上报的【该用户该事件】的客户端时间做比较,如果相等,则保留$is_first_time="true",否则修正为"false"
用户首次安装、卸载重装、安装更新时触发app激活会实时回传。
停留时长是在当前页面停留的时间,本次打开应用的会话时长是从打开app到关闭app的使用时长。
爬虫带来的数据没有分析价值,且影响真实数据。建议您参考“爬虫数据过滤”文档,开启反爬配置,清理脏数据。
《爬虫数据过滤》文档请看:https://www.volcengine.com/docs/6285/69052
产生原因:如果存在时差,确认下服务端上报时timezone字段的值是否为0;
以快8小时为例,解决办法:服务端上报时timezone字段改为8.0
注意:timezone需放在header下。
mobile:移动网络连接
取值逻辑:是移动网络连接的兜底,比如我们无法识别是3G,4G,5G就返回mobile(移动网络连接)
不管是使用服务端还是客户端sdk,上传用户,用户属性,事件,事件属性
(1)10分钟左右可以在数据管理中看到对应事件及属性数据,因为这块数据是元数据
(2)15分钟左右可以在用户细查看到上传的用户明细数据
(3)对于用户属性,以及事件属性,旧属性会直接显示上传的属性值,新属性会先构建,但是会在元数据落库后(也就是10分钟后)进行构建,(当新属性没有构建成功时,上传的新属性值数据会丢),构建完成之后新属性值才会落库,大约2小时左右可以查到属性值
app_Launch:当用户启动App或者进入前台的时候,AppLog内部会产生一个Launch事件;
app_terminate:iOS是在用户切后台后(包括锁屏),立刻算作Session结束,会产生一个Terminate事件;而Android是当用户在后台停留30s后((包括锁屏)),然后在下一次打开监听到超过30s才会生成terminate。
事件大概可以分3类:
(1)预置事件(主动上报)用于预置分析模型
比如app_launch,app_terminate等
(2)全埋点事件(通过全埋点开关控制,打开开关主动上传,不打开开关不上传)
比如bav2b_page 全埋点页面访问,bav2b_click 全埋点元素点击
(3)自定义事件(根据业务需要设计埋点方案然后研发进行代码埋点)
sdk不采集ip字段,值是服务端通过网络请求解析然后补上去的。
imei没有入库,不可以导出。
对于历史数据定义的是7天前的数据。如果数据的客户端时间超过七天,正常情况下无法导入,如需导入历史数据,需在header的custom字段中增加历史数据的标识__is_history,属性值设置为字符串"true"。
具体情况如下:
(1)历史数据的这个属性会展示成null
(2)上传string类型的新数据会正常展示
(3)上传非string类型的新数据会被修正字符串,也就是不能进行四则运算
允许修改,但历史数据不再能查询,再变更回原类型,依然可用。比如string->int->string。
可以在finder产品,应用设置->一般事件中进行设置。
使用日期对比功能需要满足:1. 必须是折线图 2. 不能处于异常检测状态 3.不能设置去除周末
有,实时数据10分钟刷新一次缓存,没有条数的限制。
根据用户首次上报数据的当天是首日,查询时间和首日为同一天,当天就是新用户,查询时筛选条件可以使用 $is_first_day = true。
是否首日访问是事件属性依据事件,不会变化,是否新用户和查询时间范围有关系,详细验证可以查看 是否首日访问和是否新用户的使用差异。
生成方式:生成的方式是用的 cityhash 对user_id 和 app_id 组合后计算的hash值, hash_uid = cityhash("<app_id>:")
字段作用:hash_uid就是一个用户id字段,是用做事件表和用户表join时用的,由于 hash_uid 是数值类型的,因此用hash_uid关联时可以有效提高性能;
只接入小程序,且未上报其它端的事件时,热力图现在不支持小程序应用使用。
总人数统计的是事件的发生人数,按ssid维度去重计算总数。
不管是实时数据还是离线数据,点击下载的时候都会重新发起一次查询,不会使用到前面已经查过的缓存。
LTV的计算逻辑如下:
某日的人均LTV LTVn = 该日新增用户在随后n天内花费的金额/该日新增用户数
分子为:该日触发「应用启动」的新用户n天内触发「支付」的支付金额总和
分母为:该日触发「应用启动」的新用户
虚拟事件仅在参与分析时通过逻辑构建,非实体保存,因此不支持在自定义sql中进行查询
历史数据变化主要有2种情况:
(1)实时和离线数据的差异:当天的数据是实时口径,T+1会变为离线的口径(T+1 18:00前完成),因为实时和离线的逻辑有一定差异,所以会有一定数据量级的变化,一般不会超过5%;
(2)缓存数据补报:因为网络问题,或访问后立刻关掉app等原因,会有少量数据在事件发生时没能上报上来,这部分数据在下一次打开app,网络情况正常时会补报上来,因为时间取的是事件实际发生时间,而不是补报时候的时间,所以造成的现象,是历史数据还会增加。只要是事件发生7天内的,都会做补报,超过7天的会丢弃;这部分数据的量级会因为运营地区网络的情况和app本身的业务特点而有差异;大部分情况其实占比也是很小的,但也有部分应用占比会大些。
柱状图显示数据是按点击数查看元素分布,点击元素对应的柱图,也会在下方的热图中将对应的元素高亮出来,empty是因为如果点击的目标是像图片这样,非文本类的内容,然后又没有圈选事件就会展示empty,对于客户而言可以把重点关注的元素增加圈选事件,但是也不能保证这个柱状图里面没有empty出现。
这个"-"是空字符串的意思,空字符串也算是有值的。
事件分析-任意事件-选择推广活动属性-点击筛选条件框-切换开发者工具的network找properties接口的preview-data-values。也可以通过元数据OpenAPI获取,详见:https://www.volcengine.com/docs/6285/196792#_11-%E8%8E%B7%E5%8F%96%E4%BA%8B%E4%BB%B6%E5%B1%9E%E6%80%A7
在DataFinder的高级分析页面中配置好查询分析参数后,点击查询即可在当前页面查看到查询结果,将当前查询结果页面的URL复制后,可临时保留查询结果,此URL的临时存储时间约1个月,超过1个月后即会失效,再次点击页面URL会提示分析结果不存在。建议将需要长期保留的查询结果保存为看板。
可以用广告监测模块的push api来拉取激活事件,包含有这三个字段,具体可以参考《push api》:https://www.volcengine.com/docs/6285/116321
广告点击数据会计一次。
activation_channel这个公共属性为null是因为:老用户,没有触发激活事件,广告监测不会上报。
渠道:对应字段channnel,一般指app的渠道,也就是sdk集成时配的channel字段,举例华为,oppo,appstore等;
激活渠道和渠道一样:包内渠道,是app打包时写的渠道;
首次广告推广渠道和广告推广渠道是推广渠道,首次广告推广渠道是指用户第一次是哪个渠道带来的,广告推广渠道是指用户现在是被哪个渠道带来的。
(1)创建应用时填写的包名和appid没有强依赖关系,目前只有广告模块会用到包名,其他功能不涉及
(2)如果客户有多个应用,建议每一个应用app需要创建一个应用ID,缺点是应用间数据隔离,多个app没法打通
(3)包名和appid是一一对应的,一个包名不能对多个appid。
可能原因:这个应用已经在巨量投放,appid都是在appcloud申请,appcloud要求appid包名全局唯一;
解决方案:
(1)确认您之前是否用此包名,创建过其他应用?如果没有的话,可以同步我们客服同学或者客户成功经理进一步排查原因。
(2)如果之前创建的应用已经启用了,想再次使用同一包名创建应用,历史创建的应用被启用可删除的情况下,可以提供当时接入的应用 ID,我们协助将原来的应用删除,删除后您可以重新开始新建流程。
进入finder产品后,点击右下角文件图标icon,选择 “允许DataRangers的运维人员进入您的集团”,并设置集团开放的时间。
基于安全合规的角度;之前集团管理员重置密码的方式有漏洞,如果用户新建一个集团并邀请其他账号进入集团,可以直接重置其他账号的密码并登录。所以目前基于安全的角度,重置密码的权限全部收口在超级管理员(系统初始化用户)上身上。
可以,建议将同一块业务相关的应用集成在同一个Appid下。
不能,只能用户自行在主账号-账号信息下修改用户名。
查询分析的时候显示日期用的,选择对应的时区,查询分析看到的日期就是对应时区的时间。
需要在finder服务端配置发送邮箱,才能发送邮件,否则会有报错提示。
每天早上9点左右生成。
(1)openapi使用频次是1分钟600次
(2)文件切割这块:app_launch是应用启动事件,一个csv,origin_event是除了app_launch以外的事件,1个CSV,但是超过90M会进行切割