Une protection d'authentification autour de tout
Les projets générés par Lovable, Bolt et v0 enveloppent souvent tout le routeur dans une route protégée : le premier écran de l'app est alors un formulaire de connexion.
Refus App Store
Si votre app oblige les gens à créer un compte avant d'utiliser des fonctionnalités qui n'ont rien à voir avec un compte, Apple la refuse au titre de la 5.1.1(v). Les générateurs d'apps par IA placent par défaut toute l'app derrière une connexion : ce refus est donc fréquent. La solution : ouvrez les parties qui n'ont pas besoin de compte, gardez la connexion pour celles qui en ont besoin, et indiquez clairement dans les notes pour l'examen ce qui relève de chaque catégorie.
Dès $109 en paiement unique par plateforme, ou notre équipe s'occupe de tout dès $698.
La partie de la guideline 5.1.1 consacrée à la connexion aux comptes indique qu'une app sans fonctionnalités importantes basées sur un compte doit pouvoir être utilisée sans connexion. Les apps ne peuvent pas exiger d'informations personnelles pour fonctionner, sauf si elles sont directement liées à la fonctionnalité principale ou exigées par la loi. Les apps qui permettent de créer un compte doivent proposer la suppression du compte dans l'app. Et si la fonction principale n'est pas liée à un réseau social précis, les gens doivent pouvoir utiliser l'app sans s'y connecter ; récupérer des données de profil, partager et inviter des amis ne comptent pas comme des fonctions principales.
Les autres parties de la 5.1.1 (politique de confidentialité, descriptions d'usage, minimisation des données) sont traitées dans le guide de confidentialité 5.1.1. Cette page porte sur le mur de connexion.
La note indique généralement que l'app oblige les utilisateurs à s'inscrire ou à se connecter avant d'accéder à des fonctionnalités qui ne sont pas basées sur un compte, et suggère de laisser les utilisateurs se servir librement de ces fonctionnalités en n'exigeant l'inscription que pour celles qui sont propres au compte. Une variante fréquente indique que l'app exige des informations personnelles, comme un numéro de téléphone, une date de naissance ou un genre, dont sa fonction principale n'a pas besoin. Une autre variante concerne les achats : l'app impose l'inscription avant tout achat intégré qui n'est pas lié à un compte.
| Fonctionnalité | Basée sur un compte ? | Derrière une connexion ? |
|---|---|---|
| Parcourir un catalogue, lire des articles, consulter des recettes | Non | Non, rendez-la publique |
| Calculatrices, convertisseurs, générateurs, démo IA gratuite limitée | Non | Non, ou une session invité |
| Favoris, historique, synchronisation entre appareils | Oui | Oui ; demandez la connexion quand l'utilisateur enregistre quelque chose |
| Publier, discuter, suivre d'autres utilisateurs | Oui | Oui |
| Commandes, réservations, factures, espaces de travail d'équipe | Oui | Oui |
| Une app pour les membres, employés ou clients existants d'un service | Oui, le compte est au cœur de l'app | Oui ; expliquez-le dans les notes pour l'examen et fournissez un compte de démo |
| Un abonnement qui fonctionne aussi sur le web | Oui, multiplateforme | Oui ; indiquez-le dans les notes pour l'examen |

Mon WebView iOS est enfin approuvé. Merci !!
Les projets générés par Lovable, Bolt et v0 enveloppent souvent tout le routeur dans une route protégée : le premier écran de l'app est alors un formulaire de connexion.
La page marketing est la partie publique de votre site : beaucoup règlent donc webviewurl sur l'espace applicatif, qui redirige directement vers la connexion.
Les champs téléphone, date de naissance, genre et entreprise générés « au cas où » sont des informations personnelles dont la fonction principale n'a pas besoin.
Avec seulement « Continuer avec Google », personne n'entre sans compte social. Ajoutez une connexion par e-mail ou Sign in with Apple, et envisagez un accès invité.
Passez en revue chaque écran. En général, la découverte et la lecture sont publiques ; l'enregistrement, la publication, les achats liés au compte et les données personnelles sont réservés aux comptes.
Réglez webviewurl dans Config.swift sur une page qui fonctionne sans connexion, comme yourdomain.com/app ou /explore, et non /login. Ce changement demande un nouveau build.
Les routes publiques s'affichent pour tout le monde ; seules les routes de compte redirigent vers la connexion (code ci-dessous). Placez « Se connecter » dans l'en-tête ou au premier enregistrement, pas devant le contenu.
Si les invités doivent pouvoir enregistrer leur progression, utilisez les connexions anonymes de Supabase, l'authentification anonyme de Firebase ou le stockage local, et convertissez l'invité en compte complet lors de l'inscription pour que rien ne soit perdu. Protégez les inscriptions anonymes par un captcha et la row-level security ; la checklist Supabase liste les réglages.
E-mail et mot de passe (ou Sign in with Apple), plus un nom si vous en avez vraiment besoin. Demandez le reste plus tard, quand une fonctionnalité en a besoin, et signalez les champs facultatifs comme tels.
La création de compte exige toujours la suppression dans l'app (guide de la suppression de compte), et les fonctionnalités de compte ont toujours besoin d'un compte de démo pour l'examen (guide du compte de démo). Laissez deletecache sur false pour que les utilisateurs connectés le restent.
Exemple React Router, tel que le génèrent la plupart des outils IA, plus une session invité Supabase pour l'enregistrement.
// Avant (structure IA typique) : toutes les routes derrière <RequireAuth />
// <Route element={<RequireAuth />}> ...toutes les routes... </Route>
// Après : découverte publique, fonctionnalités de compte derrière la protection
<Routes>
<Route path="/" element={<Explore />} /> {/* aucun compte nécessaire */}
<Route path="/recipes/:id" element={<Recipe />} /> {/* aucun compte nécessaire */}
<Route path="/login" element={<Login />} />
<Route element={<RequireAuth />}>
<Route path="/favorites" element={<Favorites />} /> {/* basé sur un compte */}
<Route path="/settings/account" element={<Account />} />
</Route>
</Routes>
// Un invité touche « Enregistrer » : démarrer une session anonyme, la convertir plus tard
async function saveAsGuest(recipeId) {
const { data } = await supabase.auth.getSession();
if (!data.session) await supabase.auth.signInAnonymously();
await supabase.from("favorites").insert({ recipe_id: recipeId }); // user_id vaut auth.uid() par défaut
showBanner("Enregistré. Créez un compte gratuit pour retrouver vos favoris sur tous vos appareils.");
}
// Conversion plus tard : supabase.auth.updateUser({ email }) transforme l'utilisateur anonyme en utilisateur permanentLaissez l'IA faire la restructuration, mais vérifiez sa liste des routes publiques et des routes réservées aux comptes avant qu'elle ne modifie le code.
Restructurez l'authentification pour la guideline 5.1.1(v) de l'App Store. 1) Listez chaque route et classez-la comme publique (fonctionne sans compte) ou réservée aux comptes (enregistrement, publication, achats liés au compte, données personnelles). Montrez-moi la liste avant de modifier le code. 2) Supprimez la protection d'authentification globale et appliquez-la uniquement aux routes réservées aux comptes. 3) Faites de / une page de départ publique qui affiche le contenu principal sans connexion. 4) Quand un invité tente une action réservée aux comptes, affichez une feuille bienveillante : « Créez un compte gratuit pour enregistrer ceci », avec Sign in with Apple, l'inscription par e-mail et une option « Plus tard ». 5) Utilisez la connexion anonyme de Supabase pour les invités qui doivent enregistrer un état, et convertissez-les en compte permanent lors de l'inscription sans perte de données. Gardez la row-level security sur toutes les tables. 6) Réduisez le formulaire d'inscription à l'e-mail, au mot de passe et à un nom facultatif. Supprimez le téléphone, la date de naissance et le genre, sauf si une fonctionnalité en a besoin. 7) Gardez le parcours existant de suppression de compte (Delete account) dans les réglages.
Option A si vous avez ouvert l'app ; option B si la connexion est réellement indispensable. Soyez précis dans les deux cas. Le modèle reste en anglais, la langue de travail des examinateurs.
Hello App Review team, Thank you for reviewing [App name] [version] ([build]). [Option A: guest access added] Users can now [browse / read / use the calculator] without an account. The app opens on [Explore], and an account is requested only when a user wants to [save favorites / post / sync across devices], which are account-based features. Sign-up now asks only for email and password, or Sign in with Apple. [New build: [number].] [Option B: login is essential] [App name] is a [client portal / team workspace] for [existing customers of X / members of Y]. Every feature works on the user's own account data: [list the main features]. There is no content that could be shown without an account. Accounts are created [at sign-up in the app / by the customer's organization]. A demo account is provided in App Review Information. Account deletion is available in [Settings > Account > Delete account]. Best regards, [Name], [email]
webviewurl pointe vers une page publique, pas vers l'écran de connexion.Pas si chaque fonctionnalité porte sur les données du propre compte du client. Expliquez-le dans les notes pour l'examen et fournissez un compte de démo. Une page publique qui montre ce que fait l'app aux personnes qui ne sont pas encore clientes est un plus appréciable.
Il n'y a pas d'emplacement imposé. Ce qui compte, c'est qu'un nouvel utilisateur accède sans inscription aux fonctionnalités qui ne dépendent pas d'un compte. Une page de départ publique avec un bouton « Se connecter » dans l'en-tête est généralement la solution la plus propre.
Quand l'achat est lié au compte, par exemple un abonnement qui débloque aussi la version web, oui ; indiquez-le dans les notes pour l'examen. Pour les achats qui ne fonctionnent que sur l'appareil, les examinateurs s'attendent à ce que l'inscription soit facultative.
C'est possible : si votre fonction principale n'a rien à voir avec Google, les gens doivent pouvoir utiliser l'app sans connexion Google. Un accès invité ou une connexion par e-mail règle la question, et la guideline 4.8 demande en plus Sign in with Apple ou une option similaire à côté de Google.
L'obligation de suppression s'applique aux comptes que les utilisateurs créent. Pour les sessions anonymes, une option « Effacer mes données » dans les réglages est une bonne pratique, et dès qu'un invité passe à un compte complet, le parcours normal de suppression de compte s'applique.
Même résultat, charge de travail différente de votre côté. Les trois formules incluent la garantie d'approbation et le support humain 24/7.
$109 par plateforme, paiement unique
La licence WebViewGold : un projet Xcode ou Android Studio prêt à l'emploi. Collez votre URL, définissez le nom et l'icône, activez les fonctionnalités, compilez et soumettez. Mises à jour gratuites à vie.
Voir les offres sur la page principale$349 par licence, extension en paiement unique
Ni Mac, ni Xcode, ni Android Studio : configurez dans le navigateur, nous compilons les deux apps dans le cloud et les transmettons à App Store Connect et à la Play Console.
Comment fonctionne le Cloud Builder Essayer la démo gratuite$698 par plateforme $798
Envoyez-nous votre URL et votre icône. Notre équipe configure, compile et livre votre app sous 72 heures, en marque blanche, projets sources inclus. Les deux plateformes pour $1,158.
Détails du Full Service Propulsé parPrix Soldes d'hiver valables jusqu'au 31 décembre 2026.
Garantie d'approbation App Store & Google Play – ou remboursement sous 14 jours
Vous préférez déléguer ? Full Service : nous configurons, compilons et livrons sous 72 heures, dès $698 par plateforme. Des questions ? Chattez avec nous 24/7.
Les remboursements sont accordés aux conditions indiquées dans notre FAQ : un refus non lié au contenu par Apple et/ou Google, demandé dans les 14 jours suivant l'achat.