Directives de Revue de l'App Store iOS pour les Achats In-App
Copiez une commande de configuration avec les étapes d'installation et le guide markdown complet pour ce plugin.
Processus de revue de l'App Store iOS

Avant de Soumettre
Section intitulée « Avant de Soumettre »Terminer la configuration de App Store Connect
Section intitulée « Terminer la configuration de App Store Connect »Avant que Apple examine votre flux d'achat, assurez-vous que le dossier de l'application lui-même est complet :
- Ajoutez un URL de la politique de confidentialité dans App Store Connect
- Ajoutez un URL de support qui mène à des informations de contact réelles pour les utilisateurs
- Terminez la configuration note d'âge questionnaire pour que l'application soit publiable
- Ajouter détails de contact de la revue d'application et notes de réviseur claires
- Si un connexion est requise, fournir un compte de démonstration qui ne expire pas pendant la revue
Préparer des captures d'écran réelles
Section intitulée « Préparez des captures d'écran réelles »- Utilisez les captures d'écran actuelles provenant de la version de l'application en cours de revue
- Pour iPhone,
1290 x 2796(6,7 pouces) est la taille par défaut la plus facile à utiliser - Si votre application fonctionne sur iPad, téléchargez également les captures d'écran iPad
- Les tailles d'écran iPad acceptées incluent
2064 x 2752(13 pouces) et2048 x 2732(12,9 pouces) - N'agrandissez jamais les captures d'écran iPhone pour simuler la compatibilité iPad
Effectuez une simulation de parcours du Reviewer dans TestFlight
Section intitulée « Effectuez une simulation de parcours du Reviewer dans TestFlight »Exécutez le chemin exact que suivra Apple sur un appareil réel :
- Installez la dernière version depuis TestFlight
- Connectez-vous avec le compte de revue que vous prévoyez de fournir
- Parvenez à la barrière payante sans gestes cachés ou menus de débogage
- Flux de paiement, de restauration et de gestion de l'abonnement
- Vérifiez que l'application se comporte toujours correctement si les permissions sont refusées
Exigences d'achat en application
Section intitulée « Exigences d'achat en application »Transparence des tarifs (Critique)
Section intitulée « Transparence des tarifs (Critique) »Apple exige une transparence totale des tarifs avant tout achat :
Éléments obligatoires :
- Affichez le prix exact avant le bouton d'achat
- Afficher la fréquence de facturation (par exemple, « 9,99 €/mois »)
- Déclarer clairement ce que les utilisateurs obtiennent pour leur argent
- Indiquer quand les factures seront émises
Rejet commun :
« Le tarification des abonnements doit être claire et explicite. »
:::attention Cohérence des prix Tous les prix doivent correspondre à :
- Liste de métadonnées de l'App Store
- Écrans d'achat en application
- Écrans de gestion des abonnements
Même une différence de 1 $ entre la liste de l'App Store (4,99 €) et l'application (5,99 €) déclenchera un rejet automatique. :::
Présentation du plan d'abonnement
Section intitulée « Présentation du plan d'abonnement »Informations requises :
- Tous les niveaux de souscription disponibles affichés ensemble
- Comparaison claire des fonctionnalités par niveau
- Pas de redirige vers les niveaux premium par des ruses de l'interface utilisateur
- Instructions de résiliation faciles à trouver

Exemple de conception conforme à la 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> );}Restaurer les achats
Section intitulée « Restaurer les achats »Implémentation requise :
Tout application avec IAP doit fournir un moyen pour les utilisateurs de restaurer les achats précédents sans contacter le support.
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>Raisons de refus courantes
Section intitulée “Raisons de refus courantes”1. L'application s'arrête ou ne fonctionne pas
Section intitulée “1. L'application s'arrête ou ne fonctionne pas”Pourquoi cela ne fonctionne pas :
- L'application s'arrête lors du lancement
- La progression d'achat ne se termine pas
- Les fonctionnalités montrées dans les captures d'écran ne fonctionnent pas
Prévention :
- Tester sur des appareils réels (et non seulement des simulateurs)
- Testez tous les flux d'abonnement de bout en bout
- Vérifiez la validation de la réception
- Vérifiez la gestion des erreurs de réseau
2. Incompatibilités de métadonnées
Section intitulée “2. Incompatibilités de métadonnées”Pourquoi cela ne fonctionne pas :
- Les captures d'écran montrent des fonctionnalités qui ne sont pas dans la dernière version
- La description mentionne des fonctionnalités qui n'existent pas
- Le prix dans les métadonnées diffère de celui en application

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. Explications de permissions manquantes
Section intitulée “3. Explications de permissions manquantes”Pourquoi cela ne fonctionne pas :
- Demande de caméra/emplacement/santé sans explication
- Demandes de permissions enterrées plusieurs écrans plus loin
- Descriptions de permissions vagues ou génériques
Prévention :
Mettez à jour votre Info.plist avec des explications claires :
<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. Publicité trompeuse
Titre de la section « 4. Publicité trompeuse »Pourquoi cela ne fonctionne pas :
- Des affirmations comme « l'application n°1 au monde » sans preuve
- Des « fonctionnalités illimitées » avec des limites cachées
- Des tactiques d'urgence fausses (« Seulement 2 places restantes ! »)


