From f230aeb0d9e46444acdc5cf5f0f7327cd34b5c2b Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 10 Feb 2026 22:03:21 -0600 Subject: [PATCH] Signed-off-by: Matt Bruce --- BusinessCard.xcodeproj/project.pbxproj | 14 ++++++++------ .../xcschemes/xcschememanagement.plist | 6 +++--- .../Services/BundleAppMetadataProvider.swift | 2 +- BusinessCard/Views/OnboardingView.swift | 3 ++- BusinessCard/Views/SettingsView.swift | 8 +++++--- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/BusinessCard.xcodeproj/project.pbxproj b/BusinessCard.xcodeproj/project.pbxproj index b88fc36..7251f64 100644 --- a/BusinessCard.xcodeproj/project.pbxproj +++ b/BusinessCard.xcodeproj/project.pbxproj @@ -626,9 +626,10 @@ ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = BusinessCard/Info.plist; - INFOPLIST_KEY_NSCameraUsageDescription = "BusinessCard uses your camera to scan QR cards and take profile, cover, or logo photos for your card."; - INFOPLIST_KEY_NSContactsUsageDescription = "BusinessCard can save shared cards to your Apple Contacts when you choose to add them."; - INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "BusinessCard uses your photo library so you can add profile, cover, and logo images to your card."; + INFOPLIST_KEY_CFBundleDisplayName = "$(PRODUCT_NAME)"; + INFOPLIST_KEY_NSCameraUsageDescription = "$(PRODUCT_NAME) uses your camera to scan QR cards and take profile, cover, or logo photos for your card."; + INFOPLIST_KEY_NSContactsUsageDescription = "$(PRODUCT_NAME) can save shared cards to your Apple Contacts when you choose to add them."; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "$(PRODUCT_NAME) uses your photo library so you can add profile, cover, and logo images to your card."; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_BackgroundColor = LaunchBackground; @@ -663,9 +664,10 @@ ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = BusinessCard/Info.plist; - INFOPLIST_KEY_NSCameraUsageDescription = "BusinessCard uses your camera to scan QR cards and take profile, cover, or logo photos for your card."; - INFOPLIST_KEY_NSContactsUsageDescription = "BusinessCard can save shared cards to your Apple Contacts when you choose to add them."; - INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "BusinessCard uses your photo library so you can add profile, cover, and logo images to your card."; + INFOPLIST_KEY_CFBundleDisplayName = "$(PRODUCT_NAME)"; + INFOPLIST_KEY_NSCameraUsageDescription = "$(PRODUCT_NAME) uses your camera to scan QR cards and take profile, cover, or logo photos for your card."; + INFOPLIST_KEY_NSContactsUsageDescription = "$(PRODUCT_NAME) can save shared cards to your Apple Contacts when you choose to add them."; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "$(PRODUCT_NAME) uses your photo library so you can add profile, cover, and logo images to your card."; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_BackgroundColor = LaunchBackground; diff --git a/BusinessCard.xcodeproj/xcuserdata/mattbruce.xcuserdatad/xcschemes/xcschememanagement.plist b/BusinessCard.xcodeproj/xcuserdata/mattbruce.xcuserdatad/xcschemes/xcschememanagement.plist index 849d755..43dc255 100644 --- a/BusinessCard.xcodeproj/xcuserdata/mattbruce.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/BusinessCard.xcodeproj/xcuserdata/mattbruce.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,17 +7,17 @@ BusinessCard.xcscheme_^#shared#^_ orderHint - 1 + 2 BusinessCardClip.xcscheme_^#shared#^_ orderHint - 2 + 3 BusinessCardWatch Watch App.xcscheme_^#shared#^_ orderHint - 3 + 1 diff --git a/BusinessCard/Services/BundleAppMetadataProvider.swift b/BusinessCard/Services/BundleAppMetadataProvider.swift index 4dfc310..7ae486c 100644 --- a/BusinessCard/Services/BundleAppMetadataProvider.swift +++ b/BusinessCard/Services/BundleAppMetadataProvider.swift @@ -10,7 +10,7 @@ struct BundleAppMetadataProvider: AppMetadataProviding { var appName: String { bundle.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? bundle.object(forInfoDictionaryKey: "CFBundleName") as? String - ?? "BusinessCard" + ?? "App" } var appVersion: String { diff --git a/BusinessCard/Views/OnboardingView.swift b/BusinessCard/Views/OnboardingView.swift index e26d348..f29794c 100644 --- a/BusinessCard/Views/OnboardingView.swift +++ b/BusinessCard/Views/OnboardingView.swift @@ -13,6 +13,7 @@ struct OnboardingView: View { @State private var contactsStatus: OnboardingPermissionStatus = .notRequested private let totalSteps = 3 + private let appName = BundleAppMetadataProvider().appName var body: some View { NavigationStack { @@ -75,7 +76,7 @@ struct OnboardingView: View { .foregroundStyle(Color.Accent.red) VStack(alignment: .leading, spacing: Design.Spacing.small) { - Text("Welcome to BusinessCard") + Text("Welcome to \(appName)") .typography(.title) .bold() .foregroundStyle(Color.Text.primary) diff --git a/BusinessCard/Views/SettingsView.swift b/BusinessCard/Views/SettingsView.swift index c2bb2bc..484a225 100644 --- a/BusinessCard/Views/SettingsView.swift +++ b/BusinessCard/Views/SettingsView.swift @@ -15,6 +15,7 @@ struct SettingsView: View { @Environment(\.openURL) private var openURL @State private var settingsState = SettingsState() @State private var showingResetOnboardingConfirmation = false + private let appName = BundleAppMetadataProvider().appName var body: some View { NavigationStack { @@ -213,7 +214,8 @@ struct SettingsView: View { title: "Send Feedback", subtitle: "Email support" ) { - guard let url = URL(string: "mailto:info@topdoglabs.com?subject=BusinessCard%20Support") else { return } + let subject = "\(appName) Support".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "Support" + guard let url = URL(string: "mailto:info@topdoglabs.com?subject=\(subject)") else { return } openURL(url) } @@ -347,7 +349,7 @@ struct SettingsView: View { subtitle: "Generate and save app icon to Files", backgroundColor: .clear ) { - IconGeneratorView(config: .businessCard, appName: "BusinessCard") + IconGeneratorView(config: .businessCard, appName: appName) } SettingsDivider(color: AppBorder.subtle) @@ -360,7 +362,7 @@ struct SettingsView: View { BrandingPreviewView( iconConfig: .businessCard, launchConfig: .businessCard, - appName: "BusinessCard" + appName: appName ) } }