iOS App Store Review Guidelines für IAP
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses Plugin.
Damit deine App im App Store genehmigt wird, musst du Apples Richtlinien genau beachten – besonders bei In-App-Käufen und Abonnements. Dieser Guide zeigt dir alles, was du wissen musst, um schon bei der ersten Einreichung durch die Review zu kommen.

Bevor du einreichst
Abschnitt „Bevor du einreichst“App Store Connect Setup abschließen
Abschnitt „App Store Connect Setup abschließen“Bevor Apple deinen Kaufprozess prüft, stelle sicher, dass der App-Eintrag selbst vollständig ist:
- Füge einen URL der Datenschutzrichtlinie in App Store Connect
- Füge einen Support-URL die zu echten Kontaktinformationen führt
- Vervollständige den Altersfreigabe- Fragebogen, damit die App veröffentlicht werden kann
- Füge Kontaktdaten für den App Review und klare Anmerkungen für die Reviewer
- Falls ein Login erforderlich ist, stelle ein Demo-Konto bereit, das während des Reviews nicht abläuft
Echte Screenshots vorbereiten
Abschnitt „Echte Screenshots vorbereiten“- Verwende aktuelle Screenshots aus dem Build, der gerade geprüft wird
- Für das iPhone:
1290 x 2796(6,7-Zoll) ist die einfachste Standardgröße - Falls deine App auf dem iPad läuft, lade auch iPad-Screenshots hoch
- Aktuell akzeptierte große iPad-Größen sind
2064 x 2752(13-Zoll) und2048 x 2732(12,9-Zoll) - Strecke iPhone-Screenshots niemals, um iPad-Support vorzutäuschen
Reviewer-Journey in TestFlight durchspielen
Abschnitt: „Reviewer-Journey in TestFlight simulieren“Durchlaufe den exakten Pfad, den Apple auf einem echten Gerät nutzen wird:
- Installiere den neuesten Build aus TestFlight
- Melde dich mit dem Reviewer-Account an, den du bereitstellen willst
- Erreiche die Paywall ohne versteckte Gesten oder Debug-Menüs
- Durchlaufe Kauf-, Restore- und Abo-Verwaltungs-Flows
- Prüfe, ob die App bei verweigerten Berechtigungen korrekt funktioniert
Anforderungen für In-App-Käufe
Abschnitt: „Anforderungen für In-App-Käufe“Preistransparenz (kritisch)
Abschnitt: „Preistransparenz (Kritisch)“Apple verlangt eine glasklare Preisangabe vor jedem Kauf:
Essenzielle Elemente:
- Exakten Preis vor dem Kauf-Button anzeigen
- Abrechnungsintervall angeben (z. B. „9,99 €/Monat“)
- Eindeutig kommunizieren, was der Nutzer erhält
- Zeitpunkt der Abbuchung angeben
Häufige Ablehnungsgründe:
„Die Abo-Preise müssen klar und transparent sein.“
:::caution Preis-Konsistenz Alle Preise müssen übereinstimmen in:
- App Store Metadaten-Listing
- In-App-Kauf-Screens
- Screens zur Abo-Verwaltung
Schon eine Abweichung von nur 1 $ zwischen Store-Eintrag ($4,99) und App ($5,99) führt zur automatischen Ablehnung. :::
Präsentation der Abo-Pläne
Abschnitt mit dem Titel „Präsentation der Abo-Pläne“Erforderliche Angaben:
- Alle verfügbaren Abo-Stufen gemeinsam anzeigen
- Klarer Feature-Vergleich pro Stufe
- Kein automatisches Auswählen von Premium-Stufen durch UI-Tricks
- Leicht findbare Kündigungsanweisungen

Beispiel für konforme UI:
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> );}Käufe wiederherstellen
Abschnitt „Käufe wiederherstellen“Erforderliche Implementierung:
Jede App mit IAP muss eine Möglichkeit bieten, frühere Käufe wiederherzustellen, ohne den Support kontaktieren zu müssen.
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
Abschnitt „Häufige Ablehnungsgründe“1. App-Crashes oder defekte Funktionen
Abschnitt „1. App-Abstürze oder defekte Funktionen“Warum es fehlschlägt:
- App stürzt beim Start ab
- Purchase-Flow wird nicht abgeschlossen
- Features aus den Screenshots funktionieren nicht
Prävention:
- Auf echten Geräten testen (nicht nur Simulatoren)
- Alle Subscription-Flows End-to-End testen
- Funktion der Receipt-Validierung prüfen
- Netzwerk-Error-Handling prüfen
2. Metadaten-Abweichungen
Abschnitt mit dem Titel „2. Metadaten-Abweichungen“Warum es fehlschlägt:
- Screenshots zeigen Features, die im aktuellen Build fehlen
- Beschreibung erwähnt Funktionen, die es nicht gibt
- Preise in den Metadaten weichen von den In-App-Preisen ab

