Skip to content

Monetarisierung vorbereiten: kostenlose Einführungs-Subscription mit späterer Preisoption #184

Description

@mpwg

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

  • StoreKit-2 Purchase Manager ist implementiert.
  • Subscription-Produkte können geladen werden.
  • Lokale StoreKit-Konfiguration existiert.
  • Subscription-Screen im Symi-Design existiert.
  • Text „Für kurze Zeit gratis“ ist integriert.
  • App bleibt aktuell ohne Kauf vollständig nutzbar.
  • Kaufstatus/Entitlements werden korrekt gelesen.
  • Restore Purchases funktioniert.
  • Fehlerzustände werden nutzerfreundlich angezeigt.
  • Feature Flags für spätere Premium-Gates sind vorhanden.
  • Preis wird dynamisch aus StoreKit angezeigt.
  • Datenschutz/Nutzungsbedingungen sind erreichbar.

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions