iOS App Store Review Guidelines per IAP
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Per ottenere l'approvazione del tuo'applicazione sullo Store App è necessario prestare molta attenzione alle linee guida di Apple, soprattutto quando si implementano acquisti e abbonamenti in-app. Questa guida copre tutto ciò di cui hai bisogno per superare la revisione alla tua prima presentazione.

Prima di Invio
Sottosezione intitolata “Prima di Invio”Completa la configurazione di App Store Connect
Sottosezione intitolata “Completa la configurazione di App Store Connect”Prima che Apple esamini il tuo flusso di acquisto, assicurati che il record dell'applicazione stesso sia completo:
- Aggiungi un URL della politica sulla privacy nel App Store Connect
- Aggiungi un Support URL l'indirizzo che porta a informazioni di contatto reali per gli utenti
- Complete il la classificazione di età questionario per rendere l'app pubblicabile
- Aggiungi i dettagli di contatto per la revisione dell'app e le note del revisore chiare
- Se è richiesta la registrazione, fornisce un account demo che non scade durante la revisione
Preparare Screenshot Realistici
Sezione intitolata “Preparare Screenshot Realistici”- Utilizza screenshot correnti dal build reale in rassegna di revisione.
- Per iPhone,
1290 x 2796(6.7 pollici) è la dimensione di default più facile da utilizzare. - Se la tua app funziona su iPad, carica anche screenshot di iPad.
- Le dimensioni di iPad accettate includono
2064 x 2752(13 pollici) e2048 x 2732(12.9 pollici) - Non allungare mai screenshot di iPhone per fingere il supporto a iPad
Esegui il percorso di recensione in Dry-Run in TestFlight
Sottosezione intitolata “Esegui il percorso di recensione in Dry-Run in TestFlight”Esegui il percorso esatto che Apple seguirà su un dispositivo reale:
- Esegui l'installazione della versione più recente da TestFlight
- Accedi con il conto di recensione che hai pianificato di fornire
- Raggiungi la paywall senza gesti nascosti o menu di debug
- Completa le flussi di acquisto, ripristino e gestione abbonamento
- Verifica che l'app si comporti correttamente anche se vengono negati i permessi
Requisiti per le Compravendite in-app
Sottosezione intitolata “Requisiti per le Compravendite in-app”Transparenza dei prezzi (Critico)
Sottosezione intitolata “Transparenza dei prezzi (Critico)”Apple richiede una chiara dichiarazione dei prezzi prima di qualsiasi acquisto:
Elementi da non mancare:
- Mostra il prezzo esatto prima del pulsante di acquisto
- Mostra la frequenza di fatturazione (ad esempio, “9,99 $/mese”)
- Stabilisci chiaramente cosa gli utenti ottengono per il loro denaro
- Indica quando avverranno le addebitazioni
Rifiuto comune:
“Subscription pricing must be clear and upfront.”
Prezzi coerenti: Tutti i prezzi devono corrispondere in:
- Elenco di metadata della Store App
- Schermate di acquisto in-app
- Schermate di gestione delle sottoscrizioni
Even una differenza di $1 tra la lista del negozio ($4.99) e l'app ($5.99) attiverà la rifiutazione automatica. :::
Presentazione del piano di abbonamento
Sezione intitolata “Presentazione del piano di abbonamento”Informazioni obbligatorie:
- Tutti i piani di abbonamento disponibili visualizzati insieme
- Confronto chiaro delle caratteristiche per livello
- Nessuna impostazione automatica dei livelli premium attraverso trucchi dell'interfaccia utente
- Istruzioni di cancellazione facili da trovare

Esempio di interfaccia utente conforme alle norme:
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> );}Ripristina Acquisti
Sezione intitolata “Ripristina Acquisti”Implementazione richiesta:
Ogni app con IAP deve fornire un modo per gli utenti per ripristinare gli acquisti precedenti senza contattare il supporto.
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>Motivi di Rifiuto Comuni
Sezione intitolata “Motivi di Rifiuto Comuni”1. App Crashes o Funzionalità Rotte
Sezione intitolata “1. App Crashes o Funzionalità Rotte”Perché Fallisce:
- L'app si blocca al lancio
- Il flusso di acquisto non riesce a completarsi
- Le funzionalità mostrate nelle schermate non funzionano
Prevenzione:
- Testa su dispositivi reali (non solo simulatori)
- Testa tutti i flussi di abbonamento da fine a fine
- Verifica che la validazione del ricevuto funzioni
- Controlla il trattamento degli errori di rete
2. Incongruenze dei metadati
Sottosezione intitolata “2. Incongruenze dei metadati”Perché Fallisce:
- Le schermate mostrano funzionalità non presenti nella versione corrente
- La descrizione menziona funzionalità che non esistono
- I prezzi nei metadati differiscono da quelli in-app

