Support Device Model (#21)

* Support Device Model

Add device model information as part of environment info and system
properties.

* Check that uname returns 0
This commit is contained in:
Aron Manucheri
2024-03-22 17:45:33 +01:00
committed by GitHub
parent 42c2175032
commit 9d67448001
4 changed files with 27 additions and 4 deletions

View File

@@ -36,7 +36,8 @@ class AptabaseClient {
osVersion: env.osVersion,
appVersion: env.appVersion,
appBuildNumber: env.appBuildNumber,
sdkVersion: AptabaseClient.sdkVersion
sdkVersion: AptabaseClient.sdkVersion,
deviceModel: env.deviceModel
),
props: props)
dispatcher.enqueue(evt)

View File

@@ -17,6 +17,7 @@ struct EnvironmentInfo {
var locale = ""
var appVersion = ""
var appBuildNumber = ""
var deviceModel = ""
static func current() -> EnvironmentInfo {
let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
@@ -28,7 +29,8 @@ struct EnvironmentInfo {
osVersion: osVersion,
locale: Locale.current.languageCode ?? "",
appVersion: appVersion ?? "",
appBuildNumber: appBuildNumber ?? ""
appBuildNumber: appBuildNumber ?? "",
deviceModel: deviceModel
)
}
@@ -71,4 +73,21 @@ struct EnvironmentInfo {
""
#endif
}
private static var deviceModel: String {
if let simulatorModelIdentifier = ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] {
return simulatorModelIdentifier
} else {
var systemInfo = utsname()
if uname(&systemInfo) == 0 {
let identifier = withUnsafePointer(to: &systemInfo.machine) { ptr in
ptr.withMemoryRebound(to: CChar.self, capacity: 1) { machinePtr in
String(cString: machinePtr)
}
}
return identifier
}
return ""
}
}
}

View File

@@ -15,6 +15,7 @@ struct Event: Encodable {
var appVersion: String
var appBuildNumber: String
var sdkVersion: String
var deviceModel: String
}
}

View File

@@ -21,7 +21,8 @@ final class EventDispatcherTests: XCTestCase {
isDebug: true,
osName: "iOS",
osVersion: "17.0",
appVersion: "1.0.0"
appVersion: "1.0.0",
deviceModel: "iPhone16,2"
)
override func setUp() {
@@ -90,7 +91,8 @@ final class EventDispatcherTests: XCTestCase {
osVersion: env.osVersion,
appVersion: env.appVersion,
appBuildNumber: env.appBuildNumber,
sdkVersion: "aptabase-swift@0.0.0")
sdkVersion: "aptabase-swift@0.0.0",
deviceModel: env.deviceModel)
)
}
}