支持的预置事件和属性:预置属性总表。
预置属性不可以删除,会影响一些基本指标的计算。
更多数据口径和取值逻辑请参见数据口径&取值逻辑。
自定义公共属性在上报时也会放置在公共字段header中进行上报,会随触发的预置事件、自定义事件等数据一起,在公共字段header中上报。
事件公共属性只有明确设置了属性值之后,所有的事件才会携带此公共属性上报。没有设置公共属性的值则所有事件不会上报。
所以一般情况下移动端的SDK会上报一些预置事件,在上报之前会设置一些公共属性,因此一般移动端SDK上报的预置事件和自定义事件都会携带部分公共属性。
但是服务端SDK的事件上报不会提前设置公共属性,所以需要手动设置。
例如:平台类型属于事件公共属性,移动端SDK会自动采集并设置,所以一般移动端的事件都会携带这个属性。但是服务端的事件不会带,除非服务端手动设置platform事件公共属性才会携带。
iOS、Android SDK:6.10.1版本开始支持
Web SDK:5.1.1版本开始支持
从version类型修改为string类型不会影响历史数据,历史数据可以正常查询。
对比项 | 代码埋点 | 全埋点 |
|---|---|---|
埋点方式 | 代码埋点指的是开发工程师,按照业务个性化需求,人工写入代码中以实现数据采集逻辑。 | 全埋点,又称为“无埋点”、“无痕埋点”以及“自动埋点”。全埋点是针对标准页面的浏览和标准元素的点击进行自动采集上报,无需研发开发代码进行埋点集成。 |
采集事件 | 采集范围广,理论上只要是应用端的交互操作,都可以采集得到。
| 采集的全埋点事件为bav2b_click按钮点击、 bav2b_page页面浏览等事件,详情参见全埋点预置事件和属性。 |
适用场景 |
例如:搜索结果返回、注册结果返回、Banner、楼层、个性化推荐/千人千面页面 |
|
优势 |
|
|
劣势 |
|
|
集成操作指导 |
|
|
停止数据上报 | 如果不希望再采集上报某些代码埋点数据,可在DataFinder控制台的数据管理>元数据管理中禁用对应事件或属性即可。 | 如果不希望再采集上报全埋点数据,可在DataFinder控制台关闭全埋点开关。无需修改集成代码中的全埋点开关。 |
数据分析 |
| |
全埋点事件不会采集用户敏感数据,当前支持采集的全埋点数据范围请参见:全埋点预置事件和属性。
DataFinder进行数据采集时,会基于数据分析需求采集部分例如宿主app(即开发者app)自身进程信息、手机系统重启时间等数据,详情请参见【增长营销套件SDK】隐私政策。
当前支持采集的全埋点数据范围请参见:全埋点预置事件和属性。
当前不支持直接复用全埋点事件中的属性。您需要在自定义事件中手动添加所需的属性。
如果您希望在每个事件中都包括某些属性,可以通过设置公共属性来实现,这样这些属性会自动包含在所有事件中。
基于Flutter的APP支持开启并使用全埋点。
bav2b_page事件:上报时机分独立页面和SPA(单页应用),独立页面的话则在页面打开后,SDK初始化完成后上报一次。如果是SPA页面,除了SDK初始化完成后上报一次,在点击切换页面时也会上报一次。主要采集的数据为页面浏览的一些参数,用于分析页面浏览行为。
bav2b_page_statistics事件:上报时机为页面打开后,SDK初始化完成后上报一次(独立页面和SPA都只上报一次),采集的数据主要是页面加载耗时、页面宽高等统计信息,用于分析页面加载统计等信息。
用户首次安装、卸载重装、安装更新时触发app激活会实时回传。
utm参数的有效期取决于sdk的生命周期。如果sdk被关闭或者重启,utm参数就会失效。如果sdk会延续到下一个页面,那么utm参数就会持续生效。如果页面是单页面多路由的,utm参数也会持续生效。如果客户发现自己在操作页面上下级的时候会带上,但重新进入网页也会带上,那么这个utm参数就会存在cookie里。如果每个页面都是一个独立的话,那么utm参数就会消失。如果重新进入是因为你重新设置了那个utm参数,或者用这个,能传递给下一个域名。
可以在web/js或小程序的落地页 path上自定义参数utm_xxx,集成sdk后会自动采集。
caid属于中广协 sdk提供的id,当前Finder还没有跟中广协确定合作关系,因此暂时没有接入caid,不需要提供隐私声明。广告归因是依赖于设备id、idfa和ip。
当前不支持对接应用市场获取相关数据。
当前list类型的属性在上报数据时不支持嵌套。此场景下,当前建议通过转义的方式把数据转成String后再上报。例如:
埋点中添加不了,只能在数据管理页面上添加。
SaaS-非云原生场景下(含海外BytePlus环境),自定义用户属性是分实时数据和离线数据的。
不支持,ip是网关检测的在上报后数据流加上的,ip的预置属性不能自定义
大部分业务场景下,会需要同时接入客户端和服务端的数据。
此外,部分用户在选择使用客户端还是服务端接入数据时也会考虑后续的升级是否便捷。
如果您的业务应用主要为需要用户实名登录的应用,并且有用户的唯一标识的字段(例如通过账号ID——account_id,来唯一标识一个用户),此场景下,您可把用户标识字段 account_id上报到DataFinder的user_unique_id(uuid)属性字段里,后续需要查询某个用户的时候:
user_unique_id = 这个用户的account_id 就可以找到这个用户了。UUID(User_Unique_ID)在用户未登录情况下可不设置,我们会用DID(Device ID)填充。用户登录之后可设置为您自己的UID,我们的统计口径会将登录前后的用户识别为同一用户。
注意
请不要将UUID设置为一个固定值,这样会将大量用户识别为同一用户,造成数据统计差异。
不支持,请勿将UUID上传为中文。UUID仅支持数字、字母及符号,如果上传为中文,会导致数据无法上报造成数据质量问题。
通过服务端上报的接口,数据会默认是服务端来源上报;其中上报的数据内容是自定义的,如果想要区分不同UUID来源的客户端类型,也可以使用预置的来源端进行区分。
UUID不一致的情况下,SSID无法保持一致。如果需要保持数据打通,需要确保两个APP的UUID(user_unique_id)一致。
在SaaS-非云原生环境中user_id这个属性是预置用户属性,如果:
window.collectEvent('getToken') window.collectEvent('ready', () => { const web_id = window.collectEvent('getConfig','web_id') })Finder SDK默认情况下会通过IP地址解析成地址信息,如果需要采集坐标信息,需要额外配置。IP地址解析是在上报事件到Finder时由数据流解析的IP地址所在位置。SDK本身不收集IP信息,而是由服务器根据来源IP解析。SDK可以采集坐标信息,但需要相关的配置,可以查阅接入文档。
DataFinder SDK无法直接采集到设备上应用程序被卸载的行为,但是您可以后续进行数据分析时,通过筛选app激活事件来间计算得到应用程序被卸载的行为数据。例如:
安装类型=卸载重装,可以统计有多少用户有过卸载行为。激活再次安装的用户加上在一定业务范畴内没有触发行为且没有多次激活的用户,这样可以近似地处理卸载行为。首先,需要检查集成SDK代码是否存在问题。如果用户的代码没有问题,那么可以考虑在代码层面上绕过这个问题。具体的解决方案是,将设置用户属性的方法,抽取一个工具方法,将所有需要设置的用户属性存放在一个数组里面,然后通过遍历的方式来逐一调用profileset发送用户属性,而不是通过调用一次接口发送所有的用户属性。数组的方式可以保证调用顺序,避免用户属性被重写错误。同时,在当前版本中,调用profile_set时会有60秒时间限制,在时限之内上报用户属性时,如果存在同样的key则无法上报,需要解除该限制。
确认SDK内部限制了最小上报频率为10秒,因此设置小于10秒的频率不会生效。
是控制每个请求最长完成时间,超过这个时间请求还没回来就主动认为它是超时的并按照请求失败去做相应的处理的
AppLog.setUserUniqueID方法是立即上报服务端的,如果您希望停止业务应用的服务,希望依据AppLog.setUserUniqueID方法上报的情况来决策是否可以删除业务数据,如果遇到找不到uniqueid的问题,可能是由于没有设置id,或者设置id的时机有问题。您可以尝试抓包去查看日志,或者在调试板上查看log。
Finder可以通过自定义事件来采集文章的已读比例。可以在文章页面中添加代码来追踪用户的阅读进度,并将这个进度作为事件属性上报。例如,可以设置一个事件名为"article_read_progress",并且每隔一定的阅读百分比(如10%、20%、...、100%)触发一次事件上报,事件属性中包含"progress"字段来表示已读比例。这样,就可以在Finder中分析用户对文章的阅读深度。
如果需要采集上报json格式的数据,可以将数据转义成string类型进行存储。详情请参见示例1:嵌套JSON类型属性如何上报并用于过滤、分组。
异常现象:
Duplicate class com.bytedance.applog.encryptor.EncryptorUtil found in modules jetified-encryptor-0.0.9-rc.2-private-runtime (com.pangle.global:encryptor:0.0.9-rc.2-private) and jetified-encryptor-1.0.1.noasan-runtime (com.bytedance.frameworks:encryptor:1.0.1.noasan)
解决方案:
pangle修改集成方式:
implementation ('com.pangle.global:ads-sdk:6.0.0.7 '){ exclude group: 'com.pangle.global', module:'crash_monitor' exclude group: 'com.pangle.global', module:'global:encryptor' }
这个报错不会影响SDK的正常初始化。
错误的原因是当前版本的SDK提供了对华为、小米最新版本(AndroidQ)手机设备id获取能力,当在模拟器或低版本设备中运行时,控制台会打印这个错误信息,但不会影响SDK的正常初始化和使用。
Android_id在Android10以上版本都采不到。
在Android 6.9.0及以上版本。
1.建议客户在传入的JsonObject后不要添加修改逻辑,避免导致崩溃。
2. 在6.16.10版本中,SDK会在接收到JsonObject后进行复制处理,以避免客户修改导致的崩溃。
例如路径:(1)默认口径uuid -> (2)指定口径卡号 -> (3)默认口径uuid
此时2->3切换时,第3步 setUserUniqueID(uuid) 等于 = setUserUniqueID(uuid, oldUuidType)
有两种拒绝方法:
使用以下代码:
AppLog.setUserUniqueID("001") AppLog.setUserUniqueID("卡号aaa","card_no") AppLog.setUserUniqueID("001","")
使用以下代码:
AppLog.setUserUniqueID("001","id_type") AppLog.setUserUniqueID("卡号aaa","card_no") AppLog.setUserUniqueID("001","id_type")
以上两种方法都可以实现多口径切换用户。
AppLog.setHeaderInfo 设置了某个 header属性,立刻埋点事件,这个埋点一定能带上所设置的 header 属性 吗? 不一定
1.设置公共属性不是实时的,所以有延迟。如果需要事件绑定,建议设置事件自定义参数。如果需要事件带上那一刻的值,可以考虑使用事件自定义参数,或者在调用AppLog.setHeaderInfo 后立即上报埋点。
2.如切换用户的时候产生了事件和更新 custom
事件归到前一个用户了,切换时触发了立即上报 此时 copy 了 header 感知不到 custom 更新
后续事件应该就是正常定时上报了,也就享受到了 custom 的更新
DataFinder的Android SDK没有直接集成com.google.android.gms:play-services-maps这个库,当前Android SDK依赖了这个系统库。
Android sdk 6.4.0版本才适配了1.0.26版本,建议客户升级Android sdk版本。
是的,目前ios的SDK仅支持object-c,swift还未直接支持。
出现此类异常提示可能是因为工程配置问题导致的,您可检查依赖配置中是否有冗余依赖或缺失必要的依赖,可移除冗余依赖(如sg模块)、补充必要依赖(如volc加密模块)、调整Header Search Paths及Linker Flags后,再进行SDK集成,看下是否可正常集成成功。
SaaS-非云原生-海外BytePlus环境的iOS SDK的版本需要升级到6.17.0,并在Podfile中添加以下代码来集成DevTools组件:
pod 'RangersAppLog', '6.17.0', :subspecs => [ 'Host/SG', 'Core', 'UITracker', 'OneKit', 'Log', 'Picker', 'Unique', 'VolMetaSecML', 'DevTools' ]
确保在主控制器的view生命周期方法中显示DevTools按钮,以避免被其他UI元素遮挡。
API12(Developer Beta3)以上。
支持。
HarmonyOS SDK自1.3.0版本开始支持 OAID / 运营商信息的采集开关。
暂不支持多线程 / 多进程。
1.3.1版本开始支持x86 模拟器。
Pako是鸿蒙官方推荐的 gzip 工具,目前DataFinder系统没有现成的 gzip 接口,推荐使用 pako 依赖。SDK 内部有请求加密,加密伴随着 gzip,所以是必要依赖。
如果您的环境无法支持在线引入依赖,您可以联系火山引擎技术支持人员获取离线 pako 的 har。
添加下 overrides 配置,强制指定为离线版或者特定版本。
出现此报错是因为pako 没有依赖。您需要参考帮助文档完成pako 依赖的配置。
出现此报错是是初始化 SDK 的 context 不对。
可能是老客户升级SDK版本导致的,之前版本的SDK导入是 @ohos/applog,需要把导入名称调整下,参考最新文档:HarmonyOS Next SDK 集成。
完整报错:
ERROR: Bytecode HARs: [@volcengine/applog, @volcengine/applog_devtools, @volcengine/applog] not supported when useNormalizedOHMUrl is not true.* Try the following:> Please check useNormalizedOHMUrl in the project-level build-profile.json5 file.
解决方案:在根目录添加这个配置,并 compatibleSdkVersion 调整至 12。
添加该配置的原因:
升级SDK后,需要sync 一下。
完成报错信息:
ERROR: ArkTS:ERROR Failed to resolve OhmUrl. Error Message: Failed to get a resolved OhmUrl for "@volcengine/applog" imported by "/Users/bytedance/DevecostudioProjects/SDK50/oh_modules/.ohpm/@volcengine+applog_devtools@7hba3+yrkmv76lfmmoxyslxamstpksemeh++r+9qtz8=/oh_modules/@volcengine/applog_devtools/src/main/ets/plugin/DevTools.js".
可能原因:
可能原因1:AppLog 引入名称错误。
遇到该问题,主要原因是依赖组件时,前面组件名字其实是可以任意写的,但是 applog 和 devtools 之间的协议是特定的,就是写成 @volcengine/applog 的方式引入,请检测 AppLog 依赖时的名称是否写对了,请严格按照文档集成。
// 严格按照该名称引入 AppLog "@volcengine/applog": "file:../applogx/applogx.har", "@volcengine/applog_devtools": "file:../applogx/applogx_devtools.har"
可能原因2:子模块中依赖 AppLog 同时子模块也被其他模块依赖后发现报错。
由于鸿蒙不支持依赖传递,所以在子模块中依赖的 SDK,无法被其他模块引用,请在对应模块添加依赖。例如,子模块依赖 applog,entry 依赖子模块,请也在 entry 模块中添加 applog 完整依赖。
由于适配了新功能,需要将 AppLog 与 devtools 都升级到 1.2.0-xx 版本,仅升级 Devtools 不行。
记得 override applog,并且 override 要写到根结点的 oh-package.json5。
可参考官网文档:订阅 DID。
事件自定义属性为 EventRecord 类型,为自定义类型,不支持其他类型,因为 SDK 需要做类型校验,避免接收到不能解析的类型,所以 SDK 限制了接收类型。
1.1.0 EventRecord = Record<string, number | string | boolean>
1.2.0 EventRecord = Record<string, number | string | boolean | string[]>
默认也是一分钟上报一次,但是没有具体上报条数,SDK 策略为新的按体积查询事件的上报策略(Android / iOS 为按条数查询), 每次上报查询 1M 左右数据进行上报,不再以 200 条为准(可以尽量多的上报)。
如果APP内嵌了H5页面,您希望同时采集H5页面数据和APP端的数据时,您需要分别集成APP端的SDK和Web端的SDK,并在集成SDK时,两边都打开内嵌H5的开关。打开内嵌H5的开关后,后续H5页面的数据会上报至APP端的应用中,且H5页面的用户标识数据与APP端的用户标识数据可打通。详情请参见H5 打通介绍、APP打通H5上报、与H5页面关联web_id。
判断APP是否有勾选隐私权限的设置以及功能联动。存在一种可能:用户未勾选隐私配置导致APP SDK没有启动,但是此时H5页面已经加载JS SDK,导致走的是JS SDK上报。
Android SDK在与H5做打通时会拦截LoadUrl方法来识别H5地址,如果用户的Activity中存在LoadUrl方法,可能被SDK拦截导致WebView无法加载内容。
如果A页面iframe引入了B页面,则您需要同时在A、B页面中均集成web端的数据接入SDK,完成集成后,后续前端用户在A页面中对iframe的B页面进行操作产生了行为数据后,数据会上报至B页面上报的app_id中。
因此此场景下有以下注意事项:
检查初始化代码app_id配置的是否正确应该为number类型。如果是string类型,会初始化失败并出现上述错误提示。
SDK初始化代码中,设置了 log:true 后,会打印调试日志,如果不需要开启可以设置为false。
在content中集成js sdk代码时,可以尝试使用npm包的方式来加载,然后使用webpack等工具将content.js里的import语法编译成可以在浏览器环境运行的语法。操作参考链接,核心步骤如下。
如下图所示,点击里面的
在单页面应用环境下,spa会自动采集页面停留时长。但如果不准确,想要自己计算的话,可以使用disable_route_report来关闭hash路由监听。但此时allow_hash配置会失效。
当前小程序端支持使用预置事件,如果没有上报可能是集成SDK时没有开启自动上报开关,请将auto_report设置为ture。
“分享分析”的使用依赖于“on_share”的上报,请确认小程序 SDK 在初始化时是否配置 auto_report 为true,具体可参考小程序SDK相关文档。
对于小程序,我们sdk没有主动监测网络,开启enable_storage参数会将事件先存下来,如果上报未成功,在下一次SDK初始化后还有机会补充上报。
注意:小程序中的storage是有大小限制的,超出限制时事件会丢掉
(1)如果这个参数为false,不管什么情况导致上传失败的数据就会丢掉
(2)如果这个参数为true,所有的事件都会去存到storage里面,然后进行上报,上报成功就删除已上传的数据,不成功就一直在storage里存着,当SDK重新走初始化流程时会看看storage里面有没有,有就补充上报上去。
场景举例:
当小程序目前在运行中,此时没有网络,然后突然有网络了,那么后续的行为是正常上报的,而之前已存在Storage里面那些,现在是不会去传的,必须小程序重新走初始化了才会执行那种去storage里面看看有没有的步骤。
目前小程序的全埋点事件只支持微信小程序,其他小程序的组件实现方式不同暂时没有适配。例如支付宝小程序不支持bav2b_click,如果页面是Component实现的话支持bav2b_page,如果页面是Page实现的话就不支持了。
on_share和on_addtofavorites是小程序本身的预置事件,触发这些事件取决于小程序本身的方法是否实现。如果小程序开发时没有实现onShareAppMessage和onAddToFavorites方法,可以通过在页面中添加这些方法来实现。
由于框架的限制,导致小游戏在被框架编译时无法监控到生命周期。所以SDK无法自动采集上报启动和关闭事件,目前SDK无法规避。
我们提供了手动上报启动和关闭的函数,如果客户能自行监测到框架生命周期(或者框架有提供生命周期监听方法)可采用自行上报的方式上报启动和关闭事件
手动调用快捷方式:
启动事件:$$sdk.appLaunch()
退出事件:$$sdk.appTerminate()
海外版不能直接使用RangersApplogFlutterPlugin.initRangersAppLog进行初始化,需要在原生代码中初始化,并设置为海外环境。
Flutter项目不支持使用实时埋点验证,但可以支持Android或iOS平台的集成。建议根据需要选择Android或iOS平台进行集成,并使用DevTools进行验证。
建议升级SDK至最新版本,并合理设置keepalivetimeout参数,如keepalivetimeout为10秒。
PHP SDK默认不会自动带上device_id。如果需要带上device_id,可以参考以下步骤:
platform平台类型,不是必填字段,可以自定义值进行上传;
但随便传可能会影响应用概况功能的分析;应用概况中终端platform 字段值为mp是小程序、 web,wap 是网页端、 ios,android是移动端;其他的数据就只能在全部里面去查看;
建议:尽量按照正确的平台类型进行赋值。
具体说明如下:
字段: 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"}"
},
更多item数据接入的最佳实践可参见业务维度(item)数据接入使用实践。
国密配置需要移动端和后端都进行配置,移动端配置国密参考官网文档;
SDK类型 | 是否支持SM2 | SDK支持SM2版本(>=) | 是否支持SM4 | 是否支持其它加密算法 |
|---|---|---|---|---|
Android | 支持 | 6.15.4 | 否 | 默认加密算法为 AES |
鸿蒙 | 支持 | 1.0.0 | 否 | 默认加密算法为 AES |
IOS | 支持 | 6.15.0 | 否 | 默认加密算法为 AES |
WEB/H5 | 支持 | 5.16 | 否 | 无 |
小程序 | 支持 | 2.9.1 | 否 | 无 |
国密SM2是对称加密算法,配置需要私钥和公钥。客户需要自己生成私钥然后根据算法生成对应的公钥,生成的方法可以参考公开的论坛文档
开启国密后立即生效
开启国密后兼容老上报数据,不影响未开启国密的数据上报
有。授权后会拿到设备的deviceId、sim卡序列号、subscribeID等相关信息。但iOS没有权限申请,也不会采集sim卡序列号。
这个权限是Andorid SDK用于获取oaid的,使用场景:设备注册和深度链接:跨APP标识设备。注意:OAID 是重要设备追踪信息,若关闭 OAID 会影响 广告监测的归因结果,如果使用了广告监测功能请谨慎考虑。如果客户没有购买广告,且需要关闭oaid,可以按照官网文档的指导进行操作8. 权限说明。
背景:Android 10之后禁用 IMEI、MAC。
移动安全联盟联合国内手机厂商推出了适用于国内的一套广告追踪标识,称为OAID。OAID跨app可打通,但用户可以随时在系统设置中进行重置。OAID具有一定的权威性,可满足用户行为统计的使用场景。
可以手动获取IDFA。使用requestAuthorizationWithHandler方法替代调用系统的ATTrackingManager,获取IDFA。具体代码如下:
#import <AppTrackingTransparency/AppTrackingTransparency.h> #import <AdSupport/ASIdentifierManager.h>
使用(nullable NSString *)trackingIdentifier;方法获取IDFA。
您可将SDK版本升级版本至 6.17.0 及以上即可解决此问题。
不能,通过sdk暴露的did接口获取到的是bd_did,bd_did是加密的did。如果想要对bd_did进行解密,内部可以使用bddid机器人进行获取,外部不提供解密。bd_did是使用集团id+did通过aes加密。
1,上报接口没有鉴权,理论上数据都可以上报。无法从服务端识别是否是伪造或者篡改数据。
2,Finder服务端不会校验device_id是否是自己下发的,无法从id端鉴别伪造数据
建议客户做好以下措施预防数据篡改:
1,做好请求加密(不只依赖 https 的加密)最好有自己的额外加密(最好非对称加密)。其他的措施需要客户那边考虑下是否还有更好的方案。
不行,DataFinder SDK只会采集已配置的事件和行为数据,不会入侵其他sdk。
检查并确保数据上报地址已配置正确。如果数据上报地址被注销,需重新添加数据上报地址后,问题即可解决。
实时埋点验证功能使用的是测试统一的测试appid进行数据上报,主要用于验证埋点有没有缺失字段、数据类型是否正确等这类正确性问题。实际进行数据采集上报时,数据会上报到您配置的应用和环境地址中,此时如果查重不到数据,可进一步确认下集成SDK中的数据上报地址、应用ID等配置结果是否正确。
Web/JS SDK从V5.1.2版本起支持实时埋点验证。
建议先检查web sdk版本,网页集成的JS SDK版本需要5.1.2及以上版本
首先,确认使用的手机是iOS还是Android。然后,根据对应SDK集成文档中的细节检查app_name、scheme、代理方法、子库等设置。如果问题仍然存在,建议用户检查网络连接和设备设置。
检查url是否正确,确认是否是同一客户不同测试环境。同时,检查是否选错了应用。如果问题仍然存在,可能是因为页面切换的时候使用错了,需要重新测试。
实时埋点检测得数据是根据上报的数据实时读取并展示的,展示的逻辑会和实际落库不完全一样;实际落库的是准确的数据。
实时埋点检测,看到的是作为参考用,有点类似于抓包的功能;数据库里会对很多信息进行补偿,以数据库为准。
不管是使用服务端还是客户端sdk,上传用户,用户属性,事件,事件属性
(1)10分钟左右可以在数据管理中看到对应事件及属性数据,因为这块数据是元数据
(2)15分钟左右可以在用户细查看到上传的用户明细数据
(3)对于用户属性,以及事件属性,旧属性会直接显示上传的属性值,新属性会先构建,但是会在元数据落库后(也就是10分钟后)进行构建,(当新属性没有构建成功时,上传的新属性值数据会丢),构建完成之后新属性值才会落库,大约2小时左右可以查到属性值
您可参考以下排查步骤进行排查定位原因:
需要看下是否设置开启了埋点验收功能,如果开启了,则上报的埋点需要在元数据管理页面点击验收一下,完成验收后才可被查询使用。
可以查看项目设置的 应用设置中的元数据-一般事件限额,确认当前元数据中已有的一般事件的数量是否超出设置的限额。
未验收的埋点数量限制是为了避免上报过多无用的事件、属性,避免研发、产品没有对齐,全是脏数据的情况。如果超过设定的数量,数据会被丢弃,不会显示在系统中。同时,如果数据被拦截,会进入待验收事件,但不会进入dropped_event,因为是预期内的拦截事件。想要补数据只能从HDFS里面恢复。
预置属性app_version字段,在SaaS-非云原生和SaaS-非云原生海外-byteplus环境中有特殊的处理逻辑,必须是x.x.x三段格式,否则会被applog强行过滤为该格式,如:12.1会被过滤为:1.2.1
当不是在application里初始化,而是在activity初始化,由于初始化在activity展示之后,会导致没有启动事件,需要在初始化init()方法中增加第三个参数为当前Activity对象。
{"code":4000,"message":"user 20********** not exist.","data":null}(1)SaaS版本
微信小程序:将数据上报地址添加到微信小程序的域名白名单。
支付宝小程序:需将上报数据的服务器地址加到支付宝小程序的域名白名单。
(2)私有化版本
微信小程序:需将私有化部署的数据上报地址,添加到微信小程序的域名白名单。
支付宝小程序:需将私有化部署的数据上报地址,添加到支付宝小程序的域名白名单。
您可以检查下小程序端的设备数据是否使用的是bddid,小程序端不用关注bddid,建议使用webid。
上述现象符合预期,补事件是小程序的处理逻辑,会在上报用户实名信息时(即上报user_unique_id时)同步上报app_terminate和app_launch事件。
小程序的机制是需要客户实现相应的事件处理函数后才能触发相关的事件上报https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html#onAddToFavorites-Object-object
title将为空。title属性为空。onShareAppMessage定义是否为异步返回,如果是异步返回的,SDK目前不支持获取title属性,因为title是业务自己定义的,如果值为undefined,title字段将被过滤掉。Finder产品中的日活和自行统计的小程序数据不符,客户目前没有上报匿名行为到Finder,如何在区分用户状态的情况下保证日活用户统计相同?
用户状态分为:游客(无设备id和uuid)、注册(无uuid)、认证(有uuid)
建议客户使用多口径的方式上报,创建一个游客口径并且自行维护一套匿名用户ID;
产生原因:如果存在时差,确认下服务端上报时timezone字段的值是否为0;
以相差快8小时为例,解决办法:服务端上报时timezone字段改为8.0
注意:timezone需放在header下。
ssid的计算逻辑可以参加用户标识(uid、ssid、did)。如果您的上报数据差的非常多明显有数据异常场景,可排查下是否是由于数据爬虫产生的异常数据,建议您可以在数据查询时过滤爬虫数据。DataFinder也支持爬虫识别功能,您可设置爬虫识别规则后即可识别过滤爬虫数据,详情请参见通用设置:爬虫识别。
分组后如果一个用户符合多个分组条件,在相关的组里会分别计算一个,这样看分组总和就会比合计值要大。
火山引擎增长分析的A/B测试功能的流量为100%,不支持流量复用,因此当您开启的实验流量已经达到100%上限时,再开启新的实验时会出现流量无法分配的情况,需要您结束部分实验再创建,或联系客服升级使用A/B测试高级产品DataTester。