Loslegen

RevenueCat

Wenn deine App RevenueCat nutzt, verbinde seinen Webhook, und Unolink bekommt jede Testphase, jeden Kauf, jede Verlängerung, Kündigung und Erstattung direkt von RevenueCat, auch Verlängerungen und Erstattungen, die passieren, wenn die App gar nicht offen ist. Der Umsatz in deinem Funnel wird abzüglich Erstattungen berechnet. Ab dem Pro-Tarif.

1. Verbinden

Öffne in Unolink deine App → Einstellungen → RevenueCat → Verbinden. Kopiere die Webhook-URL und den Wert für den Authorization-Header (wird einmal angezeigt).

2. Webhook in RevenueCat hinzufügen

Öffne in RevenueCat dein Projekt → Integrations → Webhooks → Add new configuration:

  • Webhook URL und Authorization header value: Füge sie ein.
  • Environment: both. Sandbox-Käufe zählen als Testgeräte und bleiben so aus deinen echten Zahlen heraus.
  • App: diese App. Events: alle.

Speichere, dann Send test event. Die RevenueCat-Karte in Unolink zeigt an, wenn es ankommt.

Käufe werden der Installation (und dem Link, über den sie kam) über die Nutzer-ID zugeordnet, die deine App meldet: RevenueCats eigene App-User-ID. Ab SDK 0.3.2 hält eine Zeile sie aktuell. Ruf sie einmal beim Start auf, vor oder nach configure:

Unolink.connectRevenueCat { Purchases.isConfigured ? Purchases.shared.appUserID : nil }
Unolink.connectRevenueCat { Purchases.sharedInstance.appUserID }
import Purchases from "react-native-purchases"

Unolink.connectRevenueCat(Purchases)
Unolink.connectRevenueCat(
  () => Purchases.appUserID,
  addListener: Purchases.addCustomerInfoUpdateListener,
  removeListener: Purchases.removeCustomerInfoUpdateListener,
);

Unolink liest die ID beim Start, jedes Mal, wenn die App wieder in den Vordergrund kommt, und jedes Mal, wenn sie sich ändert, und sendet sie nur, wenn sie neu ist. RevenueCat wird dadurch nicht zu deiner App hinzugefügt: Du übergibst RevenueCat selbst. Auf iOS und Android ruf außerdem nach Purchases.logIn und Purchases.logOut Unolink.revenueCatUserChanged() auf, um die neue ID sofort zu senden (sonst geht sie mit dem nächsten Event mit). React Native und Flutter bemerken die Änderung von selbst.

Ohne connectRevenueCat (ein älteres SDK, oder wenn du es lieber selbst machst) ruf setUserId mit RevenueCats ID auf, nach Purchases.configure, nach jedem Purchases.logIn und Purchases.logOut, und bei jedem Start. Nutze das eine oder das andere, nicht beides:

Unolink.setUserId(Purchases.shared.appUserID)
Unolink.setUserId(Purchases.sharedInstance.appUserID)
Unolink.setUserId(await Purchases.getAppUserID())
Unolink.setUserId(await Purchases.appUserID);

Für einen Gast ist das RevenueCats anonyme ID, sodass ein Kauf, der vor der Registrierung gemacht wird, sofort mit der Installation verknüpft wird. Nach logIn ist es die ID des Kontos. Unolink behält jede ID, die eine Installation gemeldet hat, sodass der Kauf des Gasts verknüpft bleibt.

Wenn deine App nur die Konto-ID meldet, wird der Kauf eines Gasts trotzdem verknüpft, aber erst mit RevenueCats nächstem Event für diesen Kunden, das beide IDs nennt (zum Beispiel die erste Verlängerung). Bis dahin zeigt die Person als noch nicht bezahlt. Wenn RevenueCats ID gemeldet wird, entfällt diese Wartezeit.

Wenn jemand „als Gast weiter“ tippt, ruf zusätzlich Unolink.signUpSkipped() auf (SDK 0.3.2 oder neuer, React Native 0.3.1; ältere SDKs: track("sign_up_skipped")), damit der Funnel-Schritt Als Gast weiter sie zählt. Siehe Gäste und Konten.

Unolink speichert nie die ID selbst, nur einen Hash mit Schlüssel, der für jede deiner Apps anders ist. Ein Kauf, der ankommt, bevor die App ihren Nutzer gemeldet hat, wartet und wird der Installation zugeordnet, sobald sie es tut. Zahlungen, die Tage oder Wochen später kommen, zählen trotzdem, und der Bericht zeigt, wie lange Leute brauchen: siehe Zahlungen und Nutzer-IDs, wo es auch um Datenschutz und Apples Regeln geht.

Was ankommt

RevenueCatIn Unolink
INITIAL_PURCHASE (Testphase)Testphase gestartet
INITIAL_PURCHASE, NON_RENEWING_PURCHASE, Umwandlung der TestphaseBezahlt, mit Umsatz
RENEWALVerlängert, mit Umsatz
CANCELLATION (Erstattung)Erstattet, Umsatz abgezogen
CANCELLATION, EXPIRATION, BILLING_ISSUEAbo gekündigt, Abo abgelaufen, Zahlungsproblem

Sobald RevenueCat verbunden ist, ist es die maßgebliche Quelle für Käufe und Testphasen: Wenn deine App auch Unolink.purchase() oder trialStarted() aufruft, werden diese Aufrufe ignoriert, damit nichts doppelt gezählt wird. Verlängerungen, Kündigungen und der Rest lassen sich in jedem Funnel als Funnel-Schritte hinzufügen (Funnel → Bearbeiten).