From 7e4de9073aa17f495997ba105800ddde9823767c Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Thu, 9 Nov 2023 19:16:26 -0800 Subject: [PATCH 01/14] Make `releaseName` optional and remove default value --- .../Crash Logging/CrashLoggingDataProvider.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index e3e72287..e67cea74 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -22,9 +22,12 @@ public protocol CrashLoggingDataProvider { /// Default implementations of common protocol properties public extension CrashLoggingDataProvider { - var releaseName: String { - return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String - } + // According to https://docs.sentry.io/platforms/apple/configuration/releases/: + // "If no release name is set, the SDK creates a default combined from CFBundleIdentifier, + // CFBundleShortVersionString, and CFBundleVersion, for example my.project.name@2.3.12+1234" + // + // Clients can set a custom releaseName value if needed + var releaseName: String? = nil var additionalUserData: [String: Any] { return [ : ] From 2c943c88df51be838ae538eda7a9a430bdd60e2d Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Thu, 9 Nov 2023 22:47:40 -0800 Subject: [PATCH 02/14] Don't default to nil --- .../Crash Logging/CrashLoggingDataProvider.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index e67cea74..ee42911f 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -23,11 +23,11 @@ public protocol CrashLoggingDataProvider { public extension CrashLoggingDataProvider { // According to https://docs.sentry.io/platforms/apple/configuration/releases/: - // "If no release name is set, the SDK creates a default combined from CFBundleIdentifier, + // "If no release name is set, the SDK creates a default combined from CFBundleIdentifier, // CFBundleShortVersionString, and CFBundleVersion, for example my.project.name@2.3.12+1234" // // Clients can set a custom releaseName value if needed - var releaseName: String? = nil + var releaseName: String? var additionalUserData: [String: Any] { return [ : ] From 83ec6870d500d47e81ce44e7d08793f65c804a67 Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Thu, 9 Nov 2023 22:56:38 -0800 Subject: [PATCH 03/14] Default to an empty string --- .../Crash Logging/CrashLoggingDataProvider.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index ee42911f..cc2463ca 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -27,7 +27,9 @@ public extension CrashLoggingDataProvider { // CFBundleShortVersionString, and CFBundleVersion, for example my.project.name@2.3.12+1234" // // Clients can set a custom releaseName value if needed - var releaseName: String? + var releaseName: String? { + return "" + } var additionalUserData: [String: Any] { return [ : ] From 56d7372640bc2428e86704aa4071269349d258ff Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Thu, 9 Nov 2023 23:00:26 -0800 Subject: [PATCH 04/14] Default to nil --- .../Remote Logging/Crash Logging/CrashLoggingDataProvider.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index cc2463ca..6fe15927 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -28,7 +28,7 @@ public extension CrashLoggingDataProvider { // // Clients can set a custom releaseName value if needed var releaseName: String? { - return "" + return nil } var additionalUserData: [String: Any] { From 07c5385ef37296eb5db7342e9f37ba86c9f7b26f Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Fri, 10 Nov 2023 22:45:00 -0800 Subject: [PATCH 05/14] Set explicit value for release name --- .../Crash Logging/CrashLoggingDataProvider.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index 6fe15927..6f98f7b7 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -27,8 +27,14 @@ public extension CrashLoggingDataProvider { // CFBundleShortVersionString, and CFBundleVersion, for example my.project.name@2.3.12+1234" // // Clients can set a custom releaseName value if needed - var releaseName: String? { - return nil + var releaseName: String { + let bundleVersion = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] ?? "" + let bundleIdentifer = Bundle.main.infoDictionary?[kCFBundleIdentifierKey as String] ?? "" + let bundleShortVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "" + + // This is the format that Sentry recommends for version numbers. + // See https://docs.sentry.io/platforms/apple/configuration/releases/#bind-the-version + return "\(bundleIdentifier)@\(bundleShortVersion)+\(bundleVersion)" } var additionalUserData: [String: Any] { From efc54eb46a5c2fef48ade46bd27c52dc73ee00b3 Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Fri, 10 Nov 2023 22:49:30 -0800 Subject: [PATCH 06/14] Fix constant name --- .../Remote Logging/Crash Logging/CrashLoggingDataProvider.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index 6f98f7b7..ee233b9f 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -29,7 +29,7 @@ public extension CrashLoggingDataProvider { // Clients can set a custom releaseName value if needed var releaseName: String { let bundleVersion = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] ?? "" - let bundleIdentifer = Bundle.main.infoDictionary?[kCFBundleIdentifierKey as String] ?? "" + let bundleIdentifier = Bundle.main.infoDictionary?[kCFBundleIdentifierKey as String] ?? "" let bundleShortVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "" // This is the format that Sentry recommends for version numbers. From d3bbdba7853bb5ff744fa692ced0ce8ca548c7e2 Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Fri, 10 Nov 2023 22:57:13 -0800 Subject: [PATCH 07/14] Remove unneeded comment --- .../Crash Logging/CrashLoggingDataProvider.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index ee233b9f..4188b1f1 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -22,11 +22,6 @@ public protocol CrashLoggingDataProvider { /// Default implementations of common protocol properties public extension CrashLoggingDataProvider { - // According to https://docs.sentry.io/platforms/apple/configuration/releases/: - // "If no release name is set, the SDK creates a default combined from CFBundleIdentifier, - // CFBundleShortVersionString, and CFBundleVersion, for example my.project.name@2.3.12+1234" - // - // Clients can set a custom releaseName value if needed var releaseName: String { let bundleVersion = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] ?? "" let bundleIdentifier = Bundle.main.infoDictionary?[kCFBundleIdentifierKey as String] ?? "" From 6c0f7a23aab97e36a5ed67eb160fcf63588c660b Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Sat, 11 Nov 2023 00:07:07 -0800 Subject: [PATCH 08/14] Add version numbers to the demo project --- TracksDemo/TracksDemo.xcodeproj/project.pbxproj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/TracksDemo/TracksDemo.xcodeproj/project.pbxproj b/TracksDemo/TracksDemo.xcodeproj/project.pbxproj index 5f670b05..24815b99 100644 --- a/TracksDemo/TracksDemo.xcodeproj/project.pbxproj +++ b/TracksDemo/TracksDemo.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -570,6 +570,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1.0.0.0; GCC_PREFIX_HEADER = TracksDemo/TracksDemo_Prefix.pch; INFOPLIST_FILE = TracksDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; @@ -577,6 +578,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "com.automattic.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; @@ -592,6 +594,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1.0.0.0; GCC_PREFIX_HEADER = TracksDemo/TracksDemo_Prefix.pch; INFOPLIST_FILE = TracksDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; @@ -599,6 +602,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "com.automattic.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; From 50375ae06c6d7a049f35a412e3520a2d9188cb2e Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Sat, 11 Nov 2023 00:12:26 -0800 Subject: [PATCH 09/14] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21ae910b..c6dc487f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,7 @@ _None._ ### Internal Changes -_None._ +- The default `releaseName` value now includes the CFBundleIdentifierKey, CFBundleShortVersionString, and CFBundleVersionKey [#267] --> From d109b5c2a92d6f6d3d6a48d2511b83a86179d34e Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:47:38 -0800 Subject: [PATCH 10/14] Remove demo version numbers --- TracksDemo/TracksDemo.xcodeproj/project.pbxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/TracksDemo/TracksDemo.xcodeproj/project.pbxproj b/TracksDemo/TracksDemo.xcodeproj/project.pbxproj index 24815b99..f5535838 100644 --- a/TracksDemo/TracksDemo.xcodeproj/project.pbxproj +++ b/TracksDemo/TracksDemo.xcodeproj/project.pbxproj @@ -570,7 +570,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1.0.0.0; GCC_PREFIX_HEADER = TracksDemo/TracksDemo_Prefix.pch; INFOPLIST_FILE = TracksDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; @@ -578,7 +577,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "com.automattic.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; @@ -594,7 +592,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1.0.0.0; GCC_PREFIX_HEADER = TracksDemo/TracksDemo_Prefix.pch; INFOPLIST_FILE = TracksDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; @@ -602,7 +599,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "com.automattic.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; From 9587642cfc19305fa757d54fc1241b11ffae2c86 Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:49:22 -0800 Subject: [PATCH 11/14] Revert xcodeproj change --- TracksDemo/TracksDemo.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TracksDemo/TracksDemo.xcodeproj/project.pbxproj b/TracksDemo/TracksDemo.xcodeproj/project.pbxproj index f5535838..5f670b05 100644 --- a/TracksDemo/TracksDemo.xcodeproj/project.pbxproj +++ b/TracksDemo/TracksDemo.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ From 9ed685c561cc81a7eefcfb1da08ca20f9173f5f1 Mon Sep 17 00:00:00 2001 From: Spencer Transier Date: Mon, 13 Nov 2023 17:41:56 -0800 Subject: [PATCH 12/14] Test removing releaseName --- .../Crash Logging/CrashLoggingDataProvider.swift | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index 4188b1f1..742f6931 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -22,16 +22,6 @@ public protocol CrashLoggingDataProvider { /// Default implementations of common protocol properties public extension CrashLoggingDataProvider { - var releaseName: String { - let bundleVersion = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] ?? "" - let bundleIdentifier = Bundle.main.infoDictionary?[kCFBundleIdentifierKey as String] ?? "" - let bundleShortVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "" - - // This is the format that Sentry recommends for version numbers. - // See https://docs.sentry.io/platforms/apple/configuration/releases/#bind-the-version - return "\(bundleIdentifier)@\(bundleShortVersion)+\(bundleVersion)" - } - var additionalUserData: [String: Any] { return [ : ] } From 122cf96eb0fdee05669c110580f6a4fb24e99e0c Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:19:51 -0800 Subject: [PATCH 13/14] Remove releaseName from the protocol --- Sources/Remote Logging/Crash Logging/CrashLogging.swift | 1 - .../Remote Logging/Crash Logging/CrashLoggingDataProvider.swift | 1 - 2 files changed, 2 deletions(-) diff --git a/Sources/Remote Logging/Crash Logging/CrashLogging.swift b/Sources/Remote Logging/Crash Logging/CrashLogging.swift index 1f950a25..db59843c 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLogging.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLogging.swift @@ -56,7 +56,6 @@ public class CrashLogging { options.diagnosticLevel = .error options.environment = self.dataProvider.buildType - options.releaseName = self.dataProvider.releaseName options.enableAutoSessionTracking = self.dataProvider.shouldEnableAutomaticSessionTracking options.enableAppHangTracking = self.dataProvider.enableAppHangTracking options.enableCaptureFailedRequests = self.dataProvider.enableCaptureFailedRequests diff --git a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift index 742f6931..6766856b 100644 --- a/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift +++ b/Sources/Remote Logging/Crash Logging/CrashLoggingDataProvider.swift @@ -8,7 +8,6 @@ public protocol CrashLoggingDataProvider { var sentryDSN: String { get } var userHasOptedOut: Bool { get } var buildType: String { get } - var releaseName: String { get } var currentUser: TracksUser? { get } var additionalUserData: [String: Any] { get } var shouldEnableAutomaticSessionTracking: Bool { get } From b9de73359aa69c10a3385b1539db831ac65d610d Mon Sep 17 00:00:00 2001 From: Spencer Transier <17955542+spencertransier@users.noreply.github.com> Date: Wed, 15 Nov 2023 09:25:06 -0800 Subject: [PATCH 14/14] Update the CHANGELOG from internal change to breaking change --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6dc487f..90a38bd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ When releasing a new version: ### Breaking Changes -_None._ +- Sentry: The default `releaseName` value is now the Sentry default of `package@version+build` (e.g. com.bundle.identifier@1.2+1.2.3.4) instead of only providing the `CFBundleVersionKey` [#267] ### New Features @@ -26,7 +26,7 @@ _None._ ### Internal Changes -- The default `releaseName` value now includes the CFBundleIdentifierKey, CFBundleShortVersionString, and CFBundleVersionKey [#267] +_None._ -->