Prévention :
- Sois spécifique et factuel dans tes descriptions
- Évite les superlatifs sans preuve
- N'oblige pas les utilisateurs avec de la fausse pénurie
5. Procédure de Cancellation Cachée
Section intitulée « 5. Procédure de Cancellation Cachée »Pourquoi cela ne fonctionne pas :
- Pas de mention de la façon de se désinscrire
- Bouton de désinscription caché ou obscurci
- Procédure de désinscription en plusieurs étapes sans flux natif d'Apple
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();}Confidentialité & Utilisation des Données (Section 5.1.1)
Section intitulée « Confidentialité & Utilisation des Données (Section 5.1.1) »Apple a considérablement renforcé les exigences de confidentialité en 2025.
Déclarations obligatoires
Section intitulée « Déclarations obligatoires »Pour chaque autorisation :
- Pourquoi vous en avez besoin (utilisation spécifique)
- Lorsqu'il sera utilisé
- Comment les données sont stockées/échangées
- S'agit-il d'une option ou d'une obligation ?
Exemple : Flux d'autorisation approprié
Section intitulée « Exemple : Flux d'autorisation approprié »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';}Étiquettes de nutrition de la vie privée
Section intitulée « Étiquettes de nutrition de la vie privée »Assurez-vous que les étiquettes de confidentialité de votre magasin d'applications reflètent avec précision :
- Collecte d'historique d'achat
- Adresses e-mail (pour les factures)
- Identifiants de dispositif (pour la prévention de la fraude)
- Données d'utilisation (pour les analyses)
Les étiquettes de confidentialité inexactes constituent une raison courante de refus en 2025. Auditez soigneusement la collecte de vos données.
Liste de vérification pré-submission
Liste de vérification pré-submission
-
Achetez chaque niveau de souscription
- Testez les essais gratuits
- Vérifiez que les offres d'introduction s'appliquent correctement
- Vérifiez que les offres d'introduction s'appliquent correctement
- Testez la restauration des achats
- Vérifiez la partage familial (si activé)
- Testez sur plusieurs appareils
-
Vérifiez la cohérence des tarifs
- Vérifiez que les métadonnées de l'App Store correspondent aux prix en application
- Vérifiez que tous les devises sont corrects
- Confirmez que les durées des essais gratuits correspondent aux descriptions
- Vérifiez que les termes des offres d'introduction sont précis
-
Révisez Tous les Textes
- Supprimez le texte de remplacement
- Vérifiez que les revendications sont testables
- Vérifiez la grammaire et l'orthographe
- Assurez-vous que les descriptions correspondent à la version actuelle
- Supprimer les mentions des concurrents
-
Tester les autorisations
- Demander uniquement les autorisations nécessaires
- Afficher des explications claires avant de demander
- Tester les flux de refus (l'application devrait toujours fonctionner)
- Vérifier que les descriptions d'Info.plist sont claires
-
Préparer un compte de test
- Créer un compte de revue qui reste valide pendant la revue
- Documenter les informations de connexion dans les informations de revue de l'application
- Vérifier que le réviseur peut atteindre la barrière payante et terminer le flux de paiement
- Inclure des comptes supplémentaires ou des commutateurs spécifiques à l'application dans le champ Notes si nécessaire
-
Vérifiez les métadonnées
- Les captures d'écran correspondent à l'interface utilisateur actuelle
- L'URL de support inclut des informations de contact réelles
- L'URL de la politique de confidentialité est remplie
- Le niveau d'âge correspond au contenu dans la build
- La vidéo de prévisualisation de l'application (si elle existe) montre la version actuelle
- La description décrit avec précision les fonctionnalités
- La politique de confidentialité est accessible en ligne et depuis la liste des applications
-
Écrivez des notes de révision détaillées
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.
Lignes de temps de la révision
Section intitulée “Lignes de temps de la révision”
Révue standard : 24-48 heures Périodes de pointe : 3-5 jours (lancements de l'App Store pendant les vacances) Week-ends : Aucune revue traitée Révue accélérée : Disponible pour les correctifs critiques de bogues (demande via App Store Connect)
États courants que vous verrez dans App Store Connect :
Waiting for ReviewIn ReviewPending Developer ReleaseRejected
Focus de soumission 2026
Section intitulée “Focus de soumission 2026”Domaines d'attention actuels
Section intitulée “Domaines d'attention actuels”1. Clarté des abonnements
- Comparaisons de plans de côté à côté requises
- Aucun schéma de « dark patterns » qui masque les options moins chères
- Chemins de dégradation/ d'amélioration clairs
2. Exactitude des métadonnées
- Captures d'écran doivent correspondre à la version de build examinée
- Captures d'écran iPad sont requises si le support iPad est activé
- L'URL de support et la politique de confidentialité devraient déjà être en ligne avant la soumission
3. Qualité de détails de la revue de confidentialité
- Les déclarations de confidentialité doivent correspondre à ce que vos SDK collectent réellement
- Les informations de contact et les notes de la revue d'application devraient être complètes lors de la première soumission
- Les informations d'identification de démonstration doivent rester valides pendant toute la fenêtre de revue
4. Préparation de la soumission
- Apple met à jour régulièrement les exigences minimales SDK, confirmez donc la date limite actuelle avant de télécharger une version de mise en production
- TestFlight est le lieu le plus sûr pour vérifier le chemin exact du réviseur avant de soumettre
Meilleures pratiques pour le plugin d'achats natifs
Section intitulée « Meilleures pratiques pour le plugin d'achats natifs »Implémenter un traitement correct des erreurs
Section intitulée « Implémenter un traitement correct des erreurs »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.'); } }}Afficher les états de chargement
Section intitulée « Afficher les états de chargement »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> );}Afficher les termes clairement
Section intitulée « Afficher les termes clairement »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> );}Si votre application est rejetée
Section intitulée « Si votre application est rejetée »Étapes pour résoudre le problème
Section intitulée « Étapes pour résoudre le problème »-
Lisez attentivement le rejet
- Notez la ligne directrice spécifique citée (par exemple, 3.1.1, 5.1.1)
- Comprenez exactement ce que Apple a signalé
-
Réparez l'incident de manière approfondie
- N'appliquez pas juste une correction - réparez la cause racine
- Testez la correction de manière approfondie
- Documentez les modifications apportées
-
Répondez dans le Centre de Résolution
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. -
Résubmittez rapidement
- Les résubmissions sont généralement examinées plus rapidement
- Généralement dans les 24 heures
Procédure d'appel
Section intitulée « Processus d'appel »Si vous pensez que le rejet est incorrect :

