import Foundation /// Centralized identifiers for the App Clip. /// Reads from Info.plist which gets values from xcconfig at build time. /// /// The source of truth is `BusinessCard/Configuration/Base.xcconfig`. /// The App Clip inherits these values through its own xcconfig. enum ClipIdentifiers { /// CloudKit container identifier. /// Must match the main app's container to access shared cards. static let cloudKitContainerIdentifier: String = { Bundle.main.object(forInfoDictionaryKey: "CloudKitContainerIdentifier") as? String ?? "iCloud.$(COMPANY_IDENTIFIER).$(BUNDLE_ID_NAME)" }() /// App Clip domain for URL handling. static let appClipDomain: String = { Bundle.main.object(forInfoDictionaryKey: "AppClipDomain") as? String ?? "topdoglabs.com" }() /// Bundle identifier of the App Clip. static var bundleIdentifier: String { Bundle.main.bundleIdentifier ?? "$(APPCLIP_BUNDLE_IDENTIFIER)" } /// Parent app bundle identifier. static var parentBundleIdentifier: String { // Remove ".Clip" suffix to get parent bundle ID let clipSuffix = ".Clip" if bundleIdentifier.hasSuffix(clipSuffix) { return String(bundleIdentifier.dropLast(clipSuffix.count)) } return bundleIdentifier } }