diff --git a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt index 2649f53..fa3cca2 100644 --- a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt +++ b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt @@ -205,7 +205,11 @@ object BugCollect { } } - /** 将 SDK 未就绪时暂存的错误事件 flush 到队列。 */ + /** 将 SDK 未就绪时暂存的错误事件 flush 到队列。 + * + * 早于 SDK 初始化完成前调用 captureError 时,事件以 appKey="pending"、userId="unknown" + * 占位存入 pendingErrors。flush 时用真实值替换,避免服务端因找不到应用而丢弃事件。 + */ private fun flushPendingErrors() { val events = synchronized(pendingErrorsLock) { if (pendingErrors.isEmpty()) return @@ -213,7 +217,20 @@ object BugCollect { pendingErrors.clear() list } - events.forEach { queue().push(it) } + val realAppKey = if (XuqmSDK.isInitialized()) XuqmSDK.appKey else return + val realUserId = XuqmSDK.getUserId() ?: XuqmSDK.deviceId + events.forEach { event -> + val fixed = if (event.appKey == "pending") { + event.copy( + appKey = realAppKey, + userId = realUserId, + user = IssueEvent.UserInfo(id = realUserId), + release = appVersion(), + buildId = buildId(), + ) + } else event + queue().push(fixed) + } } /** 上传上次崩溃落盘的文件(远端配置就绪后由 BugCollectInitProvider 自动调用)。 */