// // YXTrackingSQLiteManager.swift // YXTrackingSDK // // Created by 1234 on 2026/2/6. // import UIKit import SQLite3 class YXTrackingSQLiteManager: NSObject { static let shared = YXTrackingSQLiteManager() /// 文件路径管理 private let fileManager = FileManager.default /// 文档目录路径 var documentsDirectory: URL { fileManager.urls(for: .documentDirectory, in: .userDomainMask).first! } /// 文件路径 var fileURL: URL { documentsDirectory.appendingPathComponent("tracking.json") } /// JSON编码器 let encoder = JSONEncoder() /// JSON解码器 let decoder = JSONDecoder() /// 添加跟踪数据到文件 class func addTrackingData(data: EventRequestResult) { var trackingData: [EventRequestResult] = [] trackingData.append(contentsOf: readTrackingData()) trackingData.append(data) let data = try! YXTrackingSQLiteManager.shared.encoder.encode(trackingData) try! data.write(to: YXTrackingSQLiteManager.shared.fileURL, options: .atomic) } /// 读取跟踪数据 class func readTrackingData() -> [EventRequestResult] { var trackingData: [EventRequestResult] = [] /// 判断fileURL是否存在 guard YXTrackingSQLiteManager.shared.fileManager.fileExists(atPath: YXTrackingSQLiteManager.shared.fileURL.path) else { return trackingData } let data = try! Data(contentsOf: YXTrackingSQLiteManager.shared.fileURL) let array = try! YXTrackingSQLiteManager.shared.decoder.decode([EventRequestResult].self, from: data) trackingData.append(contentsOf: array) return trackingData } /// 删除跟踪数据 class func deleteTrackingData() { guard YXTrackingSQLiteManager.shared.fileManager.fileExists(atPath: YXTrackingSQLiteManager.shared.fileURL.path) else { YXTracking.shared.debug(message: "SDK tracking data file not exist!") return } try! YXTrackingSQLiteManager.shared.fileManager.removeItem(at: YXTrackingSQLiteManager.shared.fileURL) YXTracking.shared.debug(message: "SDK tracking data file deleted!") } /// 获取数据库缓存条数 class func getTrackingDataCount() -> Int { var trackingData: [EventRequestResult] = [] trackingData.append(contentsOf: readTrackingData()) return trackingData.count } }