- Cliquez sur « Appel » dans App Store Connect
- Fournissez des preuves claires :
- Captures d'écran montrant le respect des exigences
- Références à des lignes directrices spécifiques
- Explication de la manière dont vous remplissez les exigences
- Soyez professionnel et factuel
- Incluez un compte de test si la fonctionnalité est difficile à trouver

Ressources supplémentaires
Section intitulée « Ressources supplémentaires »- Lignes directrices de la plateforme d'applications Apple
- Lignes directrices pour les achats en application
- Meilleures pratiques pour les abonnements
- Aide de la plateforme d'applications Apple
- Spécifications des captures d'écran
- Informations sur les versions des plateformes
Si vous rencontrez toujours des problèmes :
- Vérifiez le Documentation des achats natifs
- Vérifiez problèmes de dépannage courants
- Contactez le support du développeur Apple pour des clarifications sur les lignes directrices
Besoin d'aide experte?
Section intitulée “Besoin d'aide experte?”Vous avez du mal avec la revue de l'application ou avez besoin d'une assistance personnalisée? Réservez un appel de consultation avec notre équipe pour un soutien dédié avec :
- révision et optimisation de l'implémentation de la facturation IAP
- préparation et stratégie de revue de l'App Store
- révision du checklist de soumission
- résolution de rejets et appels
- Validation et test complets
Nos experts ont aidé avec succès des centaines d'applications à passer en revue !
Continuez de la section intitulée « Continuez de la section iOS App Store Review Guidelines pour IAP »
Section intitulée « Continuez de la section iOS App Store Review Guidelines pour IAP »Si vous utilisez iOS App Store Review Guidelines pour IAP pour planifier l'approbation et la distribution de l'application, connectez-le à En utilisant @capgo/native-purchases pour la capacité native dans En utilisant @capgo/native-purchases, En utilisant @capgo/capacitor-in-app-review pour le détail d'implémentation dans En utilisant @capgo/capacitor-in-app-review, En utilisant @capgo/capacitor-in-app-review pour la capacité native dans Utiliser @capgo/capacitor-en-revue-de-l'application @capgo/capacitor-marché-natif pour le détail d'implémentation dans @capgo/capacitor-marché-natif, et Utiliser @capgo/capacitor-marché-natif pour la capacité native dans Utiliser @capgo/capacitor-marché-natif