App Store o Google Play ha rifiutato la vostra build?
Trascinate l'.ipa, l'.apk o l'.aab nel controllo gratuito e vedete nel browser che cosa rifiuterebbero gli store. Se preferite che lo facciamo noi, la verifica degli store confronta anche i moduli della scheda con la build.
190 € · 2 giorni lavorativi se preferite che lo facciamo noi
Codici di rifiuto
| Codice | Che cosa significa |
|---|---|
ITMS-91053 | API con motivazione obbligatoria usata senza dichiararla |
ITMS-90683 | Risorsa protetta senza motivazione in Info.plist |
90068 | iOS minimo sotto 15: oggi un avviso, rifiuto dalla primavera 2027 |
ITMS-90208 | Un framework dichiara un iOS minimo più vecchio del suo binario |
ITMS-90809 | Un riferimento al deprecato UIWebView |
ITMS-90685 | Due bundle nell'app con lo stesso identificatore |
- Che cos'è ITMS-91053?
- Il rifiuto di Apple per una API con motivazione obbligatoria chiamata senza che il privacy manifest ne dichiari il motivo. Arriva al caricamento, elenca le API trovate, e non c'è nessun build di avviso prima. L'audit di idoneità agli store riguarda soprattutto questa classe di problemi. Come risolverlo
- Che cos'è ITMS-90683?
- Il rifiuto di Apple per un build che può accedere a fotocamera, posizione, contatti o un'altra risorsa protetta senza una frase nell'Info.plist che spieghi perché. Dipende dal binario, non da ciò che l'app fa: un plugin che include la fotocamera porta con sé l'obbligo anche se la fotocamera non si apre mai, e così un build che funziona sul telefono non arriva mai a TestFlight. Indichiamo la chiave e il plugin che la richiede. Come risolverlo
- Che cosa significa l'avviso 90068?
- App Store Connect lo invia quando la MinimumOSVersion di un'app è inferiore a iOS 15. Oggi il build viene comunque consegnato e l'avviso arriva per email; dalla primavera 2027 il caricamento viene rifiutato. Un progetto Flutter porta 13.0 finché qualcuno non lo cambia, quindi capita a quasi tutti senza aver sbagliato nulla. Come risolverlo
- Che cos'è ITMS-90208?
- Il rifiuto di Apple quando un framework dentro l'app dichiara, nel proprio Info.plist, un iOS minimo più vecchio di quello per cui è compilato il suo binario. Prima di Flutter 3.41 di solito era App.framework, il cui Info.plist veniva copiato da
ios/Flutter/AppFrameworkInfo.pliste conservava un vecchio MinimumOSVersion. Dalla 3.41 la build scrive quella chiave da sola, quindi aggiornare Flutter risolve; con una versione precedente, impostatela lì alla versione per cui è compilato il binario. Come risolverlo - Che cos'è ITMS-90809?
- Il rifiuto di Apple per qualsiasi riferimento a UIWebView. Le nuove app sono rifiutate da aprile 2020 e gli aggiornamenti da dicembre 2020. Basta un riferimento, anche se nessuna vista web viene mai mostrata; arriva quasi sempre da un vecchio SDK, e aggiornarlo o rimuoverlo è la soluzione. Come risolverlo
- Che cos'è ITMS-90685?
- Il rifiuto di Apple quando due bundle dentro l'app hanno lo stesso CFBundleIdentifier: di solito un'estensione con l'identificatore dell'app stessa, o un framework incorporato nell'app e di nuovo in un'estensione. Date a ogni estensione un identificatore proprio sotto quello dell'app e incorporate ogni framework una sola volta. Come risolverlo
Tenuto aggiornato
Scadenze di App Store e Google Play, 2026–2027
Entrambi gli store alzano i requisiti ogni anno, e una checklist scritta l'anno scorso smette silenziosamente di essere una checklist. Questo è ciò che vale oggi. La data qui sotto dice quando è stato confrontato l'ultima volta con quanto Apple e Google pubblicano davvero.
| Requisito | Che cosa succede | Da |
|---|---|---|
| Privacy manifest, API con motivazione obbligatoria | Caricamento rifiutato | In vigore |
| Motivazioni per fotocamera, posizione, contatti | Caricamento rifiutato | In vigore |
| Cancellazione dell'account nell'app | Respinta in revisione | In vigore |
| Accedi con Apple accanto al login di terze parti | Respinta in revisione | In vigore |
| Google Play: API 36 per gli aggiornamenti, 35 per restare in elenco | Aggiornamento rifiutato, app nascosta | 31/08/2026 |
| Play Billing Library 8 | Nuove app e aggiornamenti rifiutati | 31/08/2026 |
| Google Play: dichiarazione per la posizione precisa | Dichiarazione obbligatoria | 27/01/2027 |
| Librerie native su pagine di memoria da 16 KB | Aggiornamento rifiutato | 01/02/2027 |
| MinimumOSVersion 15.0 | Ora avviso 90068, poi rifiuto | Primavera 2027 |
| SDK iOS 27 per i caricamenti | Caricamento rifiutato | Aprile 2027 |
Ultimo confronto con i requisiti pubblicati da Apple e Google il 16 settembre 2026. Quando un livello si alza, si alzano anche i controlli, e ogni relazione dice quali controlli sono stati eseguiti e quali no.
Che cosa controlla la verifica degli store
- Un privacy manifest assente, o un SDK distribuito senza
- API con motivazione obbligatoria chiamate senza dichiararla — il rifiuto
ITMS-91053, che arriva senza preavviso - Un plugin che usa fotocamera, posizione o contatti senza
…UsageDescriptionnell'Info.plist —ITMS-90683, che ferma il caricamento prima di TestFlight, spesso per una funzione che l'app non usa affatto - Un'icona dell'App Store con trasparenza, un framework che dichiara la versione minima di iOS sbagliata (
ITMS-90208), o nessuna risposta sulla crittografia, che lascia ogni build in attesa come Missing Compliance - Un plugin che si registra alle notifiche push senza l'entitlement, così le notifiche non arrivano mai, un riferimento a UIWebView (
ITMS-90809) o due bundle con lo stesso identificatore (ITMS-90685) - Un accesso di terze parti senza un'alternativa equivalente accanto (Linea guida 4.8)
- Nessun modo di cancellare l'account dall'interno dell'app (Linea guida 5.1.1(v) e la policy di cancellazione dei dati di Google, che ne chiede anche una fuori dall'app)
- Un target API level che Google Play non accetta più
- Librerie native che non si caricano con pagine di memoria da 16 KB — dal 1 febbraio 2027 Google Play non pubblica più aggiornamenti così, e di solito la causa sono plugin con codice precompilato
- Una release firmata con la chiave di debug, un build debuggable o una Play Billing Library precedente alla versione 8
- Autorizzazioni che Google Play concede solo ad alcuni tipi di app — posizione in background, foto e video, tutte le app installate, tutti i file — e quelle da dichiarare, tra cui la posizione precisa dal 27 gennaio 2027
- Un'etichetta privacy o un modulo Data safety che dichiara meno di quanto faccia il build
- Un URL di assistenza o di privacy nella scheda che non risponde più
Le norme e le regole degli store secondo cui verifichiamo
- App Store Review Guidelines
- 4.8 · 5.1.1(v) · 1.5, e i motivi di rifiuto in revisione
- PrivacyInfo.xcprivacy
- obbligatorio dal 1 maggio 2024 — il file dietro ITMS-91053
- MinimumOSVersion
- oggi avviso 90068, rifiuto dalla primavera 2027
- SDK iOS 27
- obbligatorio per i caricamenti da aprile 2027
- Play target API level
- 36 dal 31 agosto 2026 · 35 per restare in elenco
- Play Data safety
- e cancellazione dell'account nell'app
Mandate un build. Ricevete la relazione per email.
| Che cosa mandate | Controlli store | Accessibilità |
|---|---|---|
.apk — Android | Completo | Completo |
.app — build iOS per simulatore | Completo | Completo |
.ipa — build iOS per dispositivo | Completo | Non possibile |
| Invito TestFlight | Completo | A mano, +60% |
Prezzo
La verifica degli store costa 190 €, 2 giorni lavorativi. Per un singolo rifiuto, o una domanda prima di sviluppare, una consulenza costa 90 €/ora.
Richiedi un audit
Mandate una build per email. Ricevete prezzo fisso e data.
Scrivete a hello@checkapp.dev con la build, o un link, e una riga su che cosa vi serve: audit di accessibilità, verifica degli store o entrambi. Prezzo fisso e data tornano indietro nella stessa giornata lavorativa.