RevenueCat-Einrichtung für gewrappte Web-Apps, von Anfang bis Ende
RevenueCat macht aus zwei Store-Abrechnungssystemen einen Produktkatalog, einen Webhook und eine einzige Antwort auf die Frage „Hat dieser Nutzer ein Abo?“. WebViewGold bringt die RevenueCat-Integration bereits mit: zwei Keys einfügen, Käufe per Link aus deiner Web-App auslösen und den Webhook dein Backend aktualisieren lassen. Dieser Guide führt dich von den Store-Produkten bis zur funktionierenden Paywall.
Ab $109 einmalig pro Plattform, oder unser Team erledigt alles ab $698.
Genehmigungsgarantie – oder Geld zurück innerhalb von 14 Tagen
Kein Programmieren nötig
Einmalzahlung, kostenlose Updates
24/7 Support von echten Menschen
Made in Germany seit 2014 · ISO 27001
9:41
Deine App
Deine AppJetzt auf dem Smartphone
App Store · Google Play Freigegeben
1. Die Produkte in beiden Stores anlegen
Verwende auf beiden Plattformen identische Produkt-IDs; das hält RevenueCat und dein Backend einfach.
App Store Connect
Deine App → Monetization → Subscriptions → eine Abo-Gruppe anlegen, dann die Produkte (Referenzname, Produkt-ID wie premium_monthly, Laufzeit, Preis, lokalisierter Anzeigename, Screenshot für das Review). Einmalige Artikel gehören unter In-App Purchases, als Verbrauchsartikel (Consumable) oder Nicht-Verbrauchsartikel (Non-Consumable).
Google Play Console
Monetarisieren → Produkte → Abos → Produkt-ID premium_monthly → ein Basis-Abo (monatlich, automatisch verlängernd) und optionale Angebote wie eine kostenlose Testphase. Einmalige Artikel liegen unter In-App-Produkte. Aktiviere sie.
Status prüfen
Apple-Produkte müssen den Status „Ready to Submit“ erreichen; der erste In-App-Kauf wird zusammen mit einem Build geprüft, also hänge ihn in App Store Connect an die Version an. Play-Produkte müssen aktiv sein, und die App muss mindestens in einem Test-Track veröffentlicht sein.
2. Das RevenueCat-Projekt einrichten
Fünfzehn Minuten im RevenueCat-Dashboard.
Die App-Store-App hinzufügen
Project → Apps → App Store: Trag die Bundle-ID ein (sie muss exakt mit dem Xcode-Projekt und App Store Connect übereinstimmen), das App-Specific Shared Secret oder einen In-App Purchase Key aus App Store Connect und optional einen App Store Connect API Key, damit sich Produkte importieren lassen.
Die Play-Store-App hinzufügen
Package Name plus die JSON-Datei eines Google-Cloud-Dienstkontos mit Zugriff auf die Play Developer API, wie es die RevenueCat-Doku beschreibt.
Produkte, Entitlement, Offering
Importiere die Produkt-IDs für beide Apps oder füge sie hinzu. Lege ein Entitlement namens premium an und verknüpfe jedes Produkt damit. Lege ein Offering (default) mit Packages wie monatlich und jährlich an; wenn du die gehostete Paywall von RevenueCat willst, gestalte sie unter Paywalls für dieses Offering.
Die Keys kopieren
Project settings → API keys: der öffentliche SDK-Key pro Plattform (appl_… für iOS, goog_… für Android) und die Projekt-ID aus den Projekteinstellungen. Das sind die beiden Werte, die WebViewGold braucht.
Ich bin sehr glücklich, dass ich diese App gekauft habe! Extrem einfach und großartige Dokumentation. Ich stand in Kontakt mit dem Kundenservice, sie antworteten sehr schnell und sehr freundlich. Sie lösten meine Frage innerhalb eines Tages. 10/10 würde ich empfehlen.
// Config.swift (iOS)
static let revenueCatAPIKey = "appl_xxxxxxxxxxxxxxxxxxxx"
static let revenueCatProjectID = "projxxxxxxxx"
// Config.java (Android)
public static final String REVENUECAT_API_KEY = "goog_xxxxxxxxxxxxxxxxxxxx";
public static final String REVENUECAT_PROJECT_ID = "projxxxxxxxx";
4. Käufe aus der Web-App auslösen
external_id wird zur App User ID in RevenueCat, also übergib deine eigene stabile User-ID (keine E-Mail-Adresse, die sich ändern kann). Ruf diese Links nur in der App auf; im Web zeigst du Stripe.
javascript
const userId = currentUser.id; // deine Supabase- / Firebase-User-ID
const inApp = /WebViewGoldApp/.test(navigator.userAgent);
// Ein bestimmtes Produkt kaufen (ID wie im RevenueCat-Dashboard angezeigt); funktioniert unter iOS und Android
function buy(productId) {
if (!inApp) return showStripeCheckout(productId);
window.location.href = "revenuecat://purchase?external_id=" + encodeURIComponent(userId) + "&product=" + productId;
}
// Oder eine RevenueCat-Paywall öffnen, die aus einem Offering erstellt wurde
function openPaywall() {
window.location.href = "revenuecat://launchPaywall?external_id=" + encodeURIComponent(userId) + "&offering=default";
}
// Nach einer Neuinstallation oder auf einem neuen Gerät wiederherstellen (von Apple für Abos und Nicht-Verbrauchsartikel verlangt)
function restore() { window.location.href = "restoreinapppurchases://"; }
// Verwalten oder kündigen: öffnet die Abo-Übersicht des Stores
function manage() { window.location.href = "cancelinapppurchase://"; }
5. Webhooks an dein Backend
Das Kauffenster ist nativ; deine Datenbank erfährt über den Webhook von RevenueCat davon. Geh in RevenueCat zu Integrations → Webhooks, trag die URL einer Supabase Edge Function, Cloud Function oder API-Route ein und setze einen Wert für den Authorization-Header, den dein Endpunkt prüft. Verarbeite mindestens INITIAL_PURCHASE, RENEWAL, PRODUCT_CHANGE, CANCELLATION, BILLING_ISSUE, EXPIRATION und TRANSFER. Jedes Event enthält app_user_id (deine User-ID aus external_id), das Produkt, den Store und das Ablaufdatum; schreib sie in eine subscriptions-Tabelle und lass die Web-App „aktiv bis“ von dort lesen. Vertrau niemals einem Flag, das auf dem Gerät gespeichert ist.
Nachdem das native Fenster geschlossen ist, kommt der Webhook meist innerhalb von Sekunden an. Lass die Web-App dein Backend bis zu zehn Sekunden lang abfragen und dann freischalten, mit dem Fallback „Wird noch verarbeitet, zum Aktualisieren nach unten ziehen“. Für Support-Fälle liefert die REST API von RevenueCat den Abo-Status auf Abruf, und die Kundenansicht im Dashboard zeigt jede Transaktion. Verkaufst du im Web zusätzlich über Stripe, schreiben dessen Webhooks in dieselbe Tabelle, sodass eine einzige Entitlement-Prüfung beide Kanäle bedient.
6. Wiederherstellen, Sandbox-Tests und Review
Ein sichtbarer Button „Käufe wiederherstellen“ (in den Einstellungen oder auf der Paywall), der restoreinapppurchases:// aufruft. Apple prüft das.
Zeig auf der Paywall Preis, Laufzeit, Verlängerungsbedingungen und Links zu Nutzungsbedingungen und Datenschutzerklärung; Ablehnungen nach Richtlinie 3.1.2 gehen meist auf fehlenden Paywall-Text zurück. Siehe den 3.1.2-Guide.
iOS-Sandbox: App Store Connect → Benutzer und Zugriff → Sandbox-Tester; auf dem Test-iPhone unter Einstellungen → App Store → Sandbox-Account anmelden. TestFlight-Builds nutzen automatisch die Sandbox; Abos verlängern sich dort alle paar Minuten, sodass du den Ablauf testen kannst.
Android: Play Console → Einrichtung → Lizenztests, Gmail-Konten der Tester hinzufügen, aus dem internen Test-Track installieren; Testkäufe werden nicht berechnet.
RevenueCat zeigt Sandbox-Transaktionen über einen Sandbox-Schalter im Dashboard; dein Webhook erhält sie mit einem Umgebungs-Flag, sodass deine Tabelle sie ignorieren oder markieren kann.
Gib Apple fürs Review einen Demo-Account ohne aktives Abo und beschreibe die Paywall in den Notizen (Vorlage im Guide zu den Review-Notizen). Reviewer kaufen in der Sandbox.
Lokalisierte Preise: Ruf getstorelocation:// auf (oder aktiviere die automatische Injection), um storeLocation auszulesen und auf deiner Web-Paywall den Preis der Storefront des Nutzers zu zeigen.
Häufig gestellte Fragen
Ersetzt RevenueCat Stripe?
Nein. Stripe bleibt für Web-Käufe auf der Website. RevenueCat übernimmt die Store-Käufe, und beide schreiben in dieselbe Entitlement-Tabelle in deinem Backend.
Was sollte external_id sein?
Eine stabile Nutzerkennung aus deinem Auth-System. Können Nutzer vor dem Login kaufen, nutze eine Gerätekennung aus der UUID API von WebViewGold (get-uuid://) und verknüpfe sie später per Alias mit dem Account.
Ist der Webhook Pflicht?
Dringend empfohlen. Ohne ihn müsste dein Backend RevenueCat bei jeder Prüfung abfragen. Mit ihm ist deine Datenbank die verlässliche Quelle.
Kann dasselbe Produkt in den beiden Stores unterschiedliche Preise haben?
Ja. Preise werden pro Store festgelegt; RevenueCat ordnet beide demselben Entitlement zu.
Was passiert, wenn jemand den Kauflink auf der Website öffnet?
Nichts; revenuecat:// versteht nur die App. Schütze den Button mit der User-Agent-Prüfung und zeig im Web Stripe.
Drei Wege, deine App in die Stores zu bringen
Gleiches Ergebnis, unterschiedlich viel Arbeit auf deiner Seite. Alle drei kommen mit Genehmigungsgarantie und 24/7 Support von echten Menschen.
Selbst machen
$109 pro Plattform, einmalig
Die WebViewGold-Lizenz: ein fertiges Xcode- oder Android-Studio-Projekt. URL einfügen, Name und Icon setzen, Features einschalten, bauen und einreichen. Kostenlose Updates für immer.
Kein Mac, kein Xcode, kein Android Studio: Du konfigurierst im Browser, wir bauen beide Apps in der Cloud und übergeben sie an App Store Connect und die Play Console.
Schick uns deine URL und dein Icon. Unser Team konfiguriert, baut und liefert deine App innerhalb von 72 Stunden, White-Label, inklusive Quellprojekten. Beide Plattformen für $1,158.
Erstattungen erfolgen zu den in unseren FAQ genannten Bedingungen: eine nicht inhaltsbedingte Ablehnung durch Apple und/oder Google, geltend gemacht innerhalb von 14 Tagen nach dem Kauf.