# Google Play-Abonnement-Tracking

<Aside type="caution" icon="setting" title="Hilfe von Entwicklern erforderlich">
Sie benötigen Hilfe von Ihrem Entwicklungsteam, um diese Integration einzurichten. Bitte teilen Sie diese Anleitung mit ihnen.
</Aside>

## Integrationsübersicht

[Echtzeit-Entwicklerbenachrichtigungen (RTDN)](https://developer.android.com/google/play/billing/rtdn-reference) ist der Server-zu-Server-Dienst von Google Play, der eine Echtzeitnachricht sendet, wann immer sich der Status eines Abonnements ändert.

Indem Sie Google Play RTDN mit Pushwoosh verbinden, können Sie auf den gesamten Abonnement-Lebenszyklus reagieren, einschließlich Käufe, Verlängerungen, Kündigungen, Abrechnungsprobleme, Ablaufdaten und Rückerstattungen – ohne Ihre eigene Backend-Infrastruktur aufbauen zu müssen. Wann immer sich der Status eines Abonnements im Google Play-Konto eines Benutzers ändert, benachrichtigt Google Pushwoosh, und Pushwoosh löst das entsprechende [`PW_Subscription*`](#verfolgte-ereignisse)-Ereignis im Benutzerprofil aus.

<Aside type="note">
Diese Integration unterstützt **Android-Abonnements** (Google Play RTDN). Informationen zum Verfolgen von iOS-Abonnements finden Sie unter [App Store-Abonnement-Tracking](/de/product/integrations/app-store-subscription-tracking/).
</Aside>

### Integrationstyp

**Quelle:** Echtzeit-Entwicklerbenachrichtigungen werden von Google Play an Pushwoosh gesendet.

### Verfolgte Ereignisse

Pushwoosh ordnet jede unterstützte Google Play-Benachrichtigung einem einheitlichen `PW_Subscription*`-Ereignissatz zu, sodass Sie Kampagnen in jeder Phase des Abonnement-Lebenszyklus auslösen können.

| Ereignis | Wird ausgelöst, wenn |
| ----- | ---------- |
| `PW_SubscriptionStart` | Ein Benutzer das Abonnement zum ersten Mal kauft. |
| `PW_SubscriptionRenew` | Das Abonnement sich automatisch für einen neuen Abrechnungszeitraum verlängert. |
| `PW_SubscriptionCancel` | Ein Benutzer die automatische Verlängerung deaktiviert. Das Abonnement bleibt bis zum Ablauf aktiv. |
| `PW_SubscriptionResume` | Ein Benutzer das Abonnement reaktiviert, bevor es abläuft. |
| `PW_SubscriptionBillingIssue` | Eine Verlängerungszahlung fehlschlägt und das Abonnement in seine Kulanzfrist eintritt. |
| `PW_SubscriptionRecovered` | Eine zuvor fehlgeschlagene Verlängerung erfolgreich durchgeführt wird und das Abonnement wieder aktiv ist. |
| `PW_SubscriptionExpired` | Das Abonnement vollständig abgelaufen ist und nicht mehr aktiv ist. |
| `PW_SubscriptionRefund` | Google Play das Abonnement widerruft (z. B. nach einer Rückerstattung). |

Jedes Ereignis trägt die gleichen Attribute:

- **productID:** die Google Play-Produktkennung des Abonnements.
- **expiresAt:** wann der aktuelle bezahlte Zeitraum endet, als Unix-Zeitstempel in Sekunden. Enthalten, wenn Google es bereitstellt.

<details>

<summary>Wie Ereignisse den Echtzeit-Entwicklerbenachrichtigungen zugeordnet werden</summary>

Für Entwickler, die die Integration überprüfen, entspricht jedes Pushwoosh-Ereignis diesen RTDN-`notificationType`-Werten:

| Pushwoosh-Ereignis | RTDN `notificationType` |
| --------------- | ----------------------- |
| `PW_SubscriptionStart` | `SUBSCRIPTION_PURCHASED` (4) |
| `PW_SubscriptionRenew` | `SUBSCRIPTION_RENEWED` (2) |
| `PW_SubscriptionCancel` | `SUBSCRIPTION_CANCELED` (3) |
| `PW_SubscriptionResume` | `SUBSCRIPTION_RESTARTED` (7) |
| `PW_SubscriptionBillingIssue` | `SUBSCRIPTION_IN_GRACE_PERIOD` (6) |
| `PW_SubscriptionRecovered` | `SUBSCRIPTION_RECOVERED` (1) |
| `PW_SubscriptionExpired` | `SUBSCRIPTION_EXPIRED` (13) |
| `PW_SubscriptionRefund` | `SUBSCRIPTION_REVOKED` (12) |

Andere Benachrichtigungstypen, wie z. B. zurückgestellte, Preisänderungen, Aufschübe und Pausen, werden bestätigt, aber es wird kein Ereignis gepostet.

</details>

### Wie es funktioniert

Eine Google Play-Benachrichtigung enthält keine Pushwoosh-Kennung. Sie enthält nur ein Kauf-Token und den `packageName` der App. Ihre App markiert also jeden Kauf mit der Kennung, die Pushwoosh benötigt, und Pushwoosh liest sie bei jeder eingehenden Benachrichtigung aus dem Kauf zurück.

1. Der Status eines Abonnements ändert sich im Google Play-Konto eines Benutzers (ein Kauf, eine Verlängerung, eine Kündigung usw.).
2. Google Play veröffentlicht eine RTDN-Nachricht im freigegebenen Thema von Pushwoosh.
3. Pushwoosh liest die `obfuscatedAccountId` des Kaufs, die Ihre App zum Zeitpunkt des Kaufs auf `<AppCode>:<hwid>` gesetzt hat.
4. Pushwoosh löst das Gerät auf, dessen HWID übereinstimmt, findet den damit verbundenen Benutzer und postet das entsprechende `PW_Subscription*`-Ereignis für diesen Benutzer.

<Aside type="caution" title="Wichtig">
Die Übereinstimmung zwischen einem Google Play-Kauf und einem Pushwoosh-Benutzer basiert auf der `obfuscatedAccountId`. Wenn Ihre App diesen Wert zum Zeitpunkt des Kaufs nicht festlegt, empfängt Pushwoosh die Benachrichtigung, aber es wird **kein Ereignis gepostet**. Er wird beim Kauf festgelegt und **kann nicht für bestehende Abonnements nachgetragen werden**. Siehe [wie Sie die Kontokennung beim Kauf festlegen](#festlegen-der-kontokennung-beim-kauf).
</Aside>

### Anwendungsfälle

**Abwandernde Abonnenten zurückgewinnen:** Das Deaktivieren der automatischen Verlängerung beendet den Zugriff nicht sofort. Das Abonnement bleibt bis zum Ende des bezahlten Zeitraums aktiv, und das ist Ihre Chance, den Benutzer zurückzugewinnen. Starten Sie bei `PW_SubscriptionCancel` eine [Customer Journey](/de/product/customer-journey/pushwoosh-journey-overview/) mit einem Retentions-Push, einer [E-Mail](/de/product/messaging-channels/emails/) über Funktionen, die sie verlieren würden, oder einer [In-App-Nachricht](/de/product/messaging-channels/in-apps/) mit einem Verlängerungsrabatt, bevor der Zugriff abläuft.

**Neue Abonnenten onboarden:** Lösen Sie bei `PW_SubscriptionStart` eine Willkommensserie aus, um Benutzern zu helfen, frühzeitig einen Mehrwert aus ihrem Plan zu ziehen und die Weichen für eine Verlängerung zu stellen.

**Fehlgeschlagene Zahlungen retten:** Wenn `PW_SubscriptionBillingIssue` ausgelöst wird, ist eine Verlängerungszahlung nicht durchgegangen und das Abonnement befindet sich in der Kulanzfrist. Fordern Sie den Benutzer auf, seine Zahlungsmethode zu aktualisieren, bevor er den Zugriff verliert, und folgen Sie mit `PW_SubscriptionRecovered`, um zu bestätigen, sobald das Problem behoben ist.

**Abgelaufene Benutzer reaktivieren:** Starten Sie bei `PW_SubscriptionExpired` eine Reaktivierungskampagne mit einem Angebot für wiederkehrende Kunden für Abonnenten, die vollständig abgewandert sind.

## Einrichten der Integration

Bevor Sie beginnen, stellen Sie sicher, dass Sie eine Pushwoosh-App mit [konfiguriertem FCM](/de/developer/pushwoosh-sdk/android-sdk/firebase-integration/integrate-pushwoosh-android-sdk/) (bereits für Push erforderlich), eine Google Play-App mit einem Abonnement und Play Console-Administratorzugriff haben.

### Festlegen der Kontokennung beim Kauf

Pushwoosh identifiziert den richtigen Benutzer anhand der **HWID** des Geräts, kombiniert mit Ihrem **Anwendungscode**. Das Pushwoosh Android SDK stellt einen Helfer, `getSubscriptionAccountId()`, zur Verfügung, der diesen Wert bereits als `<AppCode>:<hwid>` formatiert zurückgibt. Übergeben Sie ihn an `BillingFlowParams.setObfuscatedAccountId()`, wenn Sie den Google Play-Abrechnungsfluss starten.

<Tabs>
<TabItem label="Kotlin">
```kotlin
val billingParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(productDetailsParamsList)
    // Tag the purchase with the Pushwoosh account identifier "<AppCode>:<hwid>"
    .setObfuscatedAccountId(Pushwoosh.getInstance().subscriptionAccountId)
    .build()

billingClient.launchBillingFlow(activity, billingParams)
```
</TabItem>
<TabItem label="Java">
```java
BillingFlowParams billingParams = BillingFlowParams.newBuilder()
        .setProductDetailsParamsList(productDetailsParamsList)
        // Tag the purchase with the Pushwoosh account identifier "<AppCode>:<hwid>"
        .setObfuscatedAccountId(Pushwoosh.getInstance().getSubscriptionAccountId())
        .build();

billingClient.launchBillingFlow(activity, billingParams);
```
</TabItem>
</Tabs>

<Aside type="note">
Rufen Sie `getSubscriptionAccountId()` auf, nachdem das SDK initialisiert wurde. Es gibt eine leere Zeichenfolge zurück, wenn der Anwendungscode oder die HWID noch nicht verfügbar ist. Google begrenzt die verschleierte Konto-ID auf 64 Zeichen. Der Pushwoosh-Wert `<AppCode>:<hwid>` bleibt innerhalb dieser Grenze.
</Aside>

<Aside type="caution">
Wenn Ihre App die Pushwoosh-HWID mit einem benutzerdefinierten Wert überschreibt, spiegelt `getSubscriptionAccountId()` dies automatisch wider. Erstellen Sie die Kennung nicht von Hand. Verwenden Sie immer den Helfer, damit der Wert mit der HWID des Geräts in Pushwoosh übereinstimmt, da das Ereignis sonst nicht zugeordnet werden kann.
</Aside>

### Echtzeit-Entwicklerbenachrichtigungen auf Pushwoosh ausrichten

1. Gehen Sie in der [Google Play Console](https://play.google.com/console/) zu **Monetarisieren → Monetarisierungseinrichtung**.
2. Suchen Sie **Echtzeit-Entwicklerbenachrichtigungen** und setzen Sie den **Themennamen** auf:

```
projects/pw-playstore-subscriptions/topics/play-rtdn
```

3. Klicken Sie auf **Speichern**. Die Veröffentlichungsberechtigung ist bereits dem Benachrichtigungsdienst von Google erteilt, sodass hier nichts weiter konfiguriert werden muss.

### Pushwoosh-Dienstkonto gewähren

1. Gehen Sie in der Google Play Console zu **Benutzer und Berechtigungen → Neuen Benutzer einladen**.
2. Geben Sie die E-Mail-Adresse des Pushwoosh-Dienstkontos ein:

```
play-api@pw-playstore-subscriptions.iam.gserviceaccount.com
```

3. Fügen Sie unter **App-Berechtigungen** Ihre App hinzu und gewähren Sie **Finanzdaten, Bestellungen und Antworten auf Kündigungsumfragen ansehen** (plus die schreibgeschützte App-Informationsberechtigung).
4. Klicken Sie auf **Speichern**. Ein Dienstkonto muss die Einladung nicht annehmen. Der Zugriff ist sofort aktiv.

### Bestätigen der Ereignisse in Pushwoosh

Pushwoosh registriert jedes `PW_Subscription*`-Ereignis in Ihrem Projekt, wenn es zum ersten Mal auftritt, mit den Attributen `productID` und `expiresAt`. Öffnen Sie nach einem Test **Zielgruppe → Ereignisse**, um zu überprüfen, ob die Ereignisse angezeigt werden. Sie sind dann bereit für Segmentierung, Statistiken und Customer Journeys.

### Erstellen Sie Ihre Kampagne

Erstellen Sie eine [Customer Journey](/de/product/customer-journey/pushwoosh-journey-overview/) mit einem [auslöserbasierten Eintritt](/de/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) für ein beliebiges `PW_Subscription*`-Ereignis, zum Beispiel `PW_SubscriptionCancel` zur Rückgewinnung oder `PW_SubscriptionStart` zum Onboarding, und fügen Sie die Nachrichten hinzu, die Sie senden möchten.

## Testen

Um die Integration von Ende zu Ende zu überprüfen:

1. Öffnen Sie in der Google Play Console die **Monetarisierungseinrichtung** und klicken Sie auf **Testbenachrichtigung senden**. Es sollte ein Erfolg gemeldet werden, was bestätigt, dass das Thema korrekt verdrahtet ist.
2. Führen Sie einen Abonnementkauf mit der oben beschriebenen Kontokennung durch (dies löst `PW_SubscriptionStart` aus), und kündigen Sie ihn dann über **Play Store → Abonnements → Kündigen** (dies löst `PW_SubscriptionCancel` aus).
3. Öffnen Sie im Pushwoosh Control Panel das Benutzerprofil und gehen Sie zum [Ereignisverlauf](/de/product/audience-data-and-segmentation/user-explorer/#events-history-tab).
4. Bestätigen Sie, dass die Ereignisse nach wenigen Augenblicken erscheinen.