fix: ITMS-90129 — DisplayName Cards → Cardecky + Build 2

Apple lehnte Build 0.1.0(1) ab mit ITMS-90129: "The bundle uses a
bundle name or display name that is already taken." Im App-Store
gibt es schon Apps mit dem DisplayName "Cards" (u.a. Apples eigene
Grußkarten-App war so benannt). App-Store-Connect-App heißt sowieso
"Cardecky" — Brand-Konsistenz: DisplayName durchgehend "Cardecky".

Geändert:
- project.yml Main-App: CFBundleDisplayName Cards → Cardecky,
  CFBundleVersion 1 → 2 (Apple lehnt doppelte Build-Nummern ab)
- project.yml Widget: CFBundleDisplayName Cards Widget → Cardecky Widget,
  INFOPLIST_KEY_CFBundleDisplayName analog
- project.yml Share-Extension: CFBundleVersion 1 → 2
- LoginView Heading: "Cards" → "Cardecky"
- NotificationManager.content.title: "Cards" → "Cardecky"
- UITest: erwartet "Cardecky" statt "Cards"

Archive verifiziert: CFBundleDisplayName=Cardecky, CFBundleVersion=2,
ARCHIVE SUCCEEDED. Nach erneutem Upload via Xcode Organizer sollte
TestFlight den Build akzeptieren.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-13 15:05:33 +02:00
parent e24e0e6825
commit 2eb7f61f9c
4 changed files with 11 additions and 11 deletions

View file

@ -67,7 +67,7 @@ final class NotificationManager {
guard remindersEnabled, authorization == .authorized else { return }
let content = UNMutableNotificationContent()
content.title = "Cards"
content.title = "Cardecky"
content.body = "Ein paar Karten warten auf dich."
content.sound = .default

View file

@ -10,7 +10,7 @@ struct LoginView: View {
ZStack {
CardsTheme.background.ignoresSafeArea()
VStack(spacing: 24) {
Text("Cards")
Text("Cardecky")
.font(.system(size: 48, weight: .bold))
.foregroundStyle(CardsTheme.primary)
Text("Karteikarten des Vereins mana e.V.")

View file

@ -4,11 +4,11 @@ final class CardsNativeUITests: XCTestCase {
func testAppLaunches() throws {
let app = XCUIApplication()
app.launch()
// App ist gestartet, sobald entweder das LoginView "Cards"
// App ist gestartet, sobald entweder das LoginView "Cardecky"
// oder das DeckListView mit "Decks" sichtbar ist. Welcher
// von beiden hängt davon ab, ob der Simulator-Keychain noch
// eine Session hält.
let loginTitle = app.staticTexts["Cards"]
let loginTitle = app.staticTexts["Cardecky"]
let decksTitle = app.staticTexts["Decks"]
let exploreTab = app.staticTexts["Entdecken"]
@ -21,6 +21,6 @@ final class CardsNativeUITests: XCTestCase {
}
usleep(100_000)
}
XCTAssertTrue(found, "Erwartete App-Surface (Cards | Decks | Entdecken) erschien nicht innerhalb 5 s")
XCTAssertTrue(found, "Erwartete App-Surface (Cardecky | Decks | Entdecken) erschien nicht innerhalb 5 s")
}
}

View file

@ -55,9 +55,9 @@ targets:
path: Sources/Resources/Info.plist
properties:
CFBundleShortVersionString: "0.1.0"
CFBundleVersion: "1"
CFBundleVersion: "2"
CFBundleDevelopmentRegion: de
CFBundleDisplayName: Cards
CFBundleDisplayName: Cardecky
LSApplicationCategoryType: "public.app-category.education"
UILaunchScreen: {}
UISupportedInterfaceOrientations:
@ -111,7 +111,7 @@ targets:
properties:
CFBundleDisplayName: Als Karte speichern
CFBundleShortVersionString: "0.1.0"
CFBundleVersion: "1"
CFBundleVersion: "2"
NSExtension:
NSExtensionPointIdentifier: com.apple.share-services
NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).ShareViewController
@ -142,9 +142,9 @@ targets:
info:
path: Widgets/CardsWidget/Resources/Info.plist
properties:
CFBundleDisplayName: Cards Widget
CFBundleDisplayName: Cardecky Widget
CFBundleShortVersionString: "0.1.0"
CFBundleVersion: "1"
CFBundleVersion: "2"
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension
entitlements:
@ -160,7 +160,7 @@ targets:
PRODUCT_BUNDLE_IDENTIFIER: ev.mana.cardecky.widget
CODE_SIGN_STYLE: Automatic
SKIP_INSTALL: "YES"
INFOPLIST_KEY_CFBundleDisplayName: Cards Widget
INFOPLIST_KEY_CFBundleDisplayName: Cardecky Widget
CardsNativeTests:
type: bundle.unit-test