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'app sullo Store Richieste di Apple richiede molta attenzione, soprattutto quando si implementano acquisti e abbonamenti all'interno dell'app. Questa guida copre tutto ciò di cui hai bisogno per superare la revisione alla tua prima sottoscrizione.

Prima di Invia
Sottosezione intitolata “Prima di Invia”Completa la configurazione di App Store Connect
Sezione intitolata “Completa la configurazione di App Store Connect”Prima che Apple esamini il tuo flusso di acquisto, assicurati che il record dell'app sia completo:
- Aggiungi un URL della politica sulla privacy in App Store Connect
- Aggiungi un URL del supporto che porta a informazioni di contatto reali per gli utenti
- Completa il questionario di valutazione dell'età perché l'app sia pubblicabile
- Aggiungi Dettagli di contatto per la recensione dell'app e note di valutazione chiare
- Se richiesto l'accesso, fornisce un account demo che non scade durante la revisione
Preparare Screenshot Realistici
Sezione intitolata “Preparare Screenshot Realistici”- Usa screenshot correnti dal build reale in revisione
- Per iPhone,
1290 x 2796(6.7 pollici) è la dimensione predefinita più facile da utilizzare - Se il tuo app funziona su iPad, carica anche le schermate di iPad
- Le dimensioni iPad accettate includono
2064 x 2752(13 pollici) e2048 x 2732(12,9 pollici) - Non allungare mai le schermate di iPhone per fingere il supporto iPad
Esegui un Dry-Run del percorso del revisore in TestFlight
Sezione intitolata “Esegui un Dry-Run del percorso del revisore in TestFlight”Esegui il percorso esatto che Apple seguirà su un dispositivo reale:
- Installa l'ultima build da TestFlight
- Accedi con l'account di revisione che intendi fornire
- Raggiungi la paywall senza gesti nascosti o menu di debug
- Flussi di acquisto, ripristino e gestione abbonamenti
- Verifica che l'app funzioni correttamente anche se vengono negate le autorizzazioni
Requisiti per le Vendite In-App
Sezione intitolata “Requisiti per le Vendite In-App”Transparenza dei prezzi (Critico)
Sezione intitolata “Transparenza dei prezzi (Critico)”Apple richiede una chiara disclosure 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
- Indicazione dell'orario delle spese
Rifiuto comune:
“Il prezzo della sottoscrizione deve essere chiaro e immediato.”
:::avvertenza Coerenza dei prezzi Tutti i prezzi devono corrispondere a:
- Elenco di metadata dell'App Store
- Schermate di acquisto in-app
- Schermate di gestione della sottoscrizione
Even una differenza di $1 tra l'elenco del negozio ($4.99) e l'app ($5.99) attiverà il rifiuto automatico. :::
Presentazione del piano di sottoscrizione
Sezione intitolata “Presentazione del piano di sottoscrizione”Informazioni obbligatorie:
- Tutti i piani di sottoscrizione disponibili visualizzati insieme
- Confronto chiaro delle funzionalità per livello
- Nessuna impostazione automatica dei livelli premium attraverso trucchi dell'interfaccia utente
- Istruzioni di cancellazione facili da trovare

Esempio di interfaccia utente conforme:
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 le acquisti
Sezione intitolata “Ripristina le acquisti”Implementazione richiesta:
Ogni app con IAP deve fornire una possibilità per gli utenti di ripristinare le precedenti acquisti 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. L'app si blocca o non funziona correttamente
Sezione intitolata “1. L'app si blocca o non funziona correttamente”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 l'app su dispositivi reali (non solo simulatori)
- Testa tutti i flussi di abbonamento da fine a fine
- Verifica che la validazione del ricevimento funzioni
- Verifica l'errore di rete
2. Mancanze di metadati
Sezione intitolata “2. Mancanze di metadati”Perché Fallisce:
- Le schermate mostrano funzionalità non presenti nella versione corrente
- La descrizione menziona funzionalità che non esistono
- Il prezzo nei metadati differisce da quello 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. Mancanze di spiegazioni sui permessi
Sezione intitolata “3. Mancanze di spiegazioni sui permessi”Why It Fails:
- La richiesta di camera/ubicazione/salute senza spiegazione
- Iscrizioni alle autorizzazioni nascoste a più schermate
- Descrizioni delle autorizzazioni 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:
- Affermazioni come “l'app più popolare al mondo” senza prove
- Caratteristiche “senza limiti” che hanno limiti nascosti
- Tattiche di urgenza false (“Solo 2 posti disponibili!”)