Prevenzione:
// 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. Spiegazioni mancanti di autorizzazione
Sezione intitolata “3. Spiegazioni mancanti di autorizzazione”Perché fallisce:
- Richiesta di camera/ubicazione/salute senza spiegazione
- Richieste di autorizzazione nascoste a più schermate
- Descrizioni di autorizzazione vaghe o generiche
Prevenzione:
Aggiorna il tuo Info.plist con spiegazioni chiare:
<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. Marketing ingannevole
Sottosezione intitolata “4. Marketing ingannevole”Perché Fallisce:
- Claim come “#1 app nel mondo” senza prova
- Caratteristiche “senza limiti” che hanno limiti nascosti
- Tattiche di urgenza false (“Solo 2 posti disponibili!”)


Prevenzione:
- Sei specifico e fattuale nelle descrizioni
- Evita gli superlativi senza prove
- Non costringere gli utenti con scarsità fittizia
5. Procedura di cancellazione nascosta
Sottosezione intitolata “5. Procedura di cancellazione nascosta”Perché Fallisce:
- Assenza di informazioni su come cancellare
- Bottone di cancellazione nascosto o oscurato
- Procedura di cancellazione a più fasi senza flusso nativo di Apple
Prevenzione:
// 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();}Privacy & Utilizzo dei Dati (Sezione 5.1.1)
Sezione intitolata “Privacy e Utilizzo dei Dati (Sezione 5.1.1)”L'Apple ha notevolmente rafforzato le richieste di privacy nel 2025.
Disclosures obbligatorie
Sezione intitolata “Disclosures obbligatorie”Per ogni autorizzazione:
- Perché ce ne serve (caso d'uso specifico)
- Quando verrà utilizzato
- Come viene memorizzato/condiviso i dati
- Se è facoltativo o obbligatorio
Esempio: Flusso di autorizzazione corretto
Sezione intitolata “Esempio: Flusso di autorizzazione corretto”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';}Etichette di privacy per la nutrizione
Sezione intitolata “Etichette di privacy per la nutrizione”Assicurati che le etichette di privacy per l'App Store siano accurate e riflettano correttamente:
- Raccolta dei dati di acquisto
- Indirizzi email (per le ricevute)
- ID dispositivi (per la prevenzione dei frodi)
- Dati di utilizzo (per l'analisi)
Le etichette di privacy inesatte sono una comune ragione di rifiuto nel 2025. Verifica con attenzione la raccolta dei dati.
Elenco di controllo prima della sottoscrizione
Sezione intitolata “Elenco di controllo prima della sottoscrizione”
-
Testa tutti i flussi di acquisto
- Acquista ogni livello di abbonamento
- Testa le prove gratuite
- Verifica che gli sconti introduttivi siano applicati correttamente
- Testa il ripristino degli acquisti
- Verifica che la condivisione della famiglia (se abilitata) funzioni correttamente
- Testa su più dispositivi
-
Verifica la consistenza dei prezzi
- Controlla che i metadati dell'App Store corrispondano ai prezzi in-app
- Verifica che tutti i valori di valuta siano corretti
- Conferma che le durate delle prove gratuite corrispondano alle descrizioni
- Controlla che le condizioni degli sconti introduttivi siano accurate
-
Rivista Tutta la Copia
- Elimina il testo di placeholder
- Verifica che le affermazioni siano testabili
- Controlla la grammatica e l'ortografia
- Assicurati che le descrizioni corrispondano alla versione corrente del build
- Elimina le menzioni dei concorrenti
-
Testa le autorizzazioni
- Richiedi solo le autorizzazioni necessarie
- Mostra spiegazioni chiare prima di richiedere
- Testa i flussi di 'Negazione' (l'applicazione dovrebbe ancora funzionare)
- Verifica che le descrizioni di Info.plist siano chiare
-
Prepara un account di test
- Crea un account di recensione che rimane valido durante la revisione
- Documenta le credenziali di accesso nell'informazione di valutazione dell'app
- Verifica che il revisore possa raggiungere la barriera pagante e completare il flusso di acquisto
- Includere conti aggiuntivi o interfacce app-specifiche nel campo Note se necessario
-
Controlla i Metadati
- Le schermate corrispondono all'interfaccia attuale
- L'URL del supporto include informazioni di contatto reali
- L'URL della politica sulla privacy è compilato
- La classificazione di età corrisponde al contenuto nella build
- Il video di anteprima dell'app (se presente) mostra la versione corrente
- La descrizione descrive fedelmente le funzionalità
- La politica sulla privacy è accessibile all'interno dell'app e dalla lista dei prodotti
-
Scrivi Note di Valutazione Dettagliate
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.
Timeline di revisione
Sezione intitolata “Timeline di revisione”
Revisione standard: 24-48 ore Periodi di punta: 3-5 giorni (rilevazioni dell'App Store durante le festività) Weekend: Nessuna revisione elaborata Revisione accelerata: Disponibile per correzioni di bug critici (richiesta tramite App Store Connect)
Stati comuni che troverai in App Store Connect:
Waiting for ReviewIn ReviewPending Developer ReleaseRejected
Focalizzazione sulla Sottomissione 2026
Sezione intitolata “Focalizzazione sulla Sottomissione 2026”Aree di Focalizzazione Corrente
Sezione intitolata “Aree di Focalizzazione Corrente”1. Chiarezza delle Sottoscrizioni
- Confronti a faccia a faccia tra le diverse opzioni di piano richiesti
- Nessun 'trucco oscuro' che nasconda opzioni più economiche
- Percorsi chiari per la riduzione/la promozione
2. Precision dei Metadati
- Sono richieste delle schermate che corrispondano alla versione in esame
- Sono richieste delle schermate per iPad se è abilitata la supporto per iPad
- L'URL di supporto e la politica sulla privacy dovrebbero essere già attivi prima della sottoscrizione
3. Qualità dei Dettagli di Recensione e Riservatezza
- I divulgamenti sulla riservatezza devono corrispondere a ciò che i propri SDK raccolgono effettivamente
- L'informazione di contatto per la recensione dell'app e le note dovrebbero essere complete nella prima sottoscrizione
- I credenziali del demo devono rimanere valide per tutta la finestra di revisione
4. Prontezza della Sottoscrizione
- Apple aggiorna regolarmente i requisiti minimi SDK, quindi conferma la scadenza corrente prima di caricare una versione di rilascio
- TestFlight è il luogo più sicuro per verificare il percorso di revisione esatto prima di sottoscrivere
Pratiche Consigliate per il Plugin delle Compravendite Native
Sezione intitolata “Best Practices per Plugin di Acquisto Nativo”Implementa il Trattamento degli Errori Corretto
Sezione intitolata “Implementa il Trattamento degli Errori Corretto”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.'); } }}Visualizza gli Stati di Caricamento
Sezione intitolata “Visualizza gli Stati di Caricamento”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> );}Mostra Chiaramente le Condizioni
Sezione intitolata “Mostra Chiaramente le Condizioni”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> );}Se il Tuo App viene Rifiutata
Sezione intitolata “Se il Tuo App viene Rifiutata”Etappe per Risolvere
Sottosezione intitolata “Etappe per Risolvere”-
Leggi attentamente la rifiutazione
- Nota la specifica norma citata (ad esempio, 3.1.1, 5.1.1)
- Capisci esattamente cosa Apple ha segnalato
-
Risolve il problema in modo approfondito
- Non solo ripara - risolvi la causa radice
- Testa estensivamente la soluzione
- Documenta le modifiche apportate
-
Rispondi nel Centro di Risoluzione
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. -
Risubmetti con urgenza
- Le riasmissioni vengono solitamente esaminate più velocemente
- Di solito entro 24 ore
Procedura di Appello
Sezione intitolata “Procedura di Appello”Se ritiene che la rifiutazione sia errata:

