iOS-App heisst jetzt Vorrania

Web, Backend, Deploy und Docs trugen den neuen Namen bereits - iOS war der
letzte Rest. Umgestellt sind Projekt- und Targetname, die Bundle-ID
(com.scarriffle.vorrania), das URL-Schema, die Schnellaktionen, der
Keychain-Service und die Anleitungen. ProjectGoodApp.swift heisst
VorraniaApp.swift.

Zwei Nebenwirkungen, die sich nicht vermeiden lassen: Die neue Bundle-ID
macht die App fuer iOS zu einer anderen App. Die alte bleibt auf dem
Home-Bildschirm liegen und muss von Hand weg, und das Token im Keychain
haengt an der alten Bundle-ID - die neue kommt nicht daran, also einmal neu
anmelden. Wer sich Kurzbefehle mit projectgood://checkin angelegt hat, traegt
dort vorrania://checkin ein.

Das Xcode-Projekt ist ab jetzt eingecheckt statt ignoriert, damit man ohne
XcodeGen bauen kann; nur xcuserdata und DerivedData bleiben draussen.
Gegengeprueft mit einem Simulator-Build: Bundle-ID, Anzeigename, Schema und
Schnellaktionen stehen im fertigen Bundle richtig drin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-23 17:35:45 +02:00
parent 5171a5ecab
commit 62a1e7c469
9 changed files with 401 additions and 21 deletions

View File

@@ -63,7 +63,7 @@
<array>
<dict>
<key>UIApplicationShortcutItemType</key>
<string>com.scarriffle.projectgood.checkin</string>
<string>com.scarriffle.vorrania.checkin</string>
<key>UIApplicationShortcutItemTitle</key>
<string>Einlagern</string>
<key>UIApplicationShortcutItemIconType</key>
@@ -71,7 +71,7 @@
</dict>
<dict>
<key>UIApplicationShortcutItemType</key>
<string>com.scarriffle.projectgood.checkout</string>
<string>com.scarriffle.vorrania.checkout</string>
<key>UIApplicationShortcutItemTitle</key>
<string>Auslagern</string>
<key>UIApplicationShortcutItemIconType</key>
@@ -79,15 +79,15 @@
</dict>
</array>
<!-- projectgood://checkin bzw. projectgood://checkout -->
<!-- vorrania://checkin bzw. vorrania://checkout -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.scarriffle.projectgood</string>
<string>com.scarriffle.vorrania</string>
<key>CFBundleURLSchemes</key>
<array>
<string>projectgood</string>
<string>vorrania</string>
</array>
</dict>
</array>

View File

@@ -75,7 +75,7 @@ final class Session: ObservableObject {
/// Minimaler Keychain-Zugriff für ein einzelnes Token.
enum Keychain {
private static let service = "com.scarriffle.projectgood"
private static let service = "com.scarriffle.vorrania"
static func write(_ value: String, account: String) {
delete(account: account)

View File

@@ -15,16 +15,16 @@ final class Router: ObservableObject {
if type.hasSuffix("checkout") { route = .checkout }
}
/// projectgood://checkin bzw. projectgood://checkout
/// vorrania://checkin bzw. vorrania://checkout
func handle(url: URL) {
guard url.scheme == "projectgood" else { return }
guard url.scheme == "vorrania" else { return }
let target = (url.host ?? url.path.replacingOccurrences(of: "/", with: "")).lowercased()
if let route = Route(rawValue: target) { self.route = route }
}
}
@main
struct ProjectGoodApp: App {
struct VorraniaApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
@StateObject private var session = Session.shared
@StateObject private var router = Router()
@@ -52,7 +52,7 @@ struct ProjectGoodApp: App {
/// Nimmt Home-Screen-Quick-Actions entgegen (auch beim Kaltstart).
final class AppDelegate: NSObject, UIApplicationDelegate {
static let shortcutNotification = Notification.Name("ProjectGoodShortcut")
static let shortcutNotification = Notification.Name("VorraniaShortcut")
static var pendingShortcut: String?
func application(_ application: UIApplication,