L'App Store ou Google Play a refusé votre build ?
Déposez le .ipa, .apk ou .aab dans la vérification gratuite et voyez, dans votre navigateur, ce que les stores refuseraient. Si vous préférez nous le confier, l'audit de conformité aux stores confronte aussi les formulaires de votre fiche au build.
190 € · 2 jours ouvrés si vous préférez nous le confier
Codes de rejet
| Code | Signification |
|---|---|
ITMS-91053 | API à justification obligatoire utilisée sans raison déclarée |
ITMS-90683 | Ressource protégée sans texte d'usage dans Info.plist |
90068 | iOS minimum inférieur à 15 : avertissement aujourd'hui, refus à partir du printemps 2027 |
ITMS-90208 | Un framework déclare un iOS minimum plus ancien que son binaire |
ITMS-90809 | Une référence à UIWebView, désormais obsolète |
ITMS-90685 | Deux bundles de l'app partagent le même identifiant |
- Que signifie le rejet ITMS-91053 ?
- C'est le rejet d'Apple pour l'appel d'une API à justification obligatoire sans raison déclarée dans un privacy manifest. Il tombe à l'envoi, nomme les API trouvées, et aucun build ne reçoit d'avertissement avant. L'audit de conformité aux stores porte essentiellement sur ce type de problème. Comment corriger
- Que signifie le rejet ITMS-90683 ?
- C'est le refus d'Apple pour un build qui peut accéder à la caméra, à la localisation, aux contacts ou à une autre ressource protégée sans qu'une phrase dans Info.plist explique pourquoi. Il découle du binaire, pas de ce que fait l'app : un plugin qui lie la caméra impose l'exigence même si rien ne l'ouvre jamais, si bien qu'un build qui tourne parfaitement sur un téléphone n'atteint jamais TestFlight. Nous nommons la clé et le plugin qui l'a introduite. Comment corriger
- Que signifie l'avertissement 90068 ?
- App Store Connect l'envoie quand la MinimumOSVersion d'une app est inférieure à iOS 15. Aujourd'hui, le build est tout de même livré et l'avertissement arrive ensuite par e-mail ; à partir du printemps 2027, l'envoi sera refusé. Un projet Flutter reste à 13.0 tant que personne ne l'a modifié, si bien que la plupart des équipes le rencontrent sans avoir rien fait de travers. Comment corriger
- Que signifie le rejet ITMS-90208 ?
- C'est le refus d'Apple quand un framework de l'app déclare, dans son propre Info.plist, un iOS minimum plus ancien que celui pour lequel son binaire a été compilé. Avant Flutter 3.41, le coupable habituel était App.framework, dont l'Info.plist était copié depuis
ios/Flutter/AppFrameworkInfo.plistet gardait une ancienne MinimumOSVersion. Depuis la 3.41, le build écrit lui-même cette clé, et mettre Flutter à jour règle le problème ; sur une version plus ancienne, renseignez-y la version pour laquelle le binaire a été compilé. Comment corriger - Que signifie le rejet ITMS-90809 ?
- C'est le refus d'Apple pour toute référence à UIWebView. Les nouvelles apps sont refusées depuis avril 2020, les mises à jour depuis décembre 2020. Une référence suffit, même si aucune web view n'est jamais affichée ; elle vient presque toujours d'un ancien SDK, et la solution consiste à mettre à jour ou à retirer ce SDK. Comment corriger
- Que signifie le rejet ITMS-90685 ?
- C'est le refus d'Apple quand deux bundles de l'app partagent le même CFBundleIdentifier : en général une extension qui a reçu l'identifiant de l'app elle-même, ou un framework intégré dans l'app puis à nouveau dans une extension. Donnez à chaque extension son propre identifiant, placé sous celui de l'app, et n'intégrez chaque framework qu'une seule fois. Comment corriger
Tenu à jour
Échéances App Store et Google Play, 2026–2027
Les deux stores font évoluer leurs exigences chaque année, et une checklist écrite l'an dernier cesse discrètement d'en être une. Voici ce qui s'applique aujourd'hui. La date ci-dessous indique quand ce tableau a été confronté pour la dernière fois à ce qu'Apple et Google publient réellement.
| Exigence | Ce qui se passe | Depuis / à partir de |
|---|---|---|
| Privacy manifest, API à justification obligatoire | Envoi refusé | En vigueur |
| Textes d'usage pour la caméra, la localisation, les contacts | Envoi refusé | En vigueur |
| Suppression de compte dans l'app | Rejet à la review | En vigueur |
| « Se connecter avec Apple » à côté d'une connexion tierce | Rejet à la review | En vigueur |
| Google Play : API 36 pour les mises à jour, 35 pour rester visible | Mise à jour refusée, app masquée | 31 août 2026 |
| Play Billing Library 8 | Nouvelles apps et mises à jour refusées | 31 août 2026 |
| Google Play : déclaration pour la localisation précise | Déclaration obligatoire | 27 janvier 2027 |
| Bibliothèques natives sur des pages mémoire de 16 Ko | Mise à jour refusée | 1er février 2027 |
| MinimumOSVersion 15.0 | Avertissement 90068 aujourd'hui, refus plus tard | Printemps 2027 |
| SDK iOS 27 pour les envois | Envoi refusé | Avril 2027 |
Dernière confrontation aux exigences publiées par Apple et Google le 16 septembre 2026. Quand un niveau change, les vérifications suivent, et chaque rapport indique quelles vérifications ont été exécutées et lesquelles ne l'ont pas été.
Ce que vérifie l'audit de conformité aux stores
- Un privacy manifest absent, ou un SDK livré sans le sien
- Des API à justification obligatoire appelées sans raison déclarée — le rejet
ITMS-91053, qui tombe sans avertissement - Un plugin qui accède à la caméra, à la localisation ou aux contacts sans
…UsageDescriptiondans Info.plist —ITMS-90683, qui bloque l'envoi avant TestFlight, souvent pour une fonction que l'app n'utilise jamais - Une icône App Store avec de la transparence, un framework qui déclare le mauvais iOS minimum (
ITMS-90208), ou aucune réponse sur le chiffrement, ce qui laisse chaque build en attente avec le statut « Missing Compliance » - Un plugin qui s'inscrit aux notifications push sans l'entitlement, si bien que les notifications n'arrivent jamais, une référence à UIWebView (
ITMS-90809), ou deux bundles qui partagent le même identifiant (ITMS-90685) - Une connexion tierce sans option équivalente à côté (règle 4.8)
- Aucun moyen de supprimer son compte depuis l'app (règle 5.1.1(v), et la politique de suppression des données de Google, qui exige en plus un accès hors de l'app)
- Un niveau d'API cible que Google Play n'accepte plus
- Des bibliothèques natives qui ne se chargent pas sur des pages mémoire de 16 Ko — Google Play cesse de publier ces mises à jour le 1er février 2027, et les plugins qui contiennent du code précompilé en sont la cause habituelle
- Une release signée avec la clé de debug, un build débogable, ou une Play Billing Library antérieure à la version 8
- Les autorisations que Google Play réserve à certaines catégories d'apps — localisation en arrière-plan, photos et vidéos, toutes les apps installées, tous les fichiers — et celles qu'il faut déclarer, dont la localisation précise à partir du 27 janvier 2027
- Une étiquette de confidentialité ou un formulaire Data safety qui en dit moins que le build
- Une URL d'assistance ou de confidentialité dans la fiche qui ne répond plus
Les normes et les règles des stores qui servent de référence à nos audits
- App Store Review Guidelines
- 4.8 · 5.1.1(v) · 1.5, et les motifs de rejet à la review
- PrivacyInfo.xcprivacy
- obligatoire depuis le 1er mai 2024 — le fichier derrière ITMS-91053
- MinimumOSVersion
- avertissement 90068 aujourd'hui, refus à partir du printemps 2027
- SDK iOS 27
- obligatoire pour les envois à partir d'avril 2027
- Niveau d'API cible Play
- 36 depuis le 31 août 2026 · 35 pour rester visible
- Play Data safety
- et suppression de compte dans l'app
Envoyez un build. Recevez un rapport par e-mail.
| Ce que vous envoyez | Vérifications stores | Accessibilité |
|---|---|---|
.apk — Android | Complètes | Complète |
.app — build simulateur iOS | Complètes | Complète |
.ipa — build appareil iOS | Complètes | Impossible |
| Invitation TestFlight | Complètes | À la main, +60 % |
Prix
L'audit de conformité aux stores coûte 190 €, en 2 jours ouvrés. Pour un rejet précis, ou une question avant de développer, une consultation coûte 90 €/heure.
Demander un audit
Envoyez un build par e-mail. Recevez un prix fixe et une date.
Écrivez à hello@checkapp.dev avec le build, ou un lien vers celui-ci, et une ligne sur votre besoin : un audit d'accessibilité, une vérification stores, ou les deux. Vous recevez un prix fixe et une date dans la même journée ouvrée.