Guideline 2.1 App Store: cum rezolvi o respingere
De Mehdi Azizi
Actualizat pe , 9 min.
Guideline 2.1 App Completeness: ce acoperă regula, cum îți testează Apple aplicația, ce îi răspunzi reviewerului și 3 respingeri reale pe aplicațiile mele.
Guideline 2.1 este regula care pică cele mai multe trimiteri. Apple o spune chiar el pe pagina App Review: în medie, peste 40 % din problemele nerezolvate țin de 2.1, cea care acoperă crash-urile, conținutul provizoriu și informațiile incomplete.
Articolul ăsta tratează doar această regulă: ce acoperă, cele două variante ale ei, cum îți testează reviewerul aplicația și ce să-i răspunzi, cu trei respingeri pe care le-am primit pe propriile aplicații. Pentru imaginea de ansamblu a tuturor motivelor de respingere, citește mai bine de ce respinge Apple o aplicație.
Ce este guideline 2.1 App Completeness?
Guideline 2.1 cere ca aplicația trimisă la Apple să fie o versiune finală și completă: fără crash-uri, fără linkuri moarte, fără text provizoriu, cu un cont demo dacă aplicația cere autentificare și cu achiziții in-app vizibile și funcționale. Dacă reviewerul nu poate parcurge aplicația până la capăt, primești o respingere 2.1.
Textul oficial se găsește în App Review Guidelines, secțiunea 2 „Performance”. Se împarte în două alineate.
2.1(a) cere ca fiecare trimitere să fie o versiune finală, cu toate metadatele și cu URL-uri care funcționează. Textul provizoriu, site-urile goale și orice conținut temporar trebuie să dispară înainte de trimitere. Aplicația trebuie să fi fost testată pe un dispozitiv real pentru buguri și stabilitate. Dacă cere autentificare, dai un cont demo și îți lași serverul pornit. Un mod demo integrat poate înlocui contul, dar doar cu acordul prealabil al Apple, și trebuie să arate toate funcțiile aplicației. Fraza care rezumă tot: „We will reject incomplete app bundles and binaries that crash”.
2.1(b) privește achizițiile in-app: trebuie să fie complete, actualizate, vizibile pentru reviewer și funcționale. Dacă o achiziție configurată în App Store Connect nu se găsește în aplicație, trebuie să explici de ce în notele pentru review.
Ce acoperă concret guideline 2.1
În practică, o respingere 2.1 vine din unul dintre motivele astea:
- Un crash. La pornire, după o permisiune refuzată, fără rețea. Unul singur e de ajuns.
- Un link mort. Confidențialitate, termeni de utilizare, suport: fiecare URL declarat va fi deschis.
- O funcție inaccesibilă. Un buton care nu duce nicăieri, un ecran obligatoriu imposibil de trecut, un onboarding fără ieșire. Forma cea mai perfidă: invizibilă pe propriul tău telefon.
- Un cont demo lipsă sau expirat. Reviewerul rămâne blocat la ecranul de login, sau contul dat nu mai merge, sau serverul e oprit.
- Conținut de umplutură. Lorem ipsum, „În curând”, ecran gol, date de test vizibile.
- Achiziții in-app de negăsit. Abonamentul există în App Store Connect, dar reviewerul nu găsește ecranul care îl vinde, sau achiziția eșuează în sandbox. Cele mai frecvente greșeli de ecran de plată sunt în paywall iOS: 7 greșeli de începător.
2.1 Information Needed sau 2.1(a): care e diferența?
Mesajele Apple nu au toate același titlu, iar diferența îți schimbă răspunsul.
„Guideline 2.1 - Information Needed” înseamnă că reviewerul n-a putut termina review-ul și îți pune o întrebare. Lipsește un cont, o explicație, o cale de a ajunge la o funcție. Nu e încă o constatare de bug: e o cerere. Uneori, un răspuns precis în App Store Connect e suficient. Dar dacă întrebarea scoate la iveală un blocaj real în aplicație, ai nevoie de un build nou.
„Guideline 2.1(a) - Performance - App Completeness” înseamnă că reviewerul a constatat o problemă: un crash, un bug, un ecran care nu răspunde. Mesajul indică de obicei dispozitivul folosit și atașează des o captură. Aici trebuie să corectezi, să trimiți un build nou, apoi să răspunzi.
Cum îți testează Apple aplicația
Pune-te în locul reviewerului. Contează trei lucruri.
Testează pe un dispozitiv pe care s-ar putea să nu-l ai. Mesajul de respingere precizează des modelul. Regula 2.4.1 spune că aplicațiile de iPhone trebuie să ruleze pe iPad ori de câte ori e posibil, iar o aplicație gândită pentru iPhone se afișează acolo în modul de compatibilitate, într-o fereastră în format iPhone. Respingerile mele 2.1 recente veneau de pe un iPad Air: dacă testezi doar pe iPhone-ul tău, nu vezi ce vede reviewerul.
Pornește de la o primă lansare. Aplicație nouă, fără cache, fără sesiune, fără vreo actualizare descărcată.
Rețeaua trebuie să funcționeze doar pe IPv6. Regula 2.5.5, vecină cu guideline 2.5.4 despre modurile de fundal, cere ca aplicația să funcționeze complet pe o rețea doar IPv6, iar pagina de suport Apple despre IPv6 face din asta o cerință pentru toate aplicațiile trimise începând cu 1 iunie 2016. Riscul vine dintr-o adresă IPv4 scrisă hardcodat: Apple recomandă să testezi pe o rețea doar IPv6, cu datele mobile oprite.
Ca să reproduci condițiile astea înainte de trimitere, TestFlight pe mai multe dispozitive rămâne cel mai simplu: vezi TestFlight: cum îți testezi aplicația de iPhone.
Trei respingeri primite și cauza lor reală
Trei respingeri recente pe aplicațiile mele, cu cauza lor reală.
Solys: un demo de mini-joc imposibil de câștigat pe iPad
Solys e alarma mea cu mini-jocuri. Pe 18 august 2026, un build e respins cu „2.1 Information Needed”: Apple cere o cale de a trece de misiunea de joc. Reviewerul testa pe un iPad Air, cu aplicația de iPhone în modul de compatibilitate.
Cauza reală era în demo-ul de mini-joc din onboarding. Înălțimile obstacolelor erau scrise în puncte fixe. Pe înălțimea de card disponibilă pe iPad în compatibilitate, trecerea devenea mai îngustă decât personajul: demo-ul era imposibil de câștigat. Iar butonul „Continuă” se activa doar în caz de victorie. Nicio ieșire: reviewerul nu putea vedea aplicația.
Corecția: o geometrie proporțională cu dimensiunea măsurată a cardului și un link „Sari peste demo” care apare după o înfrângere.
Lecția: orice etapă blocată de o performanță trebuie să aibă o ieșire fără condiții. Și fiecare ecran obligatoriu se testează pe cel mai mic ecran suportat ȘI pe iPad în modul de compatibilitate.
Nolera: o corecție invizibilă pentru reviewer
Pe 17 septembrie 2026, Nolera e respinsă după un review pe iPad Air. Mesajul combina 2.1(a) cu alte puncte. Corecția problemei semnalate fusese livrată prin actualizare la distanță (OTA), fără build nou.
Problema: la prima lansare, reviewerul vede codul inclus în build, nu actualizarea descărcată după. Pentru el, corecția nu exista.
Lecția: o corecție destinată review-ului trebuie să fie în binarul trimis la Apple.
Clic: cauza nu era în aplicație
Pe 16 septembrie 2026, Clic e respinsă. Aplicația, în schimb, era la zi. Cauza reală era în altă parte: politica de confidențialitate publicată online nu era actualizată în privința furnizorului de AI folosit. Respingerea asta ține mai degrabă de confidențialitate decât de 2.1, dar ilustrează același lucru: cauzele reale nu sunt mereu cele pe care le sugerează mesajul.
Lecția: verifică ce e online, nu ce e în repo-ul tău. Deschide fiecare URL declarat în ziua trimiterii.
Ce răspunzi în Resolution Center
După o respingere, trimiterea ta trece în „Unresolved Issues”, iar conversația cu Apple are loc în secțiunea App Review a aplicației, numită încă Resolution Center. Procedura oficială pentru a răspunde la App Review permite un mesaj de maximum 4.000 de caractere, cu un atașament.
Scrie în engleză, sobru. Reviewerul vrea trei informații: ce bloca, ce s-a schimbat, cum verifică. Iată modelul pe care îl folosesc (înlocuiește numărul de build și corecția cu ale tale):
Hello,
Thank you for your review.
Issue: the onboarding game demo could not be completed on iPad
(iPhone app running in compatibility mode), so the user could
not continue.
Fix in build 1.0.3 (42):
- The game layout now scales to the measured screen size.
- A "Skip demo" link appears after a failed attempt, so the
onboarding can always be completed.
How to verify: launch the app, start the onboarding demo,
lose once, then tap "Skip demo".
A screen recording is attached.
Best regards,
Câteva reguli:
- Răspunde la întrebarea pusă. La un „Information Needed”, începe cu răspunsul exact, nu cu contextul.
- Numește build-ul și dă calea spre ecranul corectat, în trei sau patru acțiuni.
- Atașează o dovadă. Un video scurt pe un dispozitiv apropiat de cel al reviewerului evită încă un dus-întors.
- Fără pledoarii. Apelul la App Review Board există, dar la o respingere 2.1 meritată doar lungește așteptarea. Detaliile despre termene sunt în cât durează validarea App Store.
Dacă motivul rămâne neclar după ce l-ai citit, demersul complet e pe pagina aplicație respinsă de Apple.
Notele pentru review și contul demo
Secțiunea App Review Information a versiunii tale, în App Store Connect, e cea mai bună apărare împotriva lui 2.1. Conform referinței oficiale a acestor câmpuri, conține:
- Sign-in required: numele de utilizator și parola unui cont demo. Contul ăsta nu trebuie să expire. Dacă aplicația ta folosește o autentificare terță, dă datele de acces pentru acel serviciu.
- Notes: până la 4.000 de octeți, în limba pe care o alegi. Tot ce ajută la testare.
- Contact: un nume, un e-mail și un număr în format internațional.
Ce pun de fiecare dată în note:
- Calea spre fiecare achiziție in-app, cum cere regula 2.1(b).
- Funcțiile neevidente: un gest, o permisiune, un conținut legat de o oră.
- Starea contului demo: abonat sau nu, date precompletate sau gol.
- Limitele cunoscute: pentru un hardware sau un mediu greu de reprodus, Apple cere să fii gata să dai un video.
Și o regulă din afara formularului: ține serverul pornit pe toată durata review-ului. Un server de test oprit înseamnă un cont demo care nu mai merge, deci o respingere 2.1.
Checklistul 2.1 înainte de trimitere
Cel pe care îl aplic înainte de fiecare trimitere, construit din respingerile mele:
- Aplicație instalată de la zero pe cel mai mic iPhone suportat, pe cel mai mare și pe un iPad în modul de compatibilitate
- Onboarding parcurs în întregime, eșuând intenționat la fiecare etapă care cere o performanță
- Fiecare ecran obligatoriu are o ieșire fără condiții
- Nicio corecție destinată review-ului livrată doar prin actualizare la distanță
- Aplicație pornită în modul avion, apoi pe o rețea doar IPv6
- Fiecare URL declarat deschis în aceeași zi: confidențialitate, termeni, suport
- Niciun text provizoriu, ecran gol sau date de test vizibile
- Cont demo testat în ziua trimiterii, fără dată de expirare, server pornit
- Fiecare achiziție in-app găsită din aplicație și testată în sandbox, inclusiv restaurarea
- Note pentru review care arată unde sunt achizițiile și funcțiile neevidente
Dacă e prima ta publicare, toate etapele dinainte sunt în cum publici o aplicație pe App Store.
Trimite-ți dosarul cu cineva care a primit deja aceste respingeri
Apple Review Kit adună checklistul meu de dinainte de trimitere, modelele de note pentru tester și skill-uri Claude Code care îți verifică proiectul înainte să-l trimiți.
Tocmai ai primit o respingere 2.1? Kitul te ajută și să găsești regula citată, ce cere ea și un exemplu de corecție și de răspuns. Dacă vrei să ne uităm împreună la dosarul tău chiar acum, rezervă o oră cu mine, pe video.
Nimeni nu poate garanta că Apple îți va accepta aplicația. Ce pot face e să te ajut să eviți respingerile 2.1 pe care eu le-am plătit deja cu câte un ciclu de review.
N-ai trimis încă aplicația? Diagnosticul gratuit îți trimite checklistul meu anti-respingere Apple, inclusiv regula 2.1, și îți spune ce mai ai de făcut înainte de trimitere. Dacă încă o construiești, pagina principală arată cum să creezi o aplicație mobilă cu review-ul în minte de la început.
Întrebări frecvente
Ce înseamnă „Guideline 2.1 - Information Needed”?
Reviewerul n-a putut termina review-ul și îți pune o întrebare: un cont, o explicație, o cale de acces la o funcție. Răspunde precis în App Store Connect. Dacă întrebarea scoate la iveală un blocaj real în aplicație, ca la Solys, corectează-l și trimite un build nou.
E nevoie de un build nou după o respingere 2.1?
Pentru un crash, un bug sau un ecran care blochează, da: corecția trebuie să fie în binar. O actualizare la distanță nu e suficientă, pentru că reviewerul vede codul inclus la prima lansare. Pentru o simplă informație lipsă, poate fi suficient un răspuns.
Aplicația mea cere autentificare: ce îi dau reviewerului?
Un cont demo care nu expiră, completat în secțiunea App Review Information, și un server pornit pe toată durata review-ului. Un mod demo integrat poate înlocui contul doar cu acordul prealabil al Apple și trebuie să arate toate funcțiile.
Poate o respingere 2.1 să vină din altceva decât aplicația?
Da. Un URL mort în pagina aplicației, un cont demo expirat, un server oprit sau o achiziție in-app configurată greșit sunt suficiente. Și uneori, ca la Clic, cauza reală e online, nu în cod: verifică tot ce poate deschide reviewerul.