Richtlinien für In-App-Käufe im Android Play Store
Ein kopierfertiger Einrichtungsprompt mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
Um eine Genehmigung für eine Android-App bei Google Play zu erhalten, müssen die Richtlinien von Google eingehalten werden, insbesondere für Apps mit In-App-Käufen und Abonnements. Diese Anleitung deckt alles ab, was Sie zum erfolgreichen Abschluss der Überprüfung benötigen.
Funktionsfähiger Veröffentlichungsweg
Abschnitt mit dem Titel „Funktionsfähiger Veröffentlichungsweg“-
Erstellen eines signierten Android-App-Bundles
Neue Google Play-Apps sollten als Android-App-Bundle (
.aab) hochgeladen werden und nicht als sideloadter Debug-APK.Halten Sie Ihre
versionCodewächst mit jeder Upload und speichern Sie Ihren Upload-Schlüssel sicher, wenn Sie Play App Signing verwenden.
-
Erstellen Sie das App-Record in Play Console
Wenn Sie noch keinen Entwicklerkonto haben, beginnen Sie mit Registrierung bei Play Console. Dann wählen Sie in Home > App erstellendie Sprache, den App-/Spieltyp, den Status (kostenlos/paßabel), die Support-E-Mail und stimmen Sie den erforderlichen Erklärungen zu.
Wählen Sie den kostenlosen/paßablen Status sorgfältig. Google lässt Sie eine kostenpflichtige App später kostenlos machen, aber sobald eine App kostenlos angeboten wird, kann sie nicht mehr in eine kostenpflichtige umgewandelt werden.

-
Abschließen Sie die App-Inhalte und das Store-Listing
Bevor die Produktion überprüft wird, beenden Sie die erforderlichen Erklärungen in Play Console:
- Datenschutzrichtlinie
- Werbung
- Anwendungszugriff
- Zielgruppe und Inhalte
- Inhaltsbewertung
- Daten-Sicherheit
- Empfindliche Berechtigungenserklärungen, falls anwendbar
-
Einen Test-Track über Play-Installiertes ausführen
Mit internem Testing zur schnellen QA. Wenn Ihr Entwicklerkonto ein nach dem 13. November 2023 erstelltes persönliches Konto ist, müssen Sie auch ein geschlossenes Testen mit mindestens 12 sich freiwillig meldenden Testern über 14 aufeinanderfolgende Tage vor der Produktion.

-
Zahlungsbetrag Ende-zu-Ende überprüfen
Installieren Sie die App von Google Play und nicht von einem lokal exportierten APK. Bestätigen Sie dann:
- Produkte laden sich von Play richtig
- Der Kaufblatt zeigt ein Testkauf Banner für Lizenz-Tester
- Zugriff auf Lizenz-Testversionen nach Kauf
- Wiederherstellung und Abonnement-Verwaltung-Flüsse funktionieren
Google Play Zahlungserfordernisse
Abschnitt mit dem Titel “Google Play Zahlungserfordernisse”Verpflichtende Rechnungssystem
Abschnitt mit dem Titel „Verpflichtende Rechnungssystem“Für digitale Güter und Dienstleistungen müssen Sie müssen Google Play’s Rechnungssystem verwenden:
Digitale Güter (Muss Play-Billing verwenden):
- Abonnements für Premium-Funktionen
- In-app-Währung oder Guthaben
- Digitales Inhalte (E-Books, Musik, Videos)
- Spiel-Upgrades und Power-ups
- App-Entsperren und Premium-Ebenen
Physische Güter (Kann Play-Billing nicht verwenden):
- Physische Waren
- Realweltliche Dienstleistungen
- Einzelförderungen an Non-Profit-Organisationen
:::note Abonnementseinstellungen
In der Play Console, konfigurieren Sie Android-Abonnements mit der aktuellen abonnement -> Basisplan -> Angebot Modell. In native-purchases, übermitteln Sie die Basis-Plan-ID mit planIdentifier.
:::
Implementierung mit Native Kaufs
Abschnitt mit dem Titel “Implementierung mit Native Kaufs”import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Ensure billing is available on the deviceconst { isBillingSupported } = await NativePurchases.isBillingSupported();if (!isBillingSupported) throw new Error('Google Play Billing not available');
// Fetch subscription products (Store data is required—never hardcode pricing)const { products } = await NativePurchases.getProducts({ productIdentifiers: ['premium_monthly', 'premium_yearly'], productType: PURCHASE_TYPE.SUBS,});
// Plan identifiers are the Base Plan IDs you create in Google Play Consoleconst transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'premium_monthly', planIdentifier: 'monthly-plan', // REQUIRED on Android, ignored on iOS productType: PURCHASE_TYPE.SUBS,});
console.log('Purchase token for server validation:', transaction.purchaseToken);Transparenz- und Offenlegungserfordernisse
Abschnitt mit dem Titel “Transparenz- und Offenlegungserfordernisse”Preisvorabinformationserklärung
Abschnitt mit dem Titel „Preisvorabinformationserklärung”Google Play verlangt eine klare Offenlegung aller Kosten vor dem Kauf:
Erforderliche Elemente:
- Genauer Preis in der lokalen Währung des Benutzers
- Zahlungsintervall (monatlich, jährlich usw.)
- Was ist in der Abonnementvereinbarung enthalten
- Gesamtkosten für Einführungsangebote
- Wenn Gebühren anfallen

