Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>

This commit is contained in:
Matt Bruce 2026-02-10 22:03:21 -06:00
parent 5fa0a2e4eb
commit f230aeb0d9
5 changed files with 19 additions and 14 deletions

View File

@ -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;

View File

@ -7,17 +7,17 @@
<key>BusinessCard.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>2</integer>
</dict>
<key>BusinessCardClip.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
<integer>3</integer>
</dict>
<key>BusinessCardWatch Watch App.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
<integer>1</integer>
</dict>
</dict>
</dict>

View File

@ -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 {

View File

@ -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)

View File

@ -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
)
}
}