Prevenzione:
- Sii specifico e fattuale nelle descrizioni
- Evita superlativi senza evidenze
- Non costringere gli utenti con false carenze
5. Procedura di Cancellazione Nascosta
Sezione intitolata “5. Procedura di Cancellazione Nascosta”Perché Fallisce:
- Menzione assente su come cancellare
- Pulsante di cancellazione nascosto o oscurato
- Procedura di cancellazione a più fasi senza il 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 e Utilizzo dei Dati (Sezione 5.1.1)
Sezione intitolata “Privacy e Utilizzo dei Dati (Sezione 5.1.1)”Apple ha notevolmente rafforzato le richieste di privacy nel 2025.
Disclosures Obbligatorie
Sezione intitolata “Disclosures Obbligatorie”Per Ogni Autorizzazione:
- Why hai bisogno di questo (uso specifico)
- Quando verrà utilizzato
- Come viene memorizzato/condiviso i dati
- È opzionale o richiesto
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 nutrizione sulla privacy
Sezione intitolata “Etichette di nutrizione sulla privacy”Assicurati che le etichette sulla privacy delle tue App Store riflettano esattamente:
- La raccolta dei dati relativi alle transazioni
- Gli indirizzi email (per le ricevute)
- ID dei dispositivi (per prevenire frodi)
- Dati di utilizzo (per analisi)
Il mancato rispetto delle etichette di privacy è una delle principali ragioni di rifiuto nel 2025. Verificate con attenzione la raccolta dei dati.
Elenco di controllo prima della sottoscrizione
Sezione intitolata “Elenco di controllo prima della sottoscrizione”
-
Testare tutti i flussi di acquisto
- Acquistare ogni livello di sottoscrizione
- Testare le prove gratuite
- Verificare che le offerte introduttive siano applicate correttamente
- Testare la ripristinazione degli acquisti
- Verificare che la condivisione di 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 dei periodi di prova gratuiti corrispondono alle descrizioni
- Controlla che le condizioni degli offerti introduttivi siano accurate
-
Rivista Tutti i Testi
- Elimina il testo di placeholder
- Verifica che le affermazioni siano verificabili
- Controlla la grammatica e l'ortografia
- Assicurati che le descrizioni corrispondano alla versione corrente
- Elimina le menzioni dei concorrenti
-
Testo delle autorizzazioni
- Richiedi solo le autorizzazioni necessarie
- Mostra spiegazioni chiare prima di richiedere
- Testa i flussi di 'Negare' (l'applicazione dovrebbe ancora funzionare)
- Verifica che le descrizioni di Info.plist siano chiare
-
Prepara un account di test
- Creare un account di recensione che rimane valido durante la revisione
- Documenta le credenziali di accesso nell'informazione di recensione dell'app
- Verifica che il revisore possa raggiungere la paywall e completare il flusso di acquisto
- Includi conti aggiuntivi o interfacce di app specifiche nel campo Note se necessario
-
Controlla i Metadati
- I screenshot corrispondono all'interfaccia utente attuale
- Support URL include informazioni di contatto reali
- La URL della politica sulla privacy è compilata
- La classificazione di età corrisponde al contenuto nella build
- Il video di anteprima dell'app (se presente) mostra la versione corrente
- La descrizione descrive con precisione le funzionalità
- La politica sulla privacy è accessibile all'interno dell'app e dalla lista delle applicazioni del store
-
Scrivi Note di Recensione 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 Recensione
Sezione intitolata “Timeline di Recensione”
Recensione Standard: 24-48 ore Periodi di punta: 3-5 giorni (rilevazioni di Natale dell'App Store) Festivi: Non sono state elaborate recensioni Revisione accelerata: Disponibile per correzioni di bug critici (richiesta tramite App Store Connect)
Stati comuni che si vedranno in App Store Connect:
Waiting for ReviewIn ReviewPending Developer ReleaseRejected
2026 Focus sulla sottoscrizione
Sezione intitolata “Focalizzazione sulla presentazione del 2026”Arei di attualità attuali
Sezione intitolata “Arei di attualità attuali”1. Chiarezza della sottoscrizione
- Richiesta di confronto dei piani a lato
- Nessun “trucco oscuro” che nasconda opzioni più economiche
- Percorsi di downgrade/upgrade chiari
2. Precisione dei metadati
- Le schermate devono corrispondere alla build in rassegna
- Le schermate per iPad sono richieste se il supporto per iPad è abilitato
- L'URL di supporto e la politica sulla privacy dovrebbero già essere attivi prima della presentazione
3. Riservatezza e qualità dei dettagli della rassegna
- Le dichiarazioni sulla privacy devono corrispondere a ciò che i propri SDK raccolgono effettivamente
- L'informazione di contatto per la revisione degli app e le note dovrebbero essere complete nella prima sottoscrizione
- Le credenziali del demo devono rimanere valide per tutta la finestra di revisione
4. Prontezza della sottoscrizione
- L'Apple aggiorna regolarmente le minime richieste di SDK, quindi conferma la scadenza corrente prima di caricare un rilascio di costruzione
- TestFlight è il luogo più sicuro per verificare il percorso del revisore esatto prima di sottoscrivere
Pratiche migliori per il plugin delle acquisizioni native
Sezione intitolata “Pratiche migliori per il plugin delle acquisizioni native”Implementare un corretto gestione degli errori
Sezione intitolata “Implementare un corretto gestione degli errori”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 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 Termini Chiaramente
Sezione intitolata “Mostra Termini Chiaramente”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 Rifiutato
Sezione intitolata “Se il tuo App viene Rifiutato”Passaggi per Risolvere
Sezione intitolata “Passaggi 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 l'issue in modo completo
- Non solo ripara - risolvi la causa radice
- Testa la soluzione estensivamente
- 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 prontamente
- Le risubmissioni sono generalmente esaminate più velocemente
- Solitamente entro 24 ore
Procedura di Appello
Sottosezione 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 le richieste
- Sii professionale e fattuale
- Includi l'account di test se la funzionalità è difficile da trovare

Risorse aggiuntive
Sottosezione intitolata “Risorse aggiuntive”- Linee guida di revisione dell'App Store di Apple
- Linee guida per l'acquisto all'interno dell'applicazione
- Pratiche migliori per le sottoscrizioni
- Aiuto per App Store Connect
- Specifiche per le schermate di screenshot
- Informazioni sulla versione del piattaforma
Se hai ancora problemi:
- Recensisci il Dal documento di riferimento per le compravendite native
- Controlla Issue di risoluzione comune
- Contattare il Supporto dello Sviluppatore Apple per chiarimenti sui lineamenti 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 supporto dedicato con:
- Revisione e ottimizzazione dell'implementazione IAP
- Preparazione e strategia per la revisione dell'App Store
- Revisione della checklist di invio
- Risoluzione delle rifiutazioni e ricorso
- Test e validazione completi
I nostri esperti hanno già aiutato con successo centinaia di app a superare la revisione!
Continua da iOS App Store Review Guidelines per IAP
Titolo della sezione “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 Usando @capgo/native-purchases per la capacità nativa in Usando @capgo/native-purchases, @capgo/capacitor-in-app-review per il dettaglio di implementazione in @capgo/capacitor-in-app-review, Usando @capgo/capacitor-in-app-review per la capacità nativa in Usando @capgo/capacitor-in-app-review, @capgo/capacitor-native-market per i dettagli di implementazione in @capgo/capacitor-market nativo, e Usando @capgo/capacitor-market nativo per la capacità nativa in Usando @capgo/capacitor-market nativo.