FusionAds-iOS/FusionAds/Classes/fusion/utils/log/SystemProperties.swift

58 lines
2.1 KiB
Swift

// SystemProperties.swift
// System property utilities
// Corresponds to SystemProperties.kt in Android implementation
import Foundation
import UIKit
public class SystemProperties {
private static let TAG = "SystemProperties"
// Read system property from UserDefaults
public static func read(propName: String) -> String {
let value = UserDefaults.standard.string(forKey: propName) ?? ""
Logger.i(tag: TAG, message: "read System Property: \(propName)=\(value)")
return value
}
// Write system property to UserDefaults
public static func write(propName: String, value: String) {
UserDefaults.standard.set(value, forKey: propName)
UserDefaults.standard.synchronize()
Logger.i(tag: TAG, message: "write System Property: \(propName)=\(value)")
}
// Get device information
public static func getDeviceInfo() -> [String: String] {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8, value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
return [
"model": identifier,
"os_version": UIDevice.current.systemVersion,
"device_name": UIDevice.current.name,
"device_model": UIDevice.current.model,
"system_name": UIDevice.current.systemName
]
}
// Get app information
public static func getAppInfo() -> [String: String] {
let bundle = Bundle.main
let appVersion = bundle.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Unknown"
let buildNumber = bundle.infoDictionary?["CFBundleVersion"] as? String ?? "Unknown"
let bundleId = bundle.bundleIdentifier ?? "Unknown"
return [
"app_version": appVersion,
"build_number": buildNumber,
"bundle_id": bundleId
]
}
}