diff --git a/Sources/SentryCrash/Recording/Monitors/SentryCrashMonitor_System.m b/Sources/SentryCrash/Recording/Monitors/SentryCrashMonitor_System.m index 7f6bb30fa9..c1d43c9389 100644 --- a/Sources/SentryCrash/Recording/Monitors/SentryCrashMonitor_System.m +++ b/Sources/SentryCrash/Recording/Monitors/SentryCrashMonitor_System.m @@ -469,8 +469,11 @@ return "debug"; } SentryMobileProvisionParser *parser = [[SentryMobileProvisionParser alloc] init]; + if ([[parser apsEnvironment] isEqualToString:@"development"] && [parser getTaskAllow]) { + return "debug"; + } if ([parser hasEmbeddedMobileProvisionProfile]) { - return [parser mobileProvisionProfileProvisionsAllDevices] ? "enterprise" : "adhoc"; + return [parser provisionsAllDevices] ? "enterprise" : "adhoc"; } if (isTestBuild()) { return "test"; diff --git a/Sources/Swift/Helper/SentryMobileProvisionParser.swift b/Sources/Swift/Helper/SentryMobileProvisionParser.swift index dc3e4e25b5..3cfa0bfbee 100644 --- a/Sources/Swift/Helper/SentryMobileProvisionParser.swift +++ b/Sources/Swift/Helper/SentryMobileProvisionParser.swift @@ -1,13 +1,11 @@ @objc @_spi(Private) -public class SentryMobileProvisionParser: NSObject { - private var provisionsAllDevices: Bool = false - private var embeddedProfilePath: String? - + +public final class SentryMobileProvisionParser: NSObject { // If the profile provisions all devices, it indicates Enterprise distribution - @objc - public var mobileProvisionProfileProvisionsAllDevices: Bool { - return provisionsAllDevices - } + @objc public private(set) var provisionsAllDevices: Bool = false + private var embeddedProfilePath: String? + @objc public private(set) var apsEnvironment: String? + @objc public private(set) var getTaskAllow: Bool = false // This convenience initializer exists so we can use it from ObjC. // Functions with Optional parameters (used for testing) are not available to ObjC @@ -58,6 +56,9 @@ public class SentryMobileProvisionParser: NSObject { let dict = obj as? [String: Any] else { return } + let entitlements = (dict["Entitlements"] as? Dictionary) + getTaskAllow = entitlements?["get-task-allow"] as? Int == 1 + apsEnvironment = entitlements?["aps-environment"] as? String provisionsAllDevices = dict["ProvisionsAllDevices"] as? Bool ?? false } }