Richtlinien für die Bewertung im Android Play Store für IAP
Kopieren Sie eine Einrichtungsanweisung mit den Installationsanweisungen und der vollständigen Markdown-Guideline für diesen Plugin.
Um Ihr Android-App auf Google Play zu genehmigen, müssen Sie sich an Googles Richtlinien halten, 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.
Freigabewegung, die funktioniert
Abschnitt mit dem Titel ‘Freigabewegung, die funktioniert’-
Eine signierte Android-App-Bundle erstellen
Neue Google Play-Apps sollten als Android-App-Bundle (
.aab) hochgeladen werden, nicht als sideloadter Debug-APK.Behalten Sie Ihre
versionCodeerhöhen sich mit jeder Hochladung 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 Play Console Registrierung. Dann wählen Sie in Zuhause > App erstellen, die Sprache, den App/Game-Typ, die kostenlose/gebührenpflichtige Status, die Support-E-Mail und akzeptieren Sie die erforderlichen Erklärungen.
Wählen Sie den kostenlosen/gebührenpflichtigen Status sorgfältig. Google lässt Sie eine bezahlte App später kostenlos machen, aber sobald eine App kostenlos angeboten wird, kann sie nicht mehr in eine bezahlte umgewandelt werden.

-
App-Inhalt und Store-Listing abschließen
Bevor die Produktion überprüft wird, beenden Sie die erforderlichen Play Console-Erklärungen:
- Datenschutzrichtlinie
- Anzeigen
- App-Zugriff
- Zielgruppe und Inhalte
- Inhaltsbewertung
- Datenschutz
- Sensitive Berechtigungen, falls zutreffend
-
Play-Installierter Testtrack ausführen
Mit internem Testing für schnelles QA. Wenn Ihr Entwicklerkonto ein nach dem 13. November 2023 erstelltes persönliches Konto ist, müssen Sie auch ein geschlossenes Test mit mindestens 12 sich freiwillig anmeldenden Testern für 14 aufeinanderfolgende Tage durchführen, bevor Sie Zugriff auf die Produktion erhalten.

