常见问题
先看 getHealthSnapshot() 的初始化、队列和最近错误状态,再按现象排查。需要核对事件是否真正送达时,按数据校验操作。
| 现象 | 检查与处理 |
|---|---|
| 没有事件 | 确认 SDK 已初始化、采集已授权,再看 lastDropReason。queue_full 或 queue_bytes_full 表示队列容量不足。 |
调用 track() 后没有请求 | 事件可能正在合批或等待发送;查看 queueSize、pendingWrites 和最近错误。调试时可调用 flush()。 |
| 有请求,但事件未被确认 | 检查接收地址、projectKey、HTTP 状态和响应体。2xx 也必须包含有效整批 ACK;参见数据校验。 |
| Web 出现跨域错误 | 核对上报地址是否属于当前环境,以及网页是否限制连接该域名。直连仍受阻时联系技术支持;使用网站同源代理时检查转发配置。 |
| Android 或 iOS 切后台后未立即上传 | 后台发送受系统调度和网络状态影响。返回前台后查看队列和最近错误;不要将切后台视为立即送达保证。 |
| 接收端出现重复事件 | ACK 丢失后可能重发。SDK 重试会保留 eventId;接收端应按该 ID 去重。 |
| 登录后事件归属不对 | 换账号使用 switchUser(userId),退出使用 signOut();参见身份与生命周期。 |
| 授权后匿名 ID 变化 | denyConsent() 会清理 SDK 自有身份;重新授权会生成新的匿名身份。 |
| 事件内容过大 | 默认单个字符串最多 4096 字符,对象属性数最多 100,递归处理到 6 层;超出单事件字节上限的事件会被拒绝。检查事件内容和丢弃原因。 |
存储恢复问题
如果诊断显示 storage_identity_unavailable、storage_identity_corrupt 或 storage_identity_invalid,请检查平台存储状态和升级来源。不要通过手动删除 SDK 队列处理身份问题。
initialized 只表示实例已建立,不证明 Outbox 一定是持久化存储。存储降级至内存时,未发送事件可能在应用退出后丢失;请核对实际存储后端及重启后的恢复结果。
需要进一步排查
在错误码与诊断查错误码并导出报告。事件 ID、事件名、插件名或错误摘要等仍可能包含接入方自定义内容;分享报告前请检查敏感信息。