Skip to content

Déploiement sur les stores mobiles

Ce document couvre les règles de soumission Apple App Store (et Google Play), les pièges courants, et les options de distribution adaptées à ce projet.


Contexte du projet

L'app est une Nuxt 3 SPA (WebView potentielle via Capacitor). C'est un outil B2B interne. La distribution Apple Developer Enterprise Program est probablement la meilleure option — voir Distribution recommandée.


Apple App Store — Règles clés

Ce qui est bien vu

Technique

  • App stable, sans crash au lancement et sur les flows principaux
  • Respect des Human Interface Guidelines (navigation native, touch target ≥ 44pt)
  • Permissions demandées uniquement si nécessaires, avec NSUsageDescription explicite
  • Support offline gracieux ou message d'erreur clair si connexion requise
  • Pas de code obfusqué ni de téléchargement de code externe post-installation

Contenu & métadonnées

  • Screenshots réels (pas de maquettes trompeuses)
  • Description qui correspond exactement à ce que fait l'app
  • Onboarding clair ; app utilisable sans compte si les fonctionnalités le permettent

Ce qui fait rejeter

🚫 Règle 3.1.1 — In-App Purchase (IAP)

Tout achat numérique doit passer par le système IAP Apple (commission 30%, 15% < 1M$/an via Small Business Program).

CasAutorisé
Bouton "Acheter sur le web" dans l'app
Lien vers votre site pour payer❌ (sauf US depuis 2024, avec avertissement Apple)
App "Reader" sans IAP ni lien externe✅ (modèle Spotify/Netflix)
IAP natif Apple

🚫 Règle 4.2 — Minimum Functionality (piège WebView)

Les apps qui ne font que wrapper un site web sont rejetées. Une app Capacitor/WebView doit apporter une valeur native réelle :

  • Notifications push
  • Mode offline
  • Accès fichiers, caméra, biométrie (Face ID)
  • Intégration Contacts/Calendrier

Apple vérifie si l'app est disponible sur le web — si oui, elle doit apporter quelque chose en plus.

🚫 Règle 4.3 — Apps clone / spam

Une app qui reproduit une app existante sans valeur ajoutée est rejetée.

🚫 Règle 2.1 — Complétude

Les apps "démo", "en construction" ou avec des features cassées sont rejetées. Chaque bouton et lien doit fonctionner.

🚫 Données privées

  • Collecter plus de données que nécessaire
  • Tracker inter-apps sans ATT consent (App Tracking Transparency — obligatoire depuis iOS 14.5)
  • Ne pas déclarer les données tierces dans la Privacy Nutrition Label

🚫 Login obligatoire pour fonctionnalités de base

Si l'app peut fonctionner sans compte, cette option doit être offerte. Compte obligatoire = justification écrite requise dans les notes de review.


Ce qui a changé récemment (2024-2025)

ChangementImpact
DMA européen (mars 2024)Stores alternatifs autorisés en UE, sideloading via "Notarization" Apple
Liens web (US)Autorisé avec feuille d'avertissement Apple imposée
InteropérabilitéApple ouvre certaines APIs (NFC, etc.) à des tiers en UE
Small Business Program15% de commission pour revenus < 1M$/an

Google Play — Différences principales

  • Review généralement plus rapide (quelques heures vs 1-3 jours chez Apple)
  • Moins strict sur les WebView — une PWA-to-APK passe plus facilement
  • Règles IAP similaires (commission 30%, 15% < 1M$/an)
  • Depuis 2022 : obligation de proposer des alternatives de paiement dans certains pays (Corée du Sud, etc.)
  • Data Safety (équivalent de la Privacy Nutrition Label) obligatoire depuis 2022

Distribution recommandée

Option A — Apple Developer Enterprise Program ⭐ (recommandé pour usage interne)

  • Coût : 299 $/an
  • Distribution : installation directe sur appareils de l'entreprise, sans passer par l'App Store
  • Avantages : zéro review Apple, déploiement immédiat, contrôle total
  • Contrainte : réservé aux apps à usage interne — interdit de distribuer à des clients externes

Option B — App Store public

  • Coût : 99 $/an (Apple Developer Program)
  • Distribution : App Store public, review obligatoire (1-3 jours)
  • À prévoir : Privacy Nutrition Label, ATT, compte de test pour le reviewer

Option C — TestFlight (bêta)

  • Inclus dans le Developer Program (99$/an)
  • Jusqu'à 10 000 testeurs externes, sessions de 90 jours
  • Review allégée (pas de review complète avant la beta publique)
  • Idéal pour valider l'app avant soumission publique

Option D — PWA (sans store)

  • Coût : 0
  • Accessible depuis Safari sur iOS (iOS 11.3+)
  • Push notifications disponibles depuis iOS 16.4 (Web Push dans Safari)
  • Limitations : stockage limité (~50MB, supprimable par iOS), pas de Face ID/NFC/Bluetooth
  • Pas d'icône sur l'App Store — l'utilisateur doit "Ajouter à l'écran d'accueil" manuellement

Si on passe par Capacitor (WebView)

Capacitor.js est le wrapper le plus adapté pour transformer cette app Nuxt en app native.

bash
npm install @capacitor/core @capacitor/cli
npx cap init
npx cap add ios
npx cap add android

# Après chaque build Nuxt :
npx cap sync
npx cap open ios    # Ouvre Xcode
npx cap open android

Points d'attention pour passer la review Apple :

  1. Implémenter les push notifications (valeur native réelle)
  2. Mode offline au moins partiel (cache TanStack Query)
  3. Intégrer Face ID pour le login (biométrie = valeur native)
  4. Ne pas avoir de lien "Ouvrir dans le navigateur" visible

Checklist avant soumission App Store

[ ] Privacy Nutrition Label complète (quelles données, pourquoi, avec qui partagées)
[ ] ATT implémenté si tracking inter-apps (sinon, pas nécessaire)
[ ] Compte de test fourni dans les notes de review (login + mot de passe)
[ ] Chaque lien, bouton et feature fonctionne
[ ] Pas de références à Android, concurrents, ou prix hors IAP
[ ] Screenshots sur tous les formats requis (iPhone 6.7", 5.5", iPad si universel)
[ ] Pas d'icônes Apple modifiées (règles d'usage des symboles SF)
[ ] Description App Store ≤ 4000 caractères, subtitle ≤ 30 caractères
[ ] Age rating configuré correctement
[ ] URL de politique de confidentialité fournie (obligatoire)