Fehlerbehebung
Schalte zuerst die Debug-Logs ein: Sie sagen genau, was das SDK getan hat und warum. Siehe Debug-Logs.
Such nach dem Tag Unolink in Logcat oder nach [Unolink] in der Xcode-Konsole.
Im Dashboard erscheint nichts
- Schalte Testgeräte einbeziehen ein, in Funnel oder Journeys. Debug-Builds sind Testgeräte und standardmäßig ausgeblendet.
- Prüfe, ob
configureläuft. Es muss einmal und früh aufgerufen werden:Application.onCreate()unter Android, iminit()der@main-App unter iOS, im Root-Layout bei React Native, inmain()bei Flutter. - Sende die Events jetzt. Events gehen alle 15 Sekunden raus, solange die App offen ist, und wenn sie in den Hintergrund geht.
Drück Home oder ruf
flush()auf. - Prüfe das Netzwerk. Offline warten Events auf dem Gerät und werden gesendet, sobald das Netz wieder da ist.
„Invalid SDK key (401)“
Der Schlüssel ist falsch, gehört zu einer anderen App oder wurde widerrufen. Kopiere ihn erneut aus deiner App → Einstellungen → SDK-Schlüssel. Wenn du ihn beim Erstellen nicht gespeichert hast, erstelle einen neuen Schlüssel: Der vollständige Schlüssel wird nur einmal angezeigt. Nach einem 401 wird bis zum nächsten Start nichts gesendet.
„The SDK isn't included in this app's Unolink plan (403)“
Das SDK gibt es ab dem Pro-Tarif. Der Inhaber der App muss unter Abrechnung upgraden. Bis dahin sendet das SDK nichts und hält nichts in der Warteschlange.
Einige Events fehlen
- Ungültiger Name. Event-Namen beginnen mit einem Buchstaben und enthalten nur Buchstaben, Ziffern,
_und., höchstens 64 Zeichen. Ungültige werden abgelehnt und geloggt. - Zu viele Eigenschaften. Höchstens 20 pro Event, Strings bis 200 Zeichen, insgesamt 4 KB.
- Ungültige IDs für Onboarding-Screens.
stepundflowfolgen derselben Regel wie Event-Namen:how_heard, nichthow-heard. In Entwicklungs-Builds warnt das React Native SDK (0.3.1 oder neuer) in der Konsole. - Weit über dem monatlichen Kontingent. An deinem Kontingent wird nichts blockiert. Erst ab dem Doppelten des Kontingents werden deine eigenen
(benutzerdefinierten) Events abgelehnt, mit
quota_exceeded; die Standard-Funnel-Events werden immer erfasst. - Vor
configureaufgerufen. Die nativen SDKs für iOS und Android ignorieren Aufrufe vorconfigure. React Native (0.3.1 oder neuer) behält sie und sendet sie direkt danach. - Tracking ausgeschaltet.
setEnabled(false)stoppt das Tracking und bleibt über Neustarts hinweg gespeichert.
Käufe oder Testphasen zählen doppelt oder gar nicht
- RevenueCat verbunden? Dann meldet RevenueCat Testphasen und Käufe, und Aufrufe von
purchaseundtrialStartedaus der App werden ignoriert. Entferne sie, wenn du willst; sie schaden nicht. - RevenueCat-Käufe werden der Installation nicht zugeordnet? Melde RevenueCats eigene App-User-ID. Ab SDK 0.3.2 hält
connectRevenueCatsie aktuell (siehe RevenueCat). Sonst rufsetUserIddamit auf (Purchases.shared.appUserID,Purchases.sharedInstance.appUserID,Purchases.getAppUserID()oderPurchases.appUserID), nachPurchases.configure, nach jedemPurchases.logInundPurchases.logOut, und bei jedem Start. Ein Kauf, der ankommt, bevor die App ihren Nutzer meldet, wartet und wird zugeordnet, sobald sie es tut. Jede Nutzer-ID, die eine Installation gemeldet hat, zählt. Ein Gast, der kauft und dann ein Konto anlegt, behält also den Kauf. Wenn die App nur die Konto-ID meldet, wird der Kauf eines Gasts erst mit RevenueCats nächstem Event für diesen Kunden verknüpft (zum Beispiel die erste Verlängerung). Siehe Gäste und Konten. - Kein RevenueCat? Ruf
purchasemit dem Preis als Dezimalzahl und einem dreistelligen Währungscode auf, nachdem der Store ihn bestätigt hat.
Kein Deferred Deep Link
- Auf dem iPhone ist das so zu erwarten. Apple hat keinen Install-Referrer, daher gibt es Deferred Deep Links nur unter Android.
- Über Google Play installieren. Per Sideloading oder aus Android Studio installierte Apps haben keinen Play-Referrer. Nutze den internen Test
oder
debugInstallReferrerin einem Debug-Build. Siehe Testen. - Nur beim ersten Start. Der Referrer wird einmal pro Installation gelesen. Deinstalliere die App oder lösche ihren Speicher, um erneut zu testen.
- Leg einen Deeplink für den Link fest. Im Dashboard unter Links → ⋯ → Bearbeiten → Deeplink. Ein Link ohne Deeplink bekommt die Installation trotzdem zugerechnet, aber es gibt nichts zu öffnen.
- Registriere den Listener. Er kann nach
configurehinzugefügt werden: Ein Link, der früher ankam, wird trotzdem zugestellt. Bei React Native braucht das 0.3.1 oder neuer; mit 0.3.0 abonnierst du direkt nachconfigure. - Der Screen liegt hinter Onboarding oder Anmeldung? Der Listener läuft einmal pro Installation. Lies nach dem
Onboarding
getPendingDeferredDeepLink(), öffne den Link und ruf dannconsumeDeferredDeepLink()auf. Ab 0.3.3 wartet der Link, bis du ihn als verbraucht markierst, auch wenn die App zwischendurch geschlossen wird (bis zu 30 Tage). Siehe Nach dem Onboarding öffnen. - Derselbe Link öffnet sich bei jedem Start? Ruf
consumeDeferredDeepLink()auf, sobald du ihn geöffnet hast.
Eine Neuinstallation wird dem Link nicht zugerechnet
Jeder Klick wird nur einer Installation zugerechnet. Nach einer Neuinstallation kann Google Play der App denselben Referrer erneut übergeben, und diese zweite Installation wird dem Link nicht ein zweites Mal zugerechnet. Unolink rät nie.
React Native und Flutter
- Expo Go funktioniert nicht. Das SDK enthält nativen Code: Erstelle einen Development-Build (
npx expo prebuildoder EAS Build). - „Native module not found“ oder
MissingPluginException. Baue die App nach der Installation neu. Ein JavaScript-Reload oder ein Hot Restart in Flutter lädt keinen neuen nativen Code. - Der iOS-Build schlägt nach der Installation fehl. Führe
pod installim Ordneriosaus (reines React Native) und baue dann erneut.
Kommst du nicht weiter?
Schreib an [email protected] mit dem Namen deiner App, der Plattform, der SDK-Version und dem Debug-Log eines App-Starts.