-
Zahlungsabwicklung End-to-End überprüfen
Install die App von Google Play, nicht von einem lokal exportierten APK. Dann bestätigen Sie, dass:
- Produkte laden sich von Play richtig
- Der Kaufblatt zeigt ein Testkauf Ein Banner für Lizenzprüfer
- Zugriffsrechte werden nach Kauf freigeschaltet
- Wiederherstellung und Abonnement-Verwaltungsfunktionen funktionieren
Google Play Billing Anforderungen
Abschnitt mit dem Titel “Google Play Billing Anforderungen”Pflichtige Bezahl-System
Abschnitt mit dem Titel “Pflichtige Bezahl-System”Für digitale Güter und Dienstleistungen müssen Sie muss verwenden Sie das Bezahl-System von Google Play:
Digitale Güter (Muss Bezahl-System von Play verwenden):
- Abonnements für Premium-Funktionen
- In-App-Währung oder Guthaben
- Digitale Inhalte (E-Books, Musik, Videos)
- Spielverbesserungen und Power-ups
- App-Entsperungen und Premium-Ebenen
Physische Güter (Kann Bezahl-System von Play nicht verwenden):
- Physische Merchandise
- Realweltliche Dienstleistungen
- Einzelfraktionen an Non-Profit-Organisationen
:::note Abonnementseinstellungen
In der Play Console, konfigurieren Sie Android-Abonnements mit dem aktuellen Abonnement -> Basisplan -> Angebot In native-purchases, übermitteln Sie die Basisplankennung mit planIdentifier.
:::
Implementierung mit Native Purchases
Sektion mit dem Titel “Implementierung mit Native Purchases”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 Offenlegungsanforderungen
Sektion mit dem Titel “Transparenz- und Offenlegungsanforderungen”Vorabkostenoffenlegung
Sektion mit dem Titel “Vorabkostenoffenlegung”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> );}Automatischer Erneuerungsvertragserklärung
Abschnitt mit dem Titel "Automatischer Erneuerungsvertragserklärung"Bevor ein Abonnement automatisch erneuert wird, erfordert Google:
- Benachrichtigung über die Wiederholung der Abonnements
- Preis-Erinnerung
- Zugriff auf die Kündigung
Klarheit bei der Cross-Platform-Preisgestaltung
Abschnitt mit dem Titel “Klarheit bei der Cross-Platform-Preisgestaltung”Wenn Sie das gleiche Entgelt auf mehreren Plattformen verkaufen, sollten Sie die Produktbezeichnung, die Abrechnungsperiode, die inbegriffenen Vorteile und die Wiederholungsanweisungen so einrichten, dass die Benutzer nicht überrascht werden.
Die Preise können legitim unterschiedlich sein, weil von Steuern, lokalen Währungen oder Verkaufseconomics, aber die Kauf-UI darf diese Unterschiede nie verbergen oder einen anderen Wiederholungspreis andeuten, als der, den Google Play berechnen wird.
Anforderungen an die Datenschutzrichtlinie
Abschnitt mit dem Titel “Anforderungen an die Datenschutzrichtlinie”Pflichtige Datenschutzrichtlinie
Abschnitt mit dem Titel „Pflichtige Datenschutzrichtlinie“Wenn Ihre App In-App-Käufe enthält, müssen Sie:
-
Link in der Play Store Liste
- Fügen Sie die Datenschutzrichtlinien-URL in der Play Console hinzu
- Muss öffentlich zugänglich sein
- Muss in der gleichen Sprache wie Ihre App sein
-
Link innerhalb der App
- Zeigen Sie die Datenschutzrichtlinie in den App-Einstellungen an
- Zeigen Sie sie vor der Sammlung von Benutzerdaten an
- Machen Sie sie leicht entdeckbar
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 der Daten
Abschnitt mit dem Titel „Sicherheitsabschnitt der Daten“Google Play erfordert eine detaillierte Offenlegung im Sicherheitsabschnitt der Daten:
Für IAP-Apps muss folgendes deklariert werden:
- Kaufgeschichte-Sammlung
- E-Mail-Adressen (für Rechnungen)
- Geräte-IDs (für Betrugsverhütung)
- Verarbeitung von Zahlungsdaten
- Sammlung von Analyse-Daten
Der Sicherheitsabschnitt der Daten ist gesetzlich bindend. Falsche Deklarationen können zu einer App-Entfernung führen.
Erklärungen zum Inhalt der App
Abschnitt mit dem Titel “App-Inhaltsdeklarationen”Die Google Play-Bewertung geht nicht nur auf das Binärdatei. Bevor eine Produktionsversion freigegeben wird, füllen Sie die Deklarationen auf Policy und Programme > App-Inhalt.
Die Mindestmenge, die sorgfältig geprüft werden sollte:
- Datenschutzrichtlinie: Öffentliche URL im Play-Console, zuzüglich einer in-app-Einstiegspunkt, wenn erforderlich
- Anzeigen: Bekunden Sie, ob die App Anzeigen enthält
- App-Zugriff: Geben Sie den Testern Zugriff oder einen klaren Testpfad, wenn ein Bildschirm gesperrt ist
- Zielgruppe und Inhalt: Passen Sie die echte Zielgruppe der App an
- Inhaltsbewertungen: Fülle das IARC-Fragebogen aus, damit die App nicht als unbewertet markiert wird
- Datenschutz: Erkläre die Sammlung, den Austausch und die Sicherheitspraktiken genau
Häufige Ablehnungsgründe
Abschnitt mit dem Titel „Häufige Ablehnungsgründe“1. Fehlende oder falsche Abrechnungsdurchführung
Abschnitt mit dem Titel “1. Fehlende oder falsche Abrechnungsdurchführung”Warum 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
Prävention:
// ✅ 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);Abschnitt mit dem Titel “2. Unklare Preise oder versteckte Kosten”
Warum es scheitert:Preis wird nur nach Klicken des Kaufs angezeigt
- Zusätzliche Gebühren werden nicht im Voraus offengelegt
- Copy to clipboard
- Unklare 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
- Kostengünstigere Alternativen verbergen
- Kündigung erschweren
- Falsche Dringlichkeit („Nur noch 3 Plätze frei!“)


