58 lines
2.1 KiB
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
|
|
]
|
|
}
|
|
}
|