76 lines
2.5 KiB
Swift
76 lines
2.5 KiB
Swift
//
|
|
// 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
|
|
}
|
|
|
|
}
|