Vermeidung:
- Alle Abonnementebenen gleichzeitig anzeigen
- Kündigung klar und zugänglich machen
- Zähler oder Falsche Knappheit vermeiden
- Keine dunklen Muster verwenden, um teure Optionen zu drängen
4. Unvollständige Tests
Überschrift: 4. Unvollständige TestsWeshalb es scheitert:
- Die App stürzt beim Kauf ab
- Produkte laden nicht
- Die Kaufbestätigung wird nicht angezeigt
- Premium-Funktionen werden nicht nach dem Kauf freigeschaltet
- Erstes Testen fand nur bei sideloaded Builds statt und nicht auf einem Testtrack über Play
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. Verstoß gegen die Datenschutzrichtlinie
Abschnitt mit dem Titel „5. Verstoß gegen die Datenschutzrichtlinie“Warum es scheitert:
- Keine Datenschutzrichtlinien-Link im App
- Datenschutzrichtlinien nicht zugänglich
- Nicht offengelegte Datenerfassung
- Datensicherheit-Abschnitt ist ungenau
Prävention:
- Fügen Sie eine Datenschutzrichtlinie zur Play Store-Anzeige hinzu
- Link in App-Einstellungen einfügen
- Datenschutzabschnitt genau ausfüllen
- Datenerfassungspolitik aktualisieren, wenn neue Daten gesammelt werden
Alternative Zahlungssysteme
Abschnitt mit dem Titel “Alternative Zahlungssysteme”Googles alternative Zahlungssysteme sind regionsspezifisch und können sich ändern. Wenn Sie etwas anderes als das Standard-Googles-Play-Billing-System 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”Leichtes Abbestellen
Abschnitt mit dem Titel “Kündigung ohne Schwierigkeiten”Benutzer müssen in der Lage sein:
- Aktive Abonnements leicht anzeigen
- Kündigung ohne Kontakt zum Support
- 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ündigungsrücklauffrist
Abschnitt mit dem Titel “Kündigungsrücklauffrist”Erforderliche Offenlegung:
- Wann wirkt die Kündigung?
- Abschnitt mit dem Titel “Kündigungsrücklauffrist”
- 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> );}Überprüfungsliste vor der Einreichung
Überschrift: "Überprüfungsliste vor der Einreichung"
-
Zahlungsdienstleistungsimplementierung überprüfen
- Alle Abonnementprodukte, die in Play Console erstellt wurden
- Basiseinstellungen und Angebote für alle Produkte konfiguriert
- Produkte aktiviert und veröffentlicht
- Preise für alle Zielstaaten festgelegt
- Testkäufe in den Kaufabläufen durchführen
-
Überschrift: "Überprüfungsliste vor der Einreichung"
- Lizenztestkonto erstellen
- Die Veröffentlichung aus einer Play-Test-Track installieren
- Jedes Abonnementstier testen
- Überprüfen, ob Produkte korrekt geladen werden
- Kaufabschluss testen
- Bestätige den Testkauf Bekräftige, dass das
- Banner erscheint
- Überprüfen, ob Premium-Funktionen freigeschaltet sind
- Abonnementwiederherstellung testen
-
Testen Sie auf mehreren Geräten
- Preisgestaltung wird klar vor der Kaufentscheidung angezeigt
- Alle Gebühren werden vorab offengelegt
- Die Abonnementbedingungen sind klar
- Der Stornierungsprozess wird erklärt
- Keine irreführenden Behauptungen
-
App-Inhalt und Datenschutz
- Datenschutzrichtlinie in der Play Console verlinkt
- Datenschutzrichtlinie in der App zugänglich
- Anzeigedarstellung abgeschlossen
- Anweisungen zum App-Zugriff werden hinzugefügt, wenn die App gesperrt ist
- Daten-Sicherheitsabschnitt wird genau abgeschlossen
- Berechtigungen gerechtfertigt und dokumentiert
-
Inhaltseinstufung und Zielgruppe
- Kundenzufriedenheitsfragebogen abschließen
- Zielgruppe und Inhalt abschließen
- Stellen Sie sicher, dass die Einstufung dem tatsächlichen Inhalt entspricht
- In der Fragebogen erkläre Sie die In-App-Käufe
-
Store-Liste vorbereiten
- App-Beschreibung ist genau
- Kurzbeschreibung ist innerhalb von 80 Zeichen
- Vollständige Beschreibung ist innerhalb von 4000 Zeichen
- Zumindest 2 Mobilfunk-Screenshots hochgeladen
- 1024x500-Funktionsscreenshot hochgeladen
- Screenshots zeigen die aktuelle Version
- All erforderliche Assets hochgeladen
Review-Zeitplan
Abschnitt mit dem Titel „Review-Zeitplan“Produktionszugriff für neue persönliche Konten: Häufig 7 Tage oder weniger nach der Antragstellung Erster Produktions-Review: Kontext: Seite/ Bereich: Capgo Builder / native Cloud-Build-Produktseite. Rolle: Kurzer UI-Label oder Navigationselement. Nachrichten-Schlüssel `native_build_builder_credit_first` (Native Build Builder Credit First). Häufig mehrere Tage, manchmal länger, wenn Abrechnungs- oder Richtlinienfragen aufgeworfen werden Updates: Häufig schneller als eine erste Veröffentlichung, aber immer noch geprüft Beschwerden:
Planen Sie mehrere Tage und liefern genaue Korrekturen und Anweisungen für den Rezensenten
Testen vor der Einreichung
Abschnitt mit dem Titel „Testen vor der Einreichung“Lizenztesten
Abschnitt mit dem Titel „Lizenztesten“-
Testkonto hinzufügen:
- Zum Play-Console gehen
- Einstellungen > Lizenztesten
- Gmail-Konto für das Testen hinzufügen
-
Testen 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:
- Wenn Sie mit einem Testkonto kaufen
- Sollte eine Benachrichtigung "Testkauf" sehen
- Keine echten Gebühren auftreten
Intern und Closed Testing Tracks
Abschnitt mit dem Titel "Intern und Closed Testing Tracks"Bevor die Produktion freigegeben wird:
- Erstelle ein internes Testen für schnelles QA oder ein geschlossenes Testen für ein breiteres Testen
- Hochladen eines signierten
.aabund veröffentlichen Sie die Testversion - Test-Email-Adressen hinzufügen und den Opt-in-Link teilen
- Testern die Installation der Build von Google Play ermöglichen
- Überprüfen Sie, ob die Kaufabläufe auf der gesamten Strecke auf der Play-installierten Build funktionieren
- Wenn Ihr Entwicklerkonto nach dem 13. November 2023 erstellt wurde, sollten Sie mindestens 12 Tester für 14 aufeinanderfolgende Tage in einer geschlossenen Testversion mit aktiviertem Opt-in haben, bevor Sie eine Produktion beantragen
Eine sideloadete Debug-Build ist kein Ersatz für eine Play-installierte Testversion, wenn Sie Google Play Billing validieren
Best Practices für Native Einkäufe
Abschnitt mit dem Titel “Best Practices für Native Einkäufe”Alle Kaufzustände behandeln
Abschnitt mit dem Titel “Alle Kaufzustände behandeln”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 Einkäufen
Abschnitt mit dem Titel “Implementieren Sie die Wiederherstellung von Einkäufen”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> );}Abonnementstatus überprüfen
Abschnitt mit dem Titel „Abonnementstatus überprüfen“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ßgründe
Abschnitt mit dem Titel „Gemeinsame Verstoßgründe“Zahlungsrichtlinie:
- Nicht die Google Play-Billing verwenden
- Irreführende Abonnementbedingungen
- Versteckte Kosten
Benutzungsdatenrichtlinie:
- Fehlende Datenschutzrichtlinie
- Unzutreffende Angaben zur Daten-Sicherheit
- Übermäßige Berechtigungen
Schritte zur Lösung
Abschnitt mit dem Titel „Schritte zur Lösung“-
Überprüfen Sie die Verletzungsankündigung
- Lesen Sie die spezifische zitierte Richtlinie
- Verstehen Sie, was Google beanstandet hat
- Überprüfen Sie die von ihnen bereitgestellten Beispiele
-
Beheben Sie das Problem
- Beheben Sie die Ursache, nicht nur die Symptome
- Sorgfältig testen nach der Korrektur
- Alle vorgenommenen Änderungen dokumentieren
-
Bittstellung (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 Version hochladen
- Erneut zur Überprüfung einreichen
- Status im Play-Console überwachen
Zusätzliche Ressourcen
Abschnitt mit dem Titel „Zusätzliche Ressourcen“- Google Play Entwickler Richtlinien Zentrum
- Google Play Billing Dokumentation
- Best Practices für Abonnements
- Vorbereiten Sie Ihre App auf die Überprüfung
- Testanforderungen für neue persönliche Konten
- Play Console-Hilfe
Brauchen Sie Expertenhilfe?
Abschnitt mit dem Titel „Brauchen Sie Expertenhilfe?“Die Navigation durch die Überprüfung im Play Store kann komplex sein, insbesondere wenn Sie die Zahlungsabrechnung, die App-Inhaltsdeklaration und die Test-Track-Einstellung kombinieren müssen. Wenn Sie persönliche Unterstützung benötigen:
Buchen Sie einen Beratungstermin mit unserem Team für Hilfe bei:
- Vollständige Vorbereitung der App für die Überprüfung im Play Store
- Testsetup und Rekrutierung von Testern
- Überprüfung der IAP-Implementierung
- Datenschutz und Einhaltung der Datenschutzvorschriften
- Rejektionsbehebung und Beschwerdeverfahren
- Abschluss des App-Submission-Prozesses
Unsere Experten haben bereits hunderte von Apps durch erfolgreiche Play Store-Submissionen geführt und können Ihnen dabei helfen, die aktuellen Anforderungen zu bewältigen.
Unterstützung
Abschnitt mit dem Titel "Unterstützung"Brauchen Sie Hilfe bei der Implementierung?
- Überprüfen Sie Dokumentation zu Native Purchases
- Überprüfen Sie Android-Sandbox-Testleitfaden
- Besuchen Sie Google Play-Entwickler-Support
Weitergehen Sie von den Richtlinien für IAP im Google Play Store für Android
Abschnitt mit dem Titel “Weitergehen Sie von den Richtlinien für IAP im Google Play Store für Android”Wenn Sie Richtlinien für IAP im Google Play Store für Android zum Planen von Sicherheit und Compliance verwenden, verbinden Sie es mit Verwenden Sie @capgo/native-purchases für die native Fähigkeit in Verwenden Sie @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.