- Clicca su “Appello” in App Store Connect
- Fornisci prove chiare:
- Schermate che mostrano la conformità
- Riferimenti a specifiche linee guida
- Spiegazione di come si soddisfano i requisiti
- Sii professionale e fattuale
- Includi conto di prova se la funzionalità è difficile da trovare

Risorse aggiuntive
Sottosezione intitolata “Risorse aggiuntive”- Linee guida per la revisione delle applicazioni sullo Store App di Apple
- Linee guida per l'acquisto in-app
- Pratiche migliori per le sottoscrizioni
- Aiuto per App Store Connect
- Specifiche per le schermate di screenshot
- Informazioni sulla versione del sistema
Se hai ancora problemi:
- Verifica il documentazione della compravendita nativa
- Controlla problemi di risoluzione comuni
- Contatta il supporto dello sviluppatore Apple per chiarimenti sulla guida
Hai bisogno di aiuto esperto?
Sezione intitolata “Hai bisogno di aiuto esperto?”Stai lottando con la revisione dell'app o hai bisogno di assistenza personalizzata? Prenota una chiamata di consultazione con il nostro team per un supporto dedicato con:
- La revisione e l'ottimizzazione dell'implementazione IAP
- Preparazione e strategia di valutazione dell'App Store
- Revisione della lista di controllo di sottoscrizione
- Risoluzione delle rimostranze e delle richieste di revisione
- Esecuzione di test e validazione completa
I nostri esperti hanno già aiutato centinaia di app a superare la valutazione!
Continua da iOS App Store Review Guidelines per IAP
Sezione intitolata “Continua da iOS App Store Review Guidelines per IAP”Se stai utilizzando iOS App Store Review Guidelines per IAP per pianificare l'approvazione e la distribuzione della store, connettilo con Utilizza @capgo/native-purchases per la capacità nativa in Utilizza @capgo/native-purchases, @capgo/capacitor-recensione all'interno dell'app per i dettagli di implementazione in @capgo/capacitor-recensione all'interno dell'app, Utilizzo di @capgo/capacitor-recensione all'interno dell'app per i dettagli di implementazione in Utilizzo di @capgo/capacitor-recensione all'interno dell'app, @capgo/capacitor-mercato nativo per i dettagli di implementazione in @capgo/capacitor-mercato nativo, e Utilizzo di @capgo/capacitor-mercato nativo per i dettagli di implementazione in Utilizzo di @capgo/capacitor-mercato nativo.