iOS App Store-Bewertungsvorschriften für IAP
Ein Setup-Vorlage mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
Um Ihr App auf dem App Store zu genehmigen, erfordert es sorgfältige Aufmerksamkeit der Richtlinien von Apple, insbesondere bei der Implementierung von In-App-Käufen und Abonnements. Diese Anleitung deckt alles ab, was Sie wissen müssen, um die Überprüfung auf Ihrem ersten Einreichungsdatum zu bestehen.

Bevor Sie Einreichen
Abschnitt mit dem Titel ‘Bevor Sie Einreichen’Abschluss der App Store Connect-Einrichtung
Abschnitt mit dem Titel ‘Abschluss der App Store Connect-Einrichtung’Stellen Sie sicher, dass das App-Record selbst vollständig ist, bevor Apple Ihre Kaufablaufprüfung durchführt:
- Ein Fügen Sie eine im App Store Connect
- Ein Fügen Sie eine dies führt zu echten Kontaktinformationen für Benutzer
- Erstellen Sie das Altersfreigabe Fragebogen, damit die App veröffentlicht werden kann
- Fügen Sie Kontaktinformationen für App-Review und klare Notizen des Rezensenten
- Wenn ein Login erforderlich ist, stellen Sie ein Demo-Konto bereit, das während der Überprüfung nicht abläuft
Vorbereiten von echten Bildern
Abschnitt mit dem Titel „Vorbereiten von echten Bildern“- Use current screenshots from the actual build under review
- Für iPhone,
1290 x 2796Bereiten Sie echte Screenshots vor - Wenn Ihre App auf iPad läuft, laden Sie auch iPad-Bildschirmfotos hoch
- Aktuell akzeptierte große iPad-Größen umfassen
2064 x 2752(13 Zoll) und2048 x 2732(12,9 Zoll) - Strecken Sie iPhone-Bildschirmfotos nie, um iPad-Unterstützung vorzutäuschen
Dry-Run die Bewertungsroutine in TestFlight
Abschnitt mit dem Titel „Dry-Run der Bewertungsreise in TestFlight“Führen Sie den genauen Weg durch, den Apple auf einem realen Gerät verfolgt:
- Installieren Sie die neueste Version aus TestFlight
- Melden Sie sich mit dem Rezensionskonto an, das Sie bereitstellen möchten
- Erreichen Sie die Paywall ohne versteckte Gesten oder Debug-Menüs
- Abschließen Sie Kauf-, Wiederherstellungs- und Abonnement-Flüsse
- Überprüfen Sie, ob die App korrekt funktioniert, wenn die Berechtigungen abgelehnt werden
In-App-Kaufanforderungen
Abschnitt mit dem Titel “In-App-Kaufanforderungen”Preistransparenz (Kritisch)
Abschnitt mit dem Titel “Preistransparenz (Kritisch)”Apple erfordert eine klare Preisoffenlegung vor jedem Kauf:
Zwingend erforderliche Elemente:
- Zeigen Sie den genauen Preis vor dem Kaufbutton an
- Zeigen Sie die Abrechnungsfrist (z.B. “9,99 $/Monat”) an
- Erklären Sie klar, was Benutzer für ihr Geld erhalten
- Anzeigen Sie, wann Gebühren anfallen
Häufige Ablehnung:
"Die Abonnementpreise müssen klar und unmittelbar sein."
:::warn Preisgültigkeit Alle Preise müssen übereinstimmen mit:
- App Store-Metadatenliste
- In-App-Einkaufsbildschirme
- Abonnementverwaltungsbildschirme
Even ein $1-Disparitäten zwischen der Store-Liste ($4,99) und der App ($5,99) wird automatische Ablehnung auslösen. :::
Abonnementplan-Präsentation
Abschnitt mit dem Titel "Abonnementplan-Präsentation"Zu den erforderlichen Offenlegungen gehören:
- Alle verfügbaren Abonnementebenen werden zusammen angezeigt
- Eine klare Vergleichbarkeit der Funktionen pro Ebene
- Keine automatische Abonnements auf Premiumebenen durch UI-Tricke
- Einfache Abbestellungsanweisungen finden

Beispiel für eine konforme Benutzeroberfläche:
import { NativePurchases } from '@capgo/native-purchases';
function SubscriptionScreen() { return ( <div> <h2>Choose Your Plan</h2>
{/* Show all tiers equally */} <PlanCard title="Basic" price="$4.99/month" features={['Feature A', 'Feature B']} /> <PlanCard title="Premium" price="$9.99/month" features={['All Basic', 'Feature C', 'Feature D']} highlighted={false} // Don't force premium />
{/* Clear cancellation info */} <Text> Cancel anytime in Settings > Subscriptions. No refunds for partial periods. </Text> </div> );}Wiederherstellen von Kaufleistungen
Wiederherstellung von KaufleistungenErforderliche Implementierung:
Jedes App mit IAP muss eine Möglichkeit bieten, dass Benutzer ihre vorherigen Kaufs ohne Unterstützung wiederherstellen können.
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function restorePurchases() { try { await NativePurchases.restorePurchases();
const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, });
const activeSub = purchases.find( (purchase) => purchase.isActive && purchase.expirationDate, );
if (activeSub) { unlockPremiumFeatures(); showMessage('Purchases restored successfully!'); return; }
const { purchases: iaps } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.INAPP, }); const hasIap = iaps.some((purchase) => purchase.productIdentifier === 'premium_unlock');
showMessage( hasIap ? 'Premium purchase restored!' : 'No previous purchases found.', ); } catch (error) { showError('Failed to restore purchases. Please try again.'); }}
// Add a visible "Restore Purchases" button<Button onClick={restorePurchases}> Restore Purchases</Button>Häufige Ablehnungsgründe
Section titled “Common Rejection Reasons”1. App Crashes oder Funktionen nicht funktionieren
Abschnitt mit dem Titel „1. App Crashes oder Funktionen nicht funktionieren“Warum es scheitert:
- Die App stürzt beim Start ab
- Der Kauffluss schlägt fehl
- Funktionen in Bildschirmfotos funktionieren nicht
Prävention:
- Testen Sie auf echten Geräten (nicht nur auf Simulatoren)
- Testen Sie alle Abonnements-Flüsse von Anfang bis Ende
- Überprüfe die Gültigkeit des Kaufbelegs
- Überprüfen Sie die Netzwerkfehlerbehandlung
2. Metadaten stimmen nicht überein
2. Metadaten-MissverhältnisseWeshalb es scheitert:
- Screenshots show features not in current build
- Die Beschreibung erwähnt Funktionen, die nicht existieren
- Preis in Metadaten unterscheidet sich vom In-App-Preis

Verhütung:
// Document exactly what's in each tierconst SUBSCRIPTION_FEATURES = { basic: ['Ad-free', 'Cloud sync', 'Basic themes'], premium: ['Ad-free', 'Cloud sync', 'All themes', 'Priority support']};
// Use these in both your app AND App Store description3. Erklärungen für fehlende Berechtigungen
Abschnitt mit dem Titel “3. Erklärungen für fehlende Berechtigungen”Weshalb es scheitert:
- Kamera/Standort/Gesundheitsdaten ohne Erklärung anfordern
- Zulassungsanfragen in mehreren Bildschirmen tief vergraben
- Vage oder allgemeine Zulassungsbeschreibungen
Prävention:
Aktualisieren Sie Info.plist mit klaren Erklärungen:
<key>NSCameraUsageDescription</key><string>Camera access is needed to scan product barcodes for quick subscription upgrades.</string>
<key>NSLocationWhenInUseUsageDescription</key><string>Location helps us show relevant local content in your Premium subscription.</string>4. Irreführende Werbung
Abschnitt mit dem Titel “4. Irreführende Werbung”Warum es scheitert:
- Weshalb es scheitert: „Weltbeste App“ ohne Beweise
- “Unbegrenzte” Funktionen mit versteckten Grenzen
- Falsche Dringlichkeitsstrategien (“Nur noch 2 Plätze frei!”)


Prävention:
- Seien Sie spezifisch und faktenbasiert in Beschreibungen
- Vermeiden Sie Superlative ohne Beweise
- Drängen Sie Benutzer nicht mit falscher Knappheit
5. Versteckter Stornierungsprozess
Abschnitt mit dem Titel “5. Versteckter Stornierungsprozess”Warum es scheitert:
- Keine Erwähnung, wie man abbestellen kann
- Stornierungstaste verborgen oder verdeckt
- Mehrschrittiger Stornierungsprozess ohne Apple-Flow
Prävention:
// Always inform users about cancellationfunction SubscriptionInfo() { return ( <div> <h3>How to Cancel</h3> <ol> <li>Open iPhone Settings</li> <li>Tap your name at the top</li> <li>Tap Subscriptions</li> <li>Select this app and tap Cancel</li> </ol>
<p>Or manage directly in the App Store app.</p>
<Button onClick={openSubscriptionManagement}> Manage Subscription in Settings </Button> </div> );}
async function openSubscriptionManagement() { // Direct link to iOS subscription management await NativePurchases.showManageSubscriptions();}Datenschutz & Datenverwendung (Abschnitt 5.1.1)
Abschnitt Datenschutz & Datenverwendung (Abschnitt 5.1.1)Apple hat die Datenschutzanforderungen 2025 erheblich verschärft.
Erforderliche Offenlegungen
Erforderliche OffenlegungenWarum Sie es benötigen (spezifischer Einsatzfall)
- Warum Sie es benötigen (spezifischer Anwendungsfall)
- Wenn es verwendet wird
- Wie Daten gespeichert/geshared werden
- Ob es optional oder erforderlich ist
Beispiel: Ordentliche Berechtigungsablauf
Abschnitt mit dem Titel "Beispiel: Ordentlicher Berechtigungsablauf"async function requestCameraPermission() { // Show explanation BEFORE requesting await showDialog({ title: 'Camera Access', message: 'We need camera access to let you scan barcodes for quick product lookup. Your photos are never uploaded or stored.', buttons: ['Not Now', 'Allow'] });
// Then request permission const result = await Camera.requestPermissions(); return result.camera === 'granted';}Datenschutz-Nährwertetiketten
Datenschutz-NährwertetikettenStellen Sie sicher, dass Ihre App Store-Privatsphäre-Labels genau darstellen:
- E-Mail-Adressen (für Rechnungen)
- Geräte-IDs (für Betrugsverhinderung)
- Nutzungsdaten (für Analysen)
- Abschnitt mit dem Titel "Datenschutz-Nährwertetiketten"
Unzutreffende Datenschutzetiketten sind eine häufige Ablehnungsgrund in 2025. Überprüfen Sie Ihre Datenverarbeitung sorgfältig.
Vorabreiche Liste
Abschnitt mit dem Titel „Vorabreiche Liste“
-
Testen Sie alle Kaufströme
- Kauft jeder Abonnementstufe
- Testen Sie kostenlose Testversionen
- Verify introductory offers apply correctly
- Testen Sie die Wiederherstellung von Kaufs
- Überprüfe Familienfreigabe (falls aktiviert)
- Testen Sie auf mehreren Geräten
-
Überprüfen Sie die Preisgängigkeit
- Überprüfe, ob App Store-Metadaten mit In-App-Kosten übereinstimmen
- Überprüfen Sie, ob alle Währungen korrekt sind
- Confirm free trial durations match descriptions
- Überprüfen Sie die Bedingungen für die Einführungsangebote.
-
Überprüfen Sie alle Texte
- Entfernen Sie Platzhalter-Text
- Überprüfen Sie, dass die Behauptungen testbar sind.
- Überprüfen Sie Grammatik und Rechtschreibung
- Ensure descriptions match current build
- Entfernen Sie Erwähnungen von Konkurrenten
-
Testen Sie die Berechtigungen
- Bitten Sie nur um notwendige Berechtigungen
- Zeige klare Erklärungen vor der Anfrage
- Teste die Ablehnung (die App sollte trotzdem funktionieren)
- Überprüfe, ob die Beschreibungen in Info.plist klar sind
-
Vorbereite Testkonto
- Erstelle ein Bewertungskonto, das während der Überprüfung gültig bleibt
- Dokumentiere die Anmeldeinformationen in der App-Bewertungsinformation
- Überprüfe, ob der Rezensent die Paywall erreichen und den Kaufprozess abschließen kann
- Füge zusätzliche Konten oder App-spezifische Schalter in der Notizenzeile ein, wenn nötig
-
Überprüfe die Metadaten
- Bildschirme passen der aktuellen Benutzeroberfläche
- Die Support-URL enthält echte Kontaktinformationen
- Die Datenschutzrichtlinien-URL ist ausgefüllt
- Alterseinstufung passt sich dem Inhalt im Build an
- App-Vorschau-Video (falls vorhanden) zeigt die aktuelle Version
- Beschreibung beschreibt die Funktionen genau
- Datenschutzrichtlinie ist in der App und im Laden verfügbar
-
Schreiben Sie detaillierte Notizen zum Review
Contact:Name: Jane DeveloperEmail: review@yourapp.comPhone: +1 555-0100Test Account:Email: reviewer@test.comPassword: TestPass123!This account does not expire during review.Testing Instructions:1. Log in with test account above2. Tap "Upgrade to Premium" button3. Select "Monthly Premium" subscription4. Complete purchase (no charge in sandbox)5. Verify premium features unlockNote: Subscription pricing is clearly shown before purchase.Cancellation instructions are in Settings > Account.
Review-Zeitplan
Abschnitt mit dem Titel “Review-Zeitplan”
Standard-Review: 24-48 Stunden Hochbetriebszeiten: 3-5 Tage (App Store-Holiday-Veröffentlichungen) Wochenenden: Keine Bewertungen werden bearbeitet Expedierte Überprüfung: Verfügbar für kritische Fehlerbehebungen (Anfrage über App Store Connect)
Gemeinsame Status, die Sie in App Store Connect sehen werden:
Waiting for ReviewIn ReviewPending Developer ReleaseRejected
Schwerpunkt der Einreichung 2026
2026 SubmissionsschwerpunktAktuelle Schwerpunktbereiche
Abschnitt mit dem Titel “Aktuelle Schwerpunkte”1. Abonnement-Klarheit
- Seitliche Vergleiche von Planvergleichen erforderlich
- Keine “dunklen Muster”, die günstigere Optionen verbergen
- Klare Ab- und Aufstiegswege
2. Genauigkeit der Metadaten
- Bildschirmfotos müssen dem zu überprüfenden Build entsprechen
- Für iPad-Bildschirmfotos ist eine iPad-Unterstützung erforderlich
- Die Support-URL und die Datenschutzrichtlinie sollten bereits vor der Einreichung aktiv sein
3. Privatsphäre und Qualität der Bewertungsdetails
- Datenschutzmitteilungen müssen den tatsächlich von Ihren SDKs gesammelten Daten entsprechen
- Die Kontaktinformationen und Notizen für die App-Bewertung sollten auf der ersten Einreichung vollständig sein
- Demo-Kennungen müssen während der gesamten Überprüfungszeit gültig bleiben
4. Vorprüfung der Einreichung
- Apple updates minimum SDK requirements regularly, so confirm the current deadline before uploading a release build
- TestFlight ist der sichere Ort, um die genaue Rezensionsroute vor der Einreichung zu überprüfen
Best Practices für den Native Purchases Plugin
Abschnitt mit dem Titel “Best Practices für den Native Purchases Plugin”Proper Error-Handling implementieren
Abschnitt mit dem Titel “Proper Error-Handling implementieren”import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function handlePurchase(productId: string) { try { const transaction = await NativePurchases.purchaseProduct({ productIdentifier: productId, productType: PURCHASE_TYPE.SUBS, });
// Success await validateReceiptOnServer(transaction.receipt); showSuccess('Subscription activated!'); unlockFeatures();
} catch (error: any) { // Handle specific error cases if (error.code === 'USER_CANCELLED') { // User cancelled - don't show error console.log('Purchase cancelled by user'); } else if (error.code === 'PAYMENT_PENDING') { showInfo('Payment is pending. Please check back later.'); } else if (error.code === 'PRODUCT_ALREADY_PURCHASED') { // Restore instead await NativePurchases.restorePurchases(); } else { // Show user-friendly error showError('Unable to complete purchase. Please try again.'); } }}Anzeige von Ladezuständen
Abschnitt mit dem Titel “Anzeige von Ladezuständen”function PurchaseButton({ productId }: { productId: string }) { const [loading, setLoading] = useState(false);
const handlePurchase = async () => { setLoading(true); try { await NativePurchases.purchaseProduct({ productIdentifier: productId }); } finally { setLoading(false); } };
return ( <button onClick={handlePurchase} disabled={loading}> {loading ? 'Processing...' : 'Subscribe Now'} </button> );}Zeige Bedingungen klar an
Abschnitt mit dem Titel „Zeige Bedingungen klar an“function SubscriptionTerms() { return ( <div className="terms"> <p> Subscription automatically renews unless cancelled at least 24 hours before the end of the current period. </p> <p> Your account will be charged for renewal within 24 hours prior to the end of the current period. </p> <p> Subscriptions may be managed by the user and auto-renewal may be turned off in Account Settings after purchase. </p> <p> <a href="/terms">Terms of Service</a> | <a href="/privacy/">Privacy Policy</a> </p> </div> );}Wenn Dein App-Store-Antrag abgelehnt wird
Section titled “If Your App Gets Rejected”Schritte zur Behebung
Abschnitt mit dem Titel „Schritte zur Behebung“-
Lese die Ablehnung sorgfältig
- Notiere die spezifische Richtlinie, die zitiert wurde (z.B. 3.1.1, 5.1.1)
- Verstehe genau, was Apple beanstandet hat
-
Behebe das Problem gründlich
- Passe nicht nur aus – behebe die Ursache
- Testen Sie die Reparatur ausgiebig
- Dokumentieren Sie die Änderungen
-
Antworten Sie im Resolution Center
Thank you for your feedback. I have addressed the issue:Issue: Subscription pricing not clear upfrontFix: Added explicit pricing display on subscription selectionscreen showing "$9.99/month" before purchase button. Also addedcancellation instructions on the same screen.The changes are in this submission and can be tested using theprovided test account. -
Sofortiger Wiederantrag
- Wiederholungen werden in der Regel schneller geprüft.
- Resubmissionen werden üblicherweise schneller geprüft
Häufig innerhalb von 24 Stunden
BerechtigungsverfahrenWenn Sie die Ablehnung für falsch halten:

- Klicken Sie auf „Begründung“ in App Store Connect
- Bieten Sie klare Beweise:
- Bildschirmfotos, die die Einhaltung nachweisen
- Verweise auf spezifische Richtlinien
- Erklärung, wie Sie die Anforderungen erfüllen
- Seien Sie professionell und faktenbasiert
- Fügen Sie Testkonto hinzu, wenn die Funktion schwer zu finden ist.

Weitere Ressourcen
Abschnitt mit dem Titel „Weitere Ressourcen“- Apple App Store-Bewertungsrichtlinien
- Richtlinien für In-App-Käufe
- Best Practices für Abonnements
- App Store Connect Hilfe
- Bildbeschreibungen
- Plattformversionsinformationen
Wenn Sie noch Probleme haben:
- Die Dokumentation zu Native Purchases
- Check Gemeinsame Fehlerbehebungsprobleme
- Kontaktieren Sie den Apple-Entwickler-Support für Klarstellungen der Richtlinien
Benötigen Sie Fachexperten?
Benötigen Sie Fachexperten-Hilfe?Struggling with app review or need personalized assistance? Buchen Sie einen Beratungstermin mit unserem Team für eine umfassende Unterstützung mit:
- Überprüfung und Optimierung der IAP-Implementierung
- Vorbereitung und Strategie für die App-Bewertung
- Überprüfung des Einreichungschecklisten
- Auflösung von Ablehnungen und Beschwerden
- Vollständige Testung und Validierung
Unsere Experten haben bereits hunderte von Apps erfolgreich durch die Überprüfung gebracht!
Weitergehen von iOS App Store Review Guidelines für IAP
Abschnitt mit dem Titel “Weitergehen von iOS App Store Review Guidelines für IAP”Wenn Sie Live Update verwenden iOS App Store Bewertungsvorgaben für In-App-Käufe Verwenden Sie @__CAPGO_KEEP_0__/native-purchases Verwendung von @capgo/native-purchases für die Implementierungsdetail in @capgo/__CAPGO_KEEP_1__-in-app-review Verwenden Sie @capgo/capacitor-in-app-review für die native Fähigkeit in Verwenden Sie @capgo/capacitor-in-app-review Verwendung von @capgo/capacitor-App-Bewertung für die native Fähigkeit in @capgo/capacitor-In-App-Bewertung @capgo/capacitor-native-Markt für die Implementierungsdetail in Verwenden Sie @capgo/capacitor-native-market Verwenden Sie @capgo/capacitor-native-market Für die native Fähigkeit in @capgo/capacitor-native-market.