diff --git a/Sources/Aptabase/AptabaseClient.swift b/Sources/Aptabase/AptabaseClient.swift index 81236bf..f451eb3 100644 --- a/Sources/Aptabase/AptabaseClient.swift +++ b/Sources/Aptabase/AptabaseClient.swift @@ -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) diff --git a/Sources/Aptabase/EnvironmentInfo.swift b/Sources/Aptabase/EnvironmentInfo.swift index 06a1922..0c854ef 100644 --- a/Sources/Aptabase/EnvironmentInfo.swift +++ b/Sources/Aptabase/EnvironmentInfo.swift @@ -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 "" + } + } } diff --git a/Sources/Aptabase/EventDispatcher.swift b/Sources/Aptabase/EventDispatcher.swift index e308bad..11cfb69 100644 --- a/Sources/Aptabase/EventDispatcher.swift +++ b/Sources/Aptabase/EventDispatcher.swift @@ -15,6 +15,7 @@ struct Event: Encodable { var appVersion: String var appBuildNumber: String var sdkVersion: String + var deviceModel: String } } diff --git a/Tests/AptabaseTests/EventDispatcherTests.swift b/Tests/AptabaseTests/EventDispatcherTests.swift index 2608a05..511b4be 100644 --- a/Tests/AptabaseTests/EventDispatcherTests.swift +++ b/Tests/AptabaseTests/EventDispatcherTests.swift @@ -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) ) } }