Ziel
Die App soll monetarisierungstechnisch vorbereitet werden, ohne aktuell eine harte Paywall einzuführen. Nutzer:innen sollen eine Subscription sehen/aktivieren können, die für kurze Zeit kostenlos ist. Später soll derselbe Flow ohne größere App-Änderungen auf kostenpflichtig umgestellt werden können.
Grundprinzip
- Aktuell: App bleibt faktisch gratis nutzbar.
- Einführung: Subscription wird vorbereitet und sichtbar gemacht.
- Kommunikation: „Für kurze Zeit gratis“ / „Einführungsvorteil“.
- Später: Preis kann in App Store Connect / Remote Config aktiviert oder erhöht werden.
- Keine aggressive Paywall, sondern ruhiger, vertrauenswürdiger Symi-Stil.
Produktanforderungen
1. Subscription-Modell vorbereiten
- StoreKit 2 verwenden.
- Eine Subscription-Gruppe für Symi anlegen.
- Mindestens ein Produkt vorbereiten, z. B.:
symi_plus_monthly
- optional später:
symi_plus_yearly
- Product IDs zentral als Konstanten definieren.
- Kaufstatus appweit verfügbar machen.
- Restore Purchases unterstützen.
- Graceful Fallback, falls StoreKit-Produkte nicht geladen werden können.
2. Aktuell gratis nutzbar halten
- Keine bestehenden Kernfunktionen blockieren.
- Subscription darf aktuell keinen harten Feature-Lock verursachen.
- Optional:
isPremiumEntitled kann intern schon existieren, aber Features bleiben bis zur späteren Aktivierung offen.
- Vorbereitung für spätere Premium-Gates über Feature Flags.
3. „Für kurze Zeit gratis“-Hinweis
In der App soll klar, aber dezent kommuniziert werden:
Beispieltexte:
- „Symi ist aktuell für kurze Zeit kostenlos.“
- „Aktiviere Symi Plus jetzt kostenlos und sichere dir den Einführungsvorteil.“
- „Später können ausgewählte Premium-Funktionen kostenpflichtig werden.“
- „Du kannst Käufe jederzeit wiederherstellen.“
Ton: ruhig, ehrlich, nicht manipulativ.
4. Subscription-/Paywall-Screen
Neuen Screen erstellen, z. B. SubscriptionView oder SymiPlusView.
Inhalt:
- Headline: „Symi Plus“
- Subline: „Für kurze Zeit kostenlos“
- Kurze Benefit-Liste, z. B.:
- Professionelle PDF-Berichte vorbereiten
- Erweiterte Insights
- Mehr Export- und Analyseoptionen
- Symi langfristig unterstützen
- Primärer Button:
- Wenn Produkt gratis/Intro aktiv: „Kostenlos aktivieren“
- Sonst: Preis aus StoreKit anzeigen, z. B. „Für 2,99 €/Monat starten“
- Sekundäre Aktion: „Käufe wiederherstellen“
- Link/Buttons für Datenschutz & Nutzungsbedingungen, falls noch nicht vorhanden.
Design:
- Symi Design System verwenden.
- Background
#F6F4EF
- Primary Petrol
#0F3D3E
- Sage
#8ECDB8
- Coral nur sparsam als Akzent.
- Keine aggressive Verkaufsoptik.
5. App Store / StoreKit-Konfiguration
- StoreKit Configuration File für lokale Entwicklung anlegen.
- Subscription lokal testbar machen.
- Sandbox-Käufe testen.
- App Store Connect Produktdaten später mit denselben IDs anlegen.
- Lokalisierte Produkttexte Deutsch vorbereiten.
6. Architektur
Vorschlag:
SubscriptionService / PurchaseManager als @MainActor Observable StoreKit-2-Service.
- Lädt Produkte.
- Führt Käufe aus.
- Beobachtet Transaction Updates.
- Ermittelt aktive Entitlements.
- Persistiert keinen unsicheren Kaufstatus als alleinige Wahrheit.
Beispielstruktur:
@MainActor
final class PurchaseManager: ObservableObject {
@Published private(set) var products: [Product] = []
@Published private(set) var purchasedProductIDs: Set<String> = []
@Published private(set) var isLoading = false
@Published private(set) var errorMessage: String?
func loadProducts() async { }
func purchase(_ product: Product) async { }
func restorePurchases() async { }
func updatePurchasedProducts() async { }
}
7. Feature Flags für spätere Verteuerung / Premium-Aktivierung
Einführen:
monetizationEnabled
premiumFeaturesLocked
showIntroFreeSubscriptionBanner
subscriptionPriceIncreaseMessagingEnabled
Aktuell:
monetizationEnabled = true
premiumFeaturesLocked = false
showIntroFreeSubscriptionBanner = true
Später:
premiumFeaturesLocked = true
- Preis/Angebot über StoreKit/App Store Connect ändern.
8. Einstiegspunkte in der App
Subscription-Hinweis dezent platzieren:
- Einstellungen: eigener Bereich „Symi Plus“
- Optional Startseite: kleine Card/Banner „Für kurze Zeit gratis“
- PDF Export / Insights: später als natürlicher Premium-Kontext nutzbar
Wichtig: Aktuell keine störende Modal-Paywall beim App-Start.
9. Rechtliches / Review-Sicherheit
- Keine irreführenden Aussagen wie „für immer gratis“, wenn später Preisänderungen geplant sind.
- Klarstellen, ob es sich um kostenloses Intro-Angebot, Gratisphase oder aktuell kostenlose Nutzung handelt.
- Preis immer aus StoreKit anzeigen, nicht hart codieren.
- Datenschutz- und Nutzungsbedingungen verlinken.
- Restore Purchases sichtbar anbieten.
Akzeptanzkriterien
Nicht-Ziel für diesen Schritt
- Noch keine harte Paywall aktivieren.
- Noch keine bestehenden Nutzer:innen aussperren.
- Noch kein aggressiver Onboarding-Sales-Flow.
- Noch keine endgültige Preisstrategie festlegen.
Vorschlag für spätere Premium-Funktionen
- Professioneller PDF Export
- Erweiterte Insights / Insight Engine
- Langzeitvergleiche
- Mehr Exportformate
- Erweiterte Medikationsauswertung
- Arztbericht-Vorlagen
Codex-Hinweis
Bitte die Implementierung so vorbereiten, dass die Monetarisierung später über App Store Connect und Feature Flags aktiviert werden kann, ohne UI und Architektur erneut grundlegend umzubauen.
Ziel
Die App soll monetarisierungstechnisch vorbereitet werden, ohne aktuell eine harte Paywall einzuführen. Nutzer:innen sollen eine Subscription sehen/aktivieren können, die für kurze Zeit kostenlos ist. Später soll derselbe Flow ohne größere App-Änderungen auf kostenpflichtig umgestellt werden können.
Grundprinzip
Produktanforderungen
1. Subscription-Modell vorbereiten
symi_plus_monthlysymi_plus_yearly2. Aktuell gratis nutzbar halten
isPremiumEntitledkann intern schon existieren, aber Features bleiben bis zur späteren Aktivierung offen.3. „Für kurze Zeit gratis“-Hinweis
In der App soll klar, aber dezent kommuniziert werden:
Beispieltexte:
Ton: ruhig, ehrlich, nicht manipulativ.
4. Subscription-/Paywall-Screen
Neuen Screen erstellen, z. B.
SubscriptionViewoderSymiPlusView.Inhalt:
Design:
#F6F4EF#0F3D3E#8ECDB85. App Store / StoreKit-Konfiguration
6. Architektur
Vorschlag:
SubscriptionService/PurchaseManagerals@MainActorObservable StoreKit-2-Service.Beispielstruktur:
7. Feature Flags für spätere Verteuerung / Premium-Aktivierung
Einführen:
monetizationEnabledpremiumFeaturesLockedshowIntroFreeSubscriptionBannersubscriptionPriceIncreaseMessagingEnabledAktuell:
monetizationEnabled = truepremiumFeaturesLocked = falseshowIntroFreeSubscriptionBanner = trueSpäter:
premiumFeaturesLocked = true8. Einstiegspunkte in der App
Subscription-Hinweis dezent platzieren:
Wichtig: Aktuell keine störende Modal-Paywall beim App-Start.
9. Rechtliches / Review-Sicherheit
Akzeptanzkriterien
Nicht-Ziel für diesen Schritt
Vorschlag für spätere Premium-Funktionen
Codex-Hinweis
Bitte die Implementierung so vorbereiten, dass die Monetarisierung später über App Store Connect und Feature Flags aktiviert werden kann, ohne UI und Architektur erneut grundlegend umzubauen.