Beispiel für eine konforme UI:
function SubscriptionCard({ product }) { return ( <div className="subscription-card"> <h3>{product.title}</h3>
{/* Show intro offer if available */} {product.introductoryPrice && ( <div className="intro-offer"> <p className="intro-price">{product.introductoryPriceString}</p> <p className="intro-period"> for {product.introductoryPricePeriod} </p> </div> )}
{/* Regular price */} <div className="regular-price"> <p className="price">{product.priceString}</p> <p className="period">per {product.subscriptionPeriod}</p> </div>
{/* Clear description */} <p>{product.description}</p>
{/* Renewal terms */} <p className="terms"> Renews automatically. Cancel anytime in Google Play. </p>
<button onClick={() => handlePurchase(product)}> Subscribe Now </button> </div> );}Auto-Renewal Disclosure
Abschnitt: „Auto-Renewal Disclosure“Bevor eine Abonnement-Autoverlängerung erfolgt, verlangt Google:
- Klare Benachrichtigung über die Verlängerung
- Erinnerung an den Preis
- Leichter Zugriff auf die Kündigung
Cross-Platform Pricing Clarity
Abschnitt: „Cross-Platform Pricing Clarity“Wenn Sie das gleiche Entgelt auf mehreren Plattformen verkaufen, halten Sie die Produktbezeichnung, die Abrechnungsperiode, die eingeschlossenen Vorteile und die Verlängerungssprache so überein, dass die Benutzer nicht überrascht werden.
Preise können sich rechtmäßig aufgrund von Steuern, lokaler Währung oder Ladenökonomie unterscheiden, aber die Kauf-UI darf diese Unterschiede niemals verbergen oder einen anderen Erneuerungspreis andeuten als den, den Google Play berechnen wird.
Datenschutzrichtlinienanforderungen
Abschnitt mit dem Titel „Datenschutzrichtlinienanforderungen“Pflichtliche Datenschutzrichtlinie
Abschnitt mit dem Titel „Pflichtliche Datenschutzrichtlinie“Wenn Ihre App In-App-Käufe enthält, müssen Sie:
-
Link in Play Store Liste
- Hinzufügen von Datenschutzrichtlinien-URL in Play Console
- Muss öffentlich zugänglich sein
- Muss in der gleichen Sprache wie Ihre App sein
-
Link innerhalb der App
- Anzeige der Datenschutzrichtlinie in App-Einstellungen
- Zeige vor der Sammlung von Benutzerdaten an
- Stelle sicher, dass es leicht zu finden ist
Beispiel-Implementierung:
function SettingsScreen() { const openPrivacyPolicy = () => { window.open('https://yourapp.com/privacy', '_blank'); };
const openTerms = () => { window.open('https://yourapp.com/terms', '_blank'); };
return ( <div> <h2>Settings</h2>
<button onClick={openPrivacyPolicy}> Privacy Policy </button>
<button onClick={openTerms}> Terms of Service </button>
<button onClick={() => NativePurchases.manageSubscriptions()}> Manage Subscriptions </button> </div> );}Sicherheitsabschnitt für Daten
Sektion mit dem Titel „Sicherheitsabschnitt für Daten“Google Play erfordert eine detaillierte Offenlegung im Sicherheitsabschnitt für Daten:
Für IAP-Apps deklarieren Sie:
- Sammlung von Kaufhistorien
- Email-Adressen (für Rechnungen)
- Geräte-IDs (für Betrugsverhinderung)
- Verarbeitung von Zahlungsdaten
- Analyticsdatenerfassung
DieDatenSicherheitsabteilungistrechtsverbindlich.InakurateAussagenkönnenzurEntfernungderAnwendungführen.
AppInhaltsErklärungen
AbschnittmitdemTitel“AppInhaltsErklärungen”DerGooglePlay-BewertunggehtnichtnurüberdasBinärdatei.Aus.AusvorherigerProduktionsveröffentlichung,erledigenSiedieErklärungenauf RichtlinienundProgramme>Appinhalte.
DenMindestensetzumSorgfältigüberprüfen:
- Datenschutzrichtlinie:ÖffentlicheURLinPlayConsole,plusEintragpunktin derApp, wennanfordernt
- Anzeigen:ErklärenSie,obdieAppAnzeigenenthält
- App-Zugriff: Geben Sie Reviewern Zugangsdaten oder einen klaren Testpfad, wenn ein Bildschirm gesperrt ist
- Zielgruppe und Inhalte: Passen Sie die tatsächliche Zielgruppe der App an
- Inhaltsbewertungen: Füllen Sie das IARC-Fragebogen aus, damit die App nicht als ungeprüft markiert wird
- Daten-Sicherheit: Erklären Sie die Sammlung, Weitergabe und Sicherheitspraktiken genau
Häufige Ablehnungsgründe
Überschrift: Häufige Ablehnungsgründe1. Fehlende oder falsche Abrechnungsdurchführung
Überschrift: 1. Fehlende oder falsche AbrechnungsdurchführungWarum es scheitert:
- Nicht die Verwendung von Google Play Billing für digitale Güter
- Verwendung veralteter Abrechnungs-APIs
- Implementierung von eigenen Zahlungslösungen für Abonnements
Verhütung:
// ✅ Correct: Use native-purchases (uses Google Play Billing)await NativePurchases.purchaseProduct({ productIdentifier: 'premium_monthly', planIdentifier: 'monthly-plan', productType: PURCHASE_TYPE.SUBS,});
// ❌ Wrong: Custom payment processor for subscriptions// await CustomPayment.charge(user, 9.99);2. Unklare Preise oder versteckte Kosten
Überschrift: 2. Unklare Preise oder versteckte KostenWarum es scheitert:
- Nur der Preis wird nach dem Klicken auf den Kauf angezeigt
- Zusätzliche Gebühren werden nicht im Voraus offengelegt
- Vage Abonnementbedingungen
Prävention:
function PurchaseScreen({ product }) { return ( <div> {/* Show ALL costs upfront */} <h2>Premium Subscription</h2>
<div className="pricing"> <p className="price">{product.priceString}/month</p> <p className="taxes">Taxes may apply based on location</p> </div>
<div className="features"> <h3>Includes:</h3> <ul> <li>Ad-free experience</li> <li>Unlimited cloud storage</li> <li>Priority support</li> </ul> </div>
<div className="terms"> <p> Subscription renews automatically unless cancelled at least 24 hours before the end of the current period. </p> <p> Manage or cancel in Google Play Subscriptions. </p> </div>
<button onClick={handlePurchase}> Start Subscription </button> </div> );}3. Täuschende Abonnementmuster
Abschnitt mit dem Titel „3. Täuschende Abonnementmuster“Warum es scheitert:
- Vorab ausgewählte Premiumoptionen
- Billige Alternativen versteckt
- Kündigung erschwert
- Falsche Dringlichkeit (Nur noch 3 Plätze frei!)


Vorbeugung:
- Zeige alle Abonnementebenen gleichzeitig an
- Mache die Kündigung klar und zugänglich
- Vermeide Countdown-Zähler oder falsche Knappheit
- Benutze keine dunklen Muster, um teure Optionen zu bewerben
4. Unvollständige Tests
Abschnitt mit dem Titel "4. Unvollständige Tests"Warum es scheitert:
- Die App stürzt beim Kauf ab
- Produkte laden nicht
- Kaufbestätigung wird nicht angezeigt
- Premium-Funktionen werden nicht nach Kauf freigeschaltet
- Tests fanden nur bei sideloaded Builds statt und nicht auf einem Play-Installations-Testtrack
Prävention:
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Comprehensive testing before submissionasync function testPurchaseFlow() { try { // 1. Test product loading const { products } = await NativePurchases.getProducts({ productIdentifiers: ['premium_monthly', 'premium_yearly'], productType: PURCHASE_TYPE.SUBS, }); console.log('✓ Products loaded:', products.length);
// 2. Test purchase flow const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'premium_monthly', planIdentifier: 'monthly-plan', productType: PURCHASE_TYPE.SUBS, }); console.log('✓ Purchase completed', transaction.transactionId);
// 3. Verify entitlements const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, }); if ( purchases.some( (purchase) => purchase.productIdentifier === 'premium_monthly' && ['PURCHASED', '1'].includes(purchase.purchaseState ?? '') && purchase.isAcknowledged, ) ) { console.log('✓ Premium features unlocked'); }
// 4. Test restore await NativePurchases.restorePurchases(); console.log('✓ Restore works');
} catch (error) { console.error('✗ Test failed:', error); }}5. Verletzungen der Datenschutzrichtlinie
Abschnitt mit dem Titel „5. Verletzungen der Datenschutzrichtlinie“Warum es scheitert:
- Kein Datenschutzlink in der App
- Datenschutzrichtlinie nicht zugänglich
- Nicht offengelegte Datensammlung
- Sicherheitsdatenabschnitt fehlerhaft
Prävention:
- Fügen Sie eine Datenschutzrichtlinie zur Play Store-Auflistung hinzu
- Fügen Sie einen Link in den App-Einstellungen hinzu
- Sicherheitsdatenabschnitt genau ausfüllen
- Aktualisieren Sie die Richtlinie bei der Hinzufügung neuer Datenerfassung
Alternative Bezahlprogramme
Abschnitt mit dem Titel „Alternative Bezahlprogramme“Google's alternative Bezahlprogramme sind regionsspezifisch und können sich ändern. Wenn Sie etwas anderes als das Standard-Bezahlprogramm von Google Play verwenden möchten, bestätigen Sie die genaue Markttauglichkeit, erforderliche APIs und Offenlegungssprache im Play Console sofort vor der Implementierung.
Abonnement-Verwaltung
Abschnitt mit dem Titel „Abonnement-Verwaltung“Einfache Kündigung
Abschnitt mit dem Titel „Einfache Kündigung“Benutzer müssen in der Lage sein:
- Aktive Abonnements leicht zu überprüfen
- Ohne Unterstützung kontaktieren zu müssen
- Zu verstehen, wann die Kündigung wirksam wird
Implementierung:
import { NativePurchases } from '@capgo/native-purchases';
function ManageSubscriptionButton() { const openManagement = async () => { try { // Opens Google Play subscription management await NativePurchases.manageSubscriptions(); } catch (error) { // Fallback to direct URL const playStoreUrl = 'https://play.google.com/store/account/subscriptions'; window.open(playStoreUrl, '_blank'); } };
return ( <button onClick={openManagement}> Manage Subscription in Google Play </button> );}Kündigungsfrist
Abschnitt mit dem Titel „Kündigungsfrist“Erforderliche Offenlegung:
- Wann tritt die Kündigung in Kraft?
- Behalten Benutzer bis zum Ende der Laufzeit Zugriff?
- Sind Teilrückerstattungen verfügbar?
function CancellationInfo() { return ( <div className="cancellation-info"> <h3>Cancellation Policy</h3> <ul> <li>Cancel anytime in Google Play</li> <li>Access continues until end of billing period</li> <li>No refunds for partial periods</li> <li>Resubscribe anytime to regain access</li> </ul>
<button onClick={() => NativePurchases.manageSubscriptions()}> Manage in Google Play </button> </div> );}Vorab-Überprüfungsliste
Abschnitt mit dem Titel „Vorab-Überprüfungsliste“
-
Zahlungsabrechnungsimplementierung überprüfen
- Verwendung von Google Play Billing (über native-purchases)
- Alle Abonnementprodukte, die in Play Console erstellt wurden
- Basiskonzepte und Angebote sind korrekt konfiguriert
- Produkte werden aktiviert und veröffentlicht
- Preise werden für alle Ziel-Länder gesetzt
-
Testkauf-Flüsse
- Erstelle Lizenz-Testkonto
- Installiere die Build von einer Play-Test-Track
- Teste jede Abonnementstufe
- Überprüfe, ob Produkte korrekt geladen werden
- Teste Kaufabschluss
- Bestätige das Testkaufbanner erscheint Überprüfe, ob Premium-Funktionen freigeschaltet werden
- Test Purchase Flows
- Test-Abonnement-Wiederherstellung
- Testen auf mehreren Geräten
-
Alle Kopien überprüfen
- Preise werden klar angezeigt, bevor der Kauf getätigt wird
- Alle Gebühren werden vorab offengelegt
- Die Abonnementbedingungen sind klar
- Der Stornierungsprozess wird erklärt
- Keine irreführenden Angaben
-
Inhalt und Datenschutz der App
- Datenschutzrichtlinie in Play Console verlinkt
- Datenschutzrichtlinie in der App zugänglich
- Anzeigen-Erklärung abgeschlossen
- Anweisungen zum Zugriff auf die App wurden hinzugefügt, wenn die App gesperrt ist
- Daten-Sicherheitsabschnitt wurde genau abgeschlossen
- Berechtigungen wurden gerechtfertigt und dokumentiert
-
Inhaltseinstufung und Zielgruppe
- Inhaltsbewertungsfragebogen vollständig ausfüllen
- Zielgruppe und Inhalt vollständig ausfüllen
- Stellen Sie sicher, dass die Einstufung dem tatsächlichen Inhalt entspricht
- Erklären Sie in-App-Käufe im Fragebogen
-
Store-Listing vorbereiten
- App-Beschreibung ist genau
- Kurze Beschreibung ist innerhalb von 80 Zeichen
- Vollständige Beschreibung ist innerhalb von 4000 Zeichen
- Mindestens 2 Telefonbilder hochgeladen
- 1024x500-Funktionssymbol hochgeladen
- Bilder zeigen die aktuelle Version
- Alle erforderlichen Assets hochgeladen
Überprüfung der Zeitreihe
Abschnitt mit dem Titel „Überprüfung der Zeitreihe“Produktionszugriff für neue persönliche Konten: Normalerweise 7 Tage oder weniger nach der Antragstellung Erste Produktionsprüfung: Oftmals schneller als eine erste Veröffentlichung, aber immer noch geprüft Updates: Oftmals schneller als eine erste Veröffentlichung, aber immer noch geprüft Ansprüche: Planen Sie für mehrere Tage und geben Sie genaue Reparaturen und Anweisungen für die Rezensionen
:::tip Rolling Reviews Im Gegensatz zu Apple führt Google Apps ständig eine Rezension durch. Ihr App kann zu jedem Zeitpunkt während der Rezensionszeit live gehen, nicht zu einem bestimmten Zeitpunkt. :::
Testen Sie vor der Einreichung
Abschnitt mit dem Titel “Testen Sie vor der Einreichung”Lizenztesten
Abschnitt mit dem Titel “Lizenztesten”-
Testkonto hinzufügen:
- Gehe zur Play Console
- Einstellungen > Lizenztesten
- Hinzufügen eines Gmail-Kontos für das Testen
-
Testen Sie in Sandbox:
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Test purchases with license test accountasync function testInSandbox() { const { isBillingSupported } = await NativePurchases.isBillingSupported(); if (!isBillingSupported) { console.error('Billing not supported in this environment'); return; }
// Fetch products (returns test pricing when using a license tester) const { products } = await NativePurchases.getProducts({ productIdentifiers: ['premium_monthly'], productType: PURCHASE_TYPE.SUBS, });
console.log('Test products:', products);
// Make test purchase (no charge) const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'premium_monthly', planIdentifier: 'monthly-plan', productType: PURCHASE_TYPE.SUBS, });
console.log('Test purchase complete:', transaction.transactionId);}- Testbanner überprüfen:
- Bei Kauf mit Testkonto
- Sollte die Benachrichtigung „Testkauf“ sehen
- Keine echten Gebühren entstehen
Internes und geschlossenes Testverfolgungsverfahren
Abschnitt mit dem Titel „Internes und geschlossenes Testverfolgungsverfahren“Vor der Produktionsfreigabe:
- Erstelle ein internes Testverfahren für schnelle QA oder ein geschlossenes Testverfahren für eine breitere Testphase vorbereiten
- eine unterschriebene Datei hochladen
.aabund die Testversion veröffentlichen - Testerteam-Email-Adressen hinzufügen und den Opt-in-Link teilen
- Haben Sie die Testversion von Google Play installieren lassen
- Überprüfen Sie, ob die Kaufabläufe von Anfang bis Ende auf der mit Google Play installierten Version funktionieren
- Wenn Ihr persönlicher Entwicklerkonto nach dem 13. November 2023 erstellt wurde, sollten Sie mindestens 12 Tester für 14 aufeinanderfolgende Tage in einer geschlossenen Testversion eintragen, bevor Sie eine Produktion beantragen
Ein sideloadter Debug-Build ist kein Ersatz für eine auf Google Play installierte Testversion, wenn Google Play Billing validiert werden soll
Best Practices für native Kaufvorgänge
Abschnitt mit dem Titel “Best Practices for Native Purchases”Alle Kaufzustände bearbeiten
Abschnitt mit dem Titel “Handle All Purchase States”import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function handlePurchase(productId: string, planIdentifier?: string) { try { setLoading(true);
const transaction = await NativePurchases.purchaseProduct({ productIdentifier: productId, planIdentifier, productType: planIdentifier ? PURCHASE_TYPE.SUBS : PURCHASE_TYPE.INAPP, });
console.log('Purchase token:', transaction.purchaseToken ?? transaction.receipt);
// Success - check entitlements from the store const { purchases } = await NativePurchases.getPurchases({ productType: planIdentifier ? PURCHASE_TYPE.SUBS : PURCHASE_TYPE.INAPP, });
const isOwned = purchases.some( (purchase) => purchase.productIdentifier === productId && (purchase.purchaseState === 'PURCHASED' || purchase.purchaseState === '1') && purchase.isAcknowledged, );
if (isOwned) { unlockPremiumFeatures(); showSuccess('Premium activated!'); }
} catch (error: any) { // Handle specific error cases switch (error.code) { case 'USER_CANCELLED': // User backed out - no error needed console.log('Purchase cancelled'); break;
case 'ITEM_ALREADY_OWNED': // They already own it - restore instead showInfo('You already own this! Restoring...'); await NativePurchases.restorePurchases(); break;
case 'ITEM_UNAVAILABLE': showError('This subscription is currently unavailable. Please try again later.'); break;
case 'NETWORK_ERROR': showError('Network error. Please check your connection and try again.'); break;
default: showError('Purchase failed. Please try again.'); console.error('Purchase error:', error); } } finally { setLoading(false); }}Implementieren Sie die Wiederherstellung von Kaufleistungen
Abschnitt mit dem Titel „Implementieren Sie die Wiederherstellung von Kaufleistungen“import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
function RestorePurchasesButton() { const [loading, setLoading] = useState(false);
const handleRestore = async () => { setLoading(true);
try { await NativePurchases.restorePurchases();
const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, });
const hasSubscription = purchases.some( (purchase) => purchase.productType === 'subs' && purchase.isAcknowledged, );
if (hasSubscription) { unlockPremiumFeatures(); showSuccess('Subscriptions restored!'); return; }
// Check one-time unlocks if needed const { purchases: iaps } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.INAPP, }); const hasInApp = iaps.some((purchase) => purchase.productIdentifier === 'premium_unlock');
if (hasInApp) { unlockPremiumFeatures(); showSuccess('Previous purchases restored!'); return; }
showInfo('No previous purchases found.'); } catch (error) { showError('Failed to restore purchases. Please try again.'); } finally { setLoading(false); } };
return ( <button onClick={handleRestore} disabled={loading}> {loading ? 'Restoring...' : 'Restore Purchases'} </button> );}Überprüfen Sie den Abonnementstatus
Abschnitt mit dem Titel „Überprüfen Sie den Abonnementstatus“import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function checkSubscriptionStatus() { try { const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, });
const subscription = purchases.find( (purchase) => purchase.productIdentifier === 'premium_monthly' && (purchase.purchaseState === 'PURCHASED' || purchase.purchaseState === '1') && purchase.isAcknowledged, );
if (!subscription) { showPaywall(); return; }
console.log('Subscription active:', { productId: subscription.productIdentifier, expiresAt: subscription.expirationDate, willRenew: subscription.willCancel === false, purchaseToken: subscription.purchaseToken, });
unlockPremiumFeatures(); } catch (error) { console.error('Failed to check subscription:', error); }}Wenn Ihre App abgelehnt wird
Abschnitt mit dem Titel „Wenn Ihre App abgelehnt wird“Gemeinsame Verstoß gegen Richtlinien
Abschnitt mit dem Titel „Gemeinsame Verstoß gegen Richtlinien“Zahlungsrichtlinie:
- Keine Verwendung von Google Play Billing
- Irreführende Abonnementbedingungen
- Versteckte Kosten
Benutzerdatenschutzrichtlinie:
- Fehlende Datenschutzrichtlinie
- Unzutreffende Angaben zur Daten-Sicherheit
- Übermäßige Berechtigungen
Schritte zur Behebung
Abschnitt mit dem Titel „Schritte zur Behebung“-
Überprüfen Sie die Verstoßanzeige
- Lesen Sie die spezifische Richtlinie, die zitiert wird
- Verstehen Sie, was Google beanstandet hat
- Überprüfen Sie die Beispiele, die sie bereitgestellt haben
-
Fehler beheben
- Adresse die Wurzelursache, nicht nur die Symptome
- Sorgfältig testen, nachdem der Fehler behoben wurde
- Alle Änderungen dokumentieren
-
Bitten Sie um Klarstellung (falls zutreffend)
Subject: Policy Violation Appeal - [App Name]Dear Google Play Review Team,I have received notification that my app violates [Policy X.Y].I have made the following changes to comply:1. [Specific change made]2. [Specific change made]3. [Specific change made]The updated version [version number] addresses all concerns raised.Test account for verification:Email: test@example.comPassword: TestPass123Thank you for your consideration.
-
Erneut einreichen oder Aktualisieren
- Festen, korrigierten Version hochladen
- Erneut für die Überprüfung einreichen
- Status überwachen in Play Console
Zusätzliche Ressourcen
Abschnitt mit dem Titel „Zusätzliche Ressourcen“- Google Play-Entwickler-Zentrum für Richtlinien
- Dokumentation zu Google Play-Billing
- Best Practices für Abonnements
- Ihre App auf die Überprüfung vorbereiten
- Anforderungen für die Testung neuer persönlicher Konten
- Hilfe für Play Console
Brauchen Sie Fachexperten-Hilfe?
Abschnitt mit dem Titel „Brauchen Sie Fachexperten-Hilfe?“Die Navigation durch die Überprüfung im Play Store kann komplex sein, insbesondere wenn Sie die Zahlungsverpflichtung, die App-Inhaltsdeklaration und die Einrichtung des Testtracks kombinieren müssen. Wenn Sie persönliche Unterstützung benötigen:
Buchen Sie eine Beratungsveranstaltung mit unserem Team für Hilfe bei:
- Vollständige Play Store-Bewertungsprüfung
- Einstellung und Einrichtung des Testtracks sowie Rekrutierung von Testern
- Überprüfung der IAP-Implementierung
- Daten-Sicherheit und Datenschutz-Konformität
- Fehlerbehebung und Widerspruch bei Ablehnung
- Vollständiger App-Submission-Prozess
Unsere Experten haben bereits Hunderte von Apps durch erfolgreiche Play Store-Submission geführt und können Ihnen helfen, die aktuellen Anforderungen zu bewältigen.
Support
UnterstützungBenötigen Sie Hilfe bei der Implementierung?
- Überprüfen Sie die Native Purchases-Dokumentation
- Überprüfen Anleitung für das Android-Sandbox-Testen
- Besuchen Google Play Developer Support
Weitermachen von den Android Play Store Review Richtlinien für IAP
Abschnitt mit dem Titel “Weitermachen von den Android Play Store Review Richtlinien für IAP”Wenn Sie Android Play Store Review Richtlinien für IAP zur Planung von Sicherheit und Compliance verwenden, verbinden Sie es mit Verwenden Sie @capgo/native-purchases für die native Fähigkeit in @capgo/native-purchases Verschlüsselung für die Implementierungsdetails in Verschlüsselung Kongruenz für die Implementierungsdetails in Kongruenz Capgo Sicherheits-Scanner für den Produktworkflow in Capgo Sicherheits-Scanner, und Capgo Sicherheit für den Produktworkflow in Capgo Sicherheit.