diff --git a/Sources/XuqmBugCollectSDK/BugCollectSDK.swift b/Sources/XuqmBugCollectSDK/BugCollectSDK.swift index 115ea31..180013f 100644 --- a/Sources/XuqmBugCollectSDK/BugCollectSDK.swift +++ b/Sources/XuqmBugCollectSDK/BugCollectSDK.swift @@ -153,17 +153,19 @@ public final class BugCollectSDK { guard logLevel.rawValue <= LogLevel.warn.rawValue else { return } guard isReady() else { return } + let crumbs = breadcrumbLock.lockAndRun { breadcrumbBuffer } let issueEvent = IssueEvent( level: "warning", platform: "ios", fingerprint: Fingerprint.compute(type: "Warning", message: message, stacktrace: ""), appKey: XuqmSDK.shared.requireConfig().appKey, exception: IssueEvent.ExceptionInfo(type: "Warning", value: message), - breadcrumbs: [], + breadcrumbs: crumbs, release: appVersion(), environment: environment, userId: XuqmSDK.shared.userId ?? XuqmSDK.shared.deviceId, user: IssueEvent.UserInfo(id: XuqmSDK.shared.userId ?? XuqmSDK.shared.deviceId), + device: buildDeviceInfo(), tags: tags ) queue?.push(issueEvent) @@ -249,6 +251,16 @@ public final class BugCollectSDK { let device = UIDevice.current let processInfo = ProcessInfo.processInfo + // 使用 os_proc_available_memory() 获取可用内存(如果可用) + let freeMemoryMb: Int + if #available(iOS 13.0, *) { + let availableMemory = os_proc_available_memory() + freeMemoryMb = Int(availableMemory / 1024 / 1024) + } else { + // Fallback: 使用物理内存(不准确但有值) + freeMemoryMb = Int(processInfo.physicalMemory / 1024 / 1024) + } + return IssueEvent.DeviceInfo( model: device.model, manufacturer: "Apple", @@ -257,7 +269,7 @@ public final class BugCollectSDK { locale: Locale.current.identifier, timezone: TimeZone.current.identifier, isEmulator: isSimulator(), - freeMemoryMb: Int(processInfo.physicalMemory / 1024 / 1024), + freeMemoryMb: freeMemoryMb, buildType: isDebug() ? "debug" : "release" ) }