Skip to content

Commit b6f8376

Browse files
committed
feat: allow setting debug/release explicitly from options
1 parent dc18b28 commit b6f8376

File tree

4 files changed

+39
-2
lines changed

4 files changed

+39
-2
lines changed

Examples/HelloWorldMac/HelloWorldMacApp.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ import Aptabase
44
@main
55
struct HelloWorldMacApp: App {
66
init() {
7-
Aptabase.shared.initialize(appKey: "A-DEV-0000000000");
7+
Aptabase.shared.initialize(
8+
appKey: "A-DEV-0000000000",
9+
// optionally track events as release, avoiding the default environment variable
10+
options: InitOptions(trackingMode: .asRelease)
11+
)
812
}
913

1014
var body: some Scene {

Sources/Aptabase/Aptabase.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public class Aptabase: NSObject {
3333
return
3434
}
3535

36+
if let trackingMode = options?.trackingMode, trackingMode != .readFromEnvironment {
37+
env.isDebug = trackingMode.isDebug
38+
}
39+
3640
client = AptabaseClient(appKey: appKey, baseUrl: baseUrl, env: env, options: options)
3741

3842
let notifications = NotificationCenter.default

Sources/Aptabase/InitOptions.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ import Foundation
44
public final class InitOptions: NSObject {
55
let host: String?
66
let flushInterval: Double?
7+
let trackingMode: TrackingMode
78

89
/// - Parameters:
910
/// - host: The custom host to use. If none provided will use Aptabase's servers.
1011
/// - flushInterval: Defines a custom interval for flushing events.
11-
@objc public init(host: String? = nil, flushInterval: NSNumber? = nil) {
12+
/// - trackingMode: Use TrackingMode.asDebug for debug events, TrackingMode.asRelease for release events, or TrackingMode.readFromEnvironment to use the environment setting. Defaults to .readFromEnvironment if omitted.
13+
@objc public init(host: String? = nil, flushInterval: NSNumber? = nil, trackingMode: TrackingMode = .readFromEnvironment) {
1214
self.host = host
1315
self.flushInterval = flushInterval?.doubleValue
16+
self.trackingMode = trackingMode
1417
}
1518
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import Foundation
2+
3+
/// Represents the tracking mode (release/debug) for the client.
4+
@objc public class TrackingMode: NSObject {
5+
@objc public static let asDebug = TrackingMode(rawValue: 0)
6+
@objc public static let asRelease = TrackingMode(rawValue: 1)
7+
@objc public static let readFromEnvironment = TrackingMode(rawValue: 2)
8+
9+
private let rawValue: Int
10+
11+
private init(rawValue: Int) {
12+
self.rawValue = rawValue
13+
}
14+
15+
@objc public var isDebug: Bool {
16+
return self.rawValue == 0
17+
}
18+
19+
@objc public var isRelease: Bool {
20+
return self.rawValue == 1
21+
}
22+
23+
@objc public var isReadFromEnvironment: Bool {
24+
return self.rawValue == 2
25+
}
26+
}

0 commit comments

Comments
 (0)