LaunchLint Academy

Die kurze Antwort
- In-App-Käufe und Abonnements scheitern im Review selten nur an einem einzelnen API-Aufruf. Store-Konfiguration, Produktstatus, Paywall-Aussagen, Kaufabschluss, Wiederherstellung, Kontozuordnung und Prüfer-Zugang müssen als zusammenhängendes System funktionieren.
- Dieser Leitfaden liefert ein Release-Gate für Expo- und React-Native-Apps. Er verbindet Apple- und Google-Store-Setup mit Testfällen, verständlicher Preis- und Laufzeitkommunikation, robustem Entitlement-Backend und vollständigen Hinweise für das Prüfteam.
- Nutze für die letzte Abnahme eine Entitlement-Matrix statt nur einer Paywall-Aufnahme. Jede Zeile kombiniert Plattform, Produkt, Store-Zustand, App-Konto und erwarteten Zugriff. Prüfe mindestens Neukauf, Restore, Pending, Erstattung, Ablauf sowie Kauf mit einem Store-Konto, das bereits einem anderen App-Konto zugeordnet ist. Vergleiche Client-Anzeige, Backend-Status und Store-Wahrheit nach jedem Schritt. Nur wenn alle drei Ebenen wieder zusammenlaufen, ist die Kaufstrecke releasefähig. Dokumentiere außerdem, wer bei widersprüchlichen Webhooks oder Store-Ausfällen entscheiden und Ansprüche sicher neu synchronisieren darf.
- Nach dem Release überwacht das Team Kaufabschluss, Aktivierungslatenz, Restore-Fehler, Refunds und Supportfälle getrennt nach Plattform und Produkt. Definiere Alarmgrenzen vorab und halte einen sicheren Reconciliation-Runbook bereit.
Produktmodell vor der Implementierung festlegen
Ordne jede Leistung dem richtigen Modell zu: verbrauchbar, nicht verbrauchbar oder wiederkehrendes Abonnement. Dokumentiere, was ein Kauf freischaltet, wie lange der Anspruch gilt und ob er an Konto, Plattform oder Store-Identität gebunden ist.
Diese Entscheidung muss Produkt, Client, Backend und Store-Konfiguration identisch erreichen. Eine lose Liste von Produkt-IDs führt schnell zu vertauschten Laufzeiten, doppelten Freischaltungen oder einer Paywall, die etwas anderes verspricht als der Store verkauft.
Produktvertrag
- Produkttyp und Leistung eindeutig
- Laufzeit und Verlängerung definiert
- Konto- und Plattformbindung erklärt
- Produkt-IDs zentral gepflegt
- Owner für Preis und Angebot benannt
Store-Produkte und Status abgleichen
Lege Produkt-IDs, Namen, Beschreibungen, Preise, Steuer- und Verfügbarkeitsangaben in App Store Connect und Play Console vollständig an. Apple verlangt beim ersten In-App-Kauf eines Typs regelmäßig die Einreichung zusammen mit einer neuen App-Version; prüfe den aktuellen Produktstatus vor dem Submit.
Bei Google Play bestehen Abonnements aus Produkten, Basisplänen und optionalen Angeboten. Kontrolliere Länder, Preise, Aktivierung und Kompatibilität. Ein im Code vorhandener Identifier ist noch kein verkaufsfähiges Store-Produkt.
Store-Setup
- Produkte vollständig lokalisiert
- Preise und Länder geprüft
- Status ist review- oder verkaufsbereit
- Apple-Produkte korrekt eingereicht
- Google-Basispläne und Angebote aktiv
Paywall und Einwilligung verständlich gestalten
Die Paywall muss Preis, Abrechnungszeitraum, automatische Verlängerung, Testphase und wichtigsten Leistungsumfang klar zeigen. Hole den lokalisierten Preis aus der Store-API, statt Beträge hart zu codieren. Kauf-Button und Vorteil dürfen Nutzer nicht über Kosten oder Startzeitpunkt täuschen.
Verlinke erforderliche Datenschutz- und Nutzungsbedingungen und halte Restore beziehungsweise Wiederherstellung sichtbar erreichbar. Prüfe lange Währungen und Übersetzungen; abgeschnittene Laufzeiten oder missverständliche Rabatttexte sind sowohl UX- als auch Review-Risiko.
Paywall-Abnahme
- Lokalisierter Store-Preis
- Zeitraum und Verlängerung sichtbar
- Testphase und Folgekosten klar
- Bedingungen und Datenschutz erreichbar
- Restore ohne versteckten Pfad
Kaufabschluss und Entitlements robust verarbeiten
Behandle eine Client-Rückmeldung nicht allein als dauerhafte Wahrheit. Verifiziere Transaktionen serverseitig oder über eine belastbare Store-/Provider-Integration, ordne sie idempotent einem Nutzer zu und speichere den aktuellen Entitlement-Status.
Käufe können ausstehen, abgebrochen, erstattet, widerrufen oder mehrfach zugestellt werden. Der Ablauf muss jede Zustandsänderung wiederholen können, ohne doppelte Gutschrift oder verlorenen Zugriff. Secrets und vollständige Kaufbelege gehören nicht in Client-Logs.
Transaktionspipeline
- Serverseitige Verifizierung
- Idempotente Verarbeitung
- Pending und Abbruch unterstützt
- Refund und Widerruf aktualisieren Zugriff
- Keine Secrets im Client
Wiederherstellung und Gerätewechsel testen
Nicht verbrauchbare Käufe und aktive Abos müssen nach Neuinstallation oder Gerätewechsel wiederherstellbar sein. Teste die Funktion mit demselben Store-Konto, einem neuen App-Login und einem bereits verknüpften Konto, damit Konflikte nicht erst bei echten Kunden auftauchen.
Definiere verständliche Meldungen für kein Kauf gefunden, Kauf gehört zu anderem Konto, Store nicht erreichbar und Verifizierung ausstehend. Eine Restore-Schaltfläche ohne sichtbares Ergebnis wirkt wie ein Defekt, selbst wenn der Backend-Job später erfolgreich ist.
Restore-Matrix
- Neuinstallation
- Gerätewechsel
- Neues App-Konto
- Konflikt mit anderem Konto
- Offline- und Fehlerfeedback
Abos verwalten, kündigen und ändern
Nutzer brauchen einen nachvollziehbaren Weg, ihr Abo im jeweiligen Store zu verwalten oder zu kündigen. Zeige den aktuellen Plan und Status in der App und öffne den passenden Store-Pfad, ohne zu behaupten, die App selbst habe eine Store-Kündigung durchgeführt.
Plane Upgrade, Downgrade, Grace Period, Zahlungsproblem, Ablauf und Rückerstattung. Der Zugriff darf nicht nur auf einem lokal gespeicherten Boolean beruhen. Nutze den verifizierten aktuellen Anspruch und behandle Zeit- und Zeitzonenränder explizit.
Abo-Lebenszyklus
- Store-Verwaltungslink
- Aktueller Anspruch aus verifizierter Quelle
- Upgrade und Downgrade
- Grace Period und Billing Retry
- Ablauf und Rückerstattung
Sandbox-, Track- und Fehlerfälle abdecken
Teste erfolgreiche Käufe ebenso wie Abbruch, ausstehende Zahlung, Netzverlust, doppelte Zustellung, bereits gekaufte Produkte, Restore, Erstattung und Ablauf. Apple-Sandbox und Google-Testtracks verhalten sich zeitlich anders als Produktion; dokumentiere deshalb die erwarteten verkürzten Testzyklen.
Installiere die Store-verteilte Variante, wenn Signierung und Produktverknüpfung relevant sind. Protokolliere Produkt-ID, Plattform, Testkonto, Build und erwarteten Zustand, ohne sensible Tokens oder Zahlungsdaten zu speichern.
Pflichttests
- Erfolg, Abbruch und Pending
- Doppelte Zustellung
- Restore und bereits gekauft
- Erstattung und Ablauf
- Netzverlust in kritischen Phasen
Submission und Hinweise für das Prüfteam vorbereiten
Vor der Einreichung müssen die relevanten Produkte review-bereit und mit der App-Version verknüpft sein. Stelle sicher, dass der Prüfer die Paywall erreicht, den Kauf testen und eine gesperrte Funktion nachvollziehen kann. Server, Testkonto und Produkte müssen während des Reviews verfügbar bleiben.
Die Hinweise für das Prüfteam beschreiben Navigationspfad, Login, Produkt, erwartetes Ergebnis, Restore und Besonderheiten. Eine klare Schrittfolge reduziert Rückfragen; sie ersetzt jedoch keinen funktionierenden End-to-End-Kauf.
Review-Paket
- Produkte mit Version verknüpft
- Testkonto und Backend erreichbar
- Exakter Review-Pfad
- Erwartetes Ergebnis beschrieben
- Restore-Schritt dokumentiert
Häufige Fragen
Muss der erste In-App-Kauf mit einer App-Version eingereicht werden?
Apple sieht für den ersten In-App-Kauf eines Typs die Einreichung zusammen mit einer neuen App-Version vor; prüfe den Status in App Store Connect.
Darf ich Preise in der Paywall fest eintragen?
Besser nicht. Verwende den lokalisierten Preis aus dem Store, damit Währung und Preisänderungen korrekt bleiben.
Reicht eine erfolgreiche Client-Callback-Meldung?
Nein. Verifiziere und verarbeite Transaktionen robust und idempotent, bevor du dauerhafte Ansprüche gewährst.
Braucht die App eine Restore-Funktion?
Für wiederherstellbare Käufe und Abos muss ein verständlicher Wiederherstellungsweg vorhanden und getestet sein.
Wie hilft man Reviewern?
Gib Testkonto, Navigationspfad, Produkt und erwartetes Ergebnis an und halte Backend sowie Store-Produkte während der Review verfügbar.