Prävention:
// 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. Fehlende Berechtigungserklärungen
Abschnitt mit dem Titel „3. Fehlende Berechtigungserklärungen“Warum es fehlschlägt:
- Kamera/Standort/Health ohne Erklärung anfragen
- Berechtigungsanfragen sind mehrere Screens tief vergraben
- Vage oder generische Berechtigungsbeschreibungen
Prävention:
Aktualisiere dein 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ührendes Marketing
Abschnitt „4. Irreführendes Marketing“Warum es fehlschlägt:
- Behauptungen wie „#1 App weltweit“ ohne Beleg
- „Unbegrenzte“ Features mit versteckten Limits
- Künstliche Verknappung („Nur noch 2 Plätze frei!“)


Prävention:
- Beschreibungen präzise und sachlich halten
- Superlative ohne Belege vermeiden
- Keine künstliche Verknappung nutzen
5. Versteckter Kündigungsprozess
Abschnitt „5. Versteckter Kündigungsprozess“Warum es fehlschlägt:
- Keine Infos zur Kündigung
- Kündigungsbutton versteckt oder schwer findbar
- Mehrstufiger Prozess statt Apples nativem 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 & Datennutzung (Abschnitt 5.1.1)
Abschnitt mit dem Titel „Datenschutz & Datennutzung (Abschnitt 5.1.1)“Apple hat die Datenschutzanforderungen 2025 deutlich verschärft.
Erforderliche Angaben
Abschnitt mit dem Titel „Pflichtangaben“Für jede Berechtigung:
- Warum du es brauchst (konkreter Anwendungsfall)
- Wann es verwendet wird
- Wie Daten gespeichert/geteilt werden
- Ob es optional oder erforderlich ist
Beispiel: Korrekter Permission-Flow
Abschnitt mit dem Titel „Beispiel: Korrekter Permission-Flow“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-Labels
Abschnitt: „Privacy Nutrition Labels“Ensure your App Store privacy labels accurately reflect:
- Erfassung des Kaufverlaufs
- E-Mail-Adressen (für Belege)
- Geräte-IDs (zur Betrugsprävention)
- Nutzungsdaten (für Analytics)
Falsche Privacy Labels sind 2025 ein häufiger Ablehnungsgrund. Prüfen Sie Ihre Datenerfassung sorgfältig.
Checkliste vor dem Einreichen
Abschnitt: „Checkliste vor dem Einreichen“
-
Alle Kaufabläufe testen
- Jede Abo-Stufe kaufen
- Kostenlose Testphasen testen
- Intro-Angebote auf korrekte Anwendung prüfen
- Funktionalität zum Wiederherstellen von Käufen
- Family Sharing prüfen (falls aktiviert)
- Auf mehreren Geräten testen
-
Preiskonsistenz prüfen
- App-Store-Metadaten mit In-App-Preisen abgleichen
- Alle Währungen auf Korrektheit prüfen
- Kostenlose Testzeiträume mit Beschreibungen abgleichen
- Bedingungen der Intro-Angebote auf Korrektheit prüfen
-
Alle Texte prüfen
- Platzhalter-Texte entfernen
- Prüfen, ob Aussagen testbar sind
- Grammatik und Rechtschreibung prüfen
- Beschreibungen mit Build abgleichen
- Konkurrenz-Nennungen entfernen
-
Berechtigungen testen
- Nur notwendige Berechtigungen anfordern
- Klare Erklärungen vor der Anfrage zeigen
- „Ablehnen“-Flows testen (App muss laufen)
- Info.plist-Beschreibungen auf Klarheit prüfen
-
Test-Account vorbereiten
- Review-Account erstellen, der während der Prüfung gültig bleibt
- Login-Daten in den App Review-Informationen hinterlegen
- Prüfen, ob der Reviewer die Paywall erreicht und den Kaufprozess abschließen kann
- Bei Bedarf weitere Accounts oder App-spezifische Switches im Notizfeld angeben
-
Metadaten prüfen
- Screenshots stimmen mit dem aktuellen UI überein
- Support-URL enthält echte Kontaktinformationen
- Datenschutzerklärung-URL ist eingetragen
- Altersfreigabe passt zum Inhalt des Builds
- App-Vorschau-Video (falls vorhanden) zeigt die aktuelle Version
- Beschreibung stellt Features korrekt dar
- Datenschutzerklärung ist in der App und im Store-Listing erreichbar
-
Detaillierte Review-Notizen schreiben
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 „Review Timeline“
Standard-Review: 24–48 Stunden Spitzenzeiten: 3–5 Tage (App Store Feiertage) Wochenenden: Keine Reviews bearbeitet Beschleunigte Prüfung: Verfügbar für kritische Bugfixes (Anfrage via App Store Connect)
Häufige Status in App Store Connect:
Waiting for ReviewIn ReviewPending Developer ReleaseRejected
Fokus für Einreichungen 2026
Abschnitt mit dem Titel „2026 Submission Focus“Aktuelle Schwerpunkte
Abschnitt mit dem Titel „Current Focus Areas“1. Klarheit bei Abonnements
- Vergleich von Tarifen nebeneinander erforderlich
- Keine „Dark Patterns“, die günstigere Optionen verbergen
- Klare Downgrade-/Upgrade-Pfade
2. Korrekte Metadaten
- Screenshots müssen zum geprüften Build passen
- iPad-Screenshots sind erforderlich, wenn die iPad-Unterstützung aktiviert ist
- Support-URL und Datenschutzrichtlinie sollten vor dem Submit bereits live sein
3. Qualität von Datenschutz und Review-Details
- Datenschutzhinweise müssen dem entsprechen, was deine SDKs tatsächlich erfassen
- Kontaktinfos und Notizen für den App Review sollten beim ersten Einreichen vollständig sein
- Demo-Zugangsdaten müssen während des gesamten Review-Zeitraums gültig bleiben
4. Bereit für die Submission
- Apple aktualisiert die Mindestanforderungen für SDK regelmäßig; prüfe daher die aktuelle Deadline, bevor du einen Release-Build hochlädst
- TestFlight ist der sicherste Ort, um den genauen Reviewer-Pfad vor dem Submit zu prüfen
Best Practices für das Native Purchases Plugin
Abschnitt: „Best Practices für das Native Purchases Plugin“Sauberes Error Handling implementieren
Abschnitt: „Fehlerbehandlung korrekt 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.'); } }}Loading States anzeigen
Abschnitt: „Loading States anzeigen“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> );}Nutzungsbedingungen klar anzeigen
Abschnitt: „AGB klar darstellen“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> );}Falls deine App abgelehnt wird
Abschnitt: „Wenn deine App abgelehnt wird“Lösungsschritte
Abschnitt: „Schritte zur Behebung“-
Die Ablehnung sorgfältig lesen
- Die genannte Richtlinie notieren (z. B. 3.1.1, 5.1.1)
- Verstehen, was Apple genau beanstandet hat
-
Das Problem gründlich beheben
- Nicht nur patchen – die Ursache beheben
- Den Fix umfassend testen
- Dokumentieren, was geändert wurde
-
Im Resolution Center antworten
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. -
Zügig erneut einreichen
- Erneute Einreichungen werden meist schneller geprüft
- Meist binnen 24 Stunden
Einspruchsverfahren
Abschnitt „Einspruchsverfahren“Falls die Ablehnung Ihrer Meinung nach falsch ist:

- Klicken Sie in App Store Connect auf „Einspruch“
- Liefern Sie klare Belege:
- Screenshots, die Compliance belegen
- Verweise auf konkrete Guidelines
- Erklärung, wie Sie die Anforderungen erfüllen
- Bleiben Sie professionell und sachlich
- Testaccount angeben, falls Funktionen schwer zu finden sind

Weitere Ressourcen
Abschnitt „Zusätzliche Ressourcen“- Apple App Store Review Guidelines
- In-App-Purchase-Richtlinien
- Best Practices für Abonnements
- App Store Connect Hilfe
- Screenshot-Spezifikationen
- Informationen zur Plattformversion
Wenn weiterhin Probleme auftreten:
- Überprüfe die Native-Purchases-Dokumentation
- Prüfen häufige Troubleshooting-Probleme
- Apple Developer Support zu Richtlinienfragen kontaktieren
Brauchen Sie Expertenhilfe?
Abschnitt mit dem Titel „Expertenhilfe benötigt?“Probleme beim App Review oder brauchst du individuelle Unterstützung? Beratungstermin mit unserem Team buchen für gezielten Support bei:
- IAP-Implementierung prüfen & optimieren
- App-Store-Review: Vorbereitung & Strategie
- Einreichungs-Checkliste prüfen
- Ablehnungen beheben & Einsprüche einlegen
- Vollständiges Testing & Validierung
Unsere Experten haben schon hunderten Apps erfolgreich durchs Review geholfen!
Weiterlesen: iOS App Store Review Guidelines zu IAP
Abschnitt: „Weiterlesen: iOS App Store Review Guidelines für IAP“Wenn du es nutzt iOS App Store Review Guidelines für IAP um Store-Zulassung und Distribution zu planen, verknüpfen Sie es mit @capgo/native-purchases verwenden für die native Funktionalität bei der Nutzung von @capgo/native-purchases, @capgo/capacitor-in-app-review für die Implementierungsdetails in @capgo/capacitor-in-app-review, @capgo/capacitor-in-app-review nutzen für die native Funktion bei der Nutzung von @capgo/capacitor-in-app-review, @capgo/capacitor-native-market für das Implementierungsdetail in @capgo/capacitor-native-market, und @capgo/capacitor-native-market nutzen für die native Funktionalität bei der Nutzung von @capgo/capacitor-native-market.