- This topic is empty.
-
AuthorPosts
-
February 1, 2026 at 9:41 pm #7529
VOGO Technology
KeymasterFlutter permite dezvoltarea de aplicații cross-platform, însă foarte multe aplicații Flutter sunt respinse de Apple App Store, uneori de mai multe ori, chiar dacă funcționează perfect pe Android.
Acest articol explică motivele reale pentru care aplicațiile Flutter sunt respinse pe iOS și, mai important, cum pot fi rezolvate corect, pe baza unor cazuri reale din producție.
Apple nu evaluează Flutter. Apple evaluează aplicația iOS.
Un mit des întâlnit este că „Apple nu acceptă Flutter”.
Este fals.Apple nu face review la Flutter.
Apple face review la aplicația iOS finală, analizând:-
comportamentul aplicației
-
folosirea API-urilor native
-
respectarea politicilor de confidențialitate
-
performanța
-
stabilitatea
-
experiența utilizatorului
-
execuția în background
-
conformitatea cu regulile App Store
Dacă o aplicație Flutter este respinsă, motivul este o problemă iOS, nu framework-ul.
Cele mai frecvente motive de respingere pentru aplicațiile Flutter
1. Probleme de confidențialitate și App Tracking Transparency (ATT)
Unul dintre cele mai comune motive de respingere.
Probleme tipice:
-
Firebase Analytics activ fără ATT
-
colectare de identificatori înainte de consimțământ
-
lipsa sau formulare greșită a
NSUserTrackingUsageDescription -
neconcordanță între cod și App Privacy Details
Mesaje tipice de la Apple:
-
„Your app uses tracking technologies but does not request user permission.”
-
„The app collects user data not disclosed in App Privacy details.”
Soluția corectă
-
Audit complet al tuturor SDK-urilor (Firebase, Ads, Analytics)
-
Implementarea ATT înainte de orice tracking
-
Dezactivarea tracking-ului până la acordul explicit
-
Alinierea
Info.plistcu declarațiile din App Store Connect
2. Aplicații de tip WebView sau „wrapper”
Apple respinge frecvent aplicațiile care se comportă ca simple site-uri ambalate.
Greșeli frecvente în aplicații Flutter:
-
folosire excesivă de
WebView -
navigație identică cu un website
-
puține funcționalități native
-
conținut încărcat dinamic fără valoare adăugată
Apple le clasifică drept:
-
„Apps that do not provide sufficient native functionality.”
Soluția corectă
-
Folosește widget-uri Flutter pentru fluxurile principale
-
Limitează WebView la conținut secundar
-
Demonstrează clar valoarea nativă:
-
push notifications
-
navigație nativă
-
integrare cu API-uri de sistem
-
-
Explică explicit în Review Notes de ce există WebView
3. Probleme de performanță pe dispozitive reale
Aplicația poate funcționa „ok” la testare, dar să fie respinsă la review.
Apple testează pe:
-
iPhone-uri mai vechi
-
condiții reale de rețea
-
porniri la rece (cold start)
Probleme tipice:
-
sacadări UI
-
ecrane care se încarcă lent
-
prima randare greoaie
-
blocarea thread-ului principal
Soluția corectă
-
Profilare cu Xcode Instruments (nu doar Flutter DevTools)
-
Optimizarea primei randări
-
Încărcare lazy pentru funcționalități grele
-
Evitarea apelurilor native sincrone la startup
4. Background tasks și push notifications folosite greșit
Foarte multe aplicații Flutter încalcă regulile iOS legate de background.
Greșeli frecvente:
-
servicii în background fără justificare
-
folosirea abuzivă a notificărilor „silent”
-
lipsa explicațiilor pentru background modes
Mesaje tipice:
-
„The app uses background execution without valid use cases.”
Soluția corectă
-
Activează background modes doar când este absolut necesar
-
Documentează clar comportamentul în App Review Notes
-
Respectă strict regulile APNs și Firebase Messaging
-
Nu folosi hack-uri pentru execuție permanentă
5. Conflicte de dependențe iOS (CocoaPods)
Un punct sensibil pentru proiectele Flutter.
Probleme des întâlnite:
-
amestec de versiuni Firebase / Google incompatibile
-
forțarea versiunilor în Podfile
-
pluginuri vechi care blochează SDK-uri noi
Rezultatul:
-
build-ul trece local
-
TestFlight funcționează
-
aplicația este respinsă sau se prăbușește la review
Soluția corectă
-
Nu forța versiunile CocoaPods fără înțelegere
-
Aliniază toate SDK-urile Google pe aceeași generație
-
Preferă upgrade-ul pluginurilor
-
Tratează warning-urile CocoaPods ca erori reale
App Review Notes sunt subestimate (și foarte importante)
Multe aplicații sunt respinse nu pentru că sunt greșite, ci pentru că Apple nu înțelege ce fac.
În Review Notes trebuie să explici:
-
fluxurile de autentificare
-
conturi de test
-
comportamentul în background
-
motivele pentru WebView (dacă există)
-
limitări cunoscute
Un review note bun poate preveni respingeri inutile.
Flutter nu este problema. Arhitectura este.
Aplicațiile Flutter respinse au, de obicei, aceleași caracteristici:
-
MVP-uri duse direct în producție
-
decizii Android-first
-
lipsă de înțelegere a iOS
-
optimizare pentru viteză, nu pentru mentenanță
Flutter amplifică greșelile de arhitectură. Nu le ascunde.
Checklist înainte de submit în App Store
Înainte de fiecare submit:
-
✅ ATT implementat și testat
-
✅ App Privacy Details verificate
-
✅ Fără forțări în Podfile
-
✅ Testare pe iPhone-uri mai vechi
-
✅ Background modes justificate
-
✅ Review Notes clare și complete
Concluzie
Aplicațiile Flutter nu eșuează la review pentru că Apple respinge Flutter.
Eșuează pentru că regulile iOS sunt stricte, iar Flutter nu te scutește de ele.Cu:
-
arhitectură corectă
-
disciplină iOS
-
respectarea politicilor Apple
aplicațiile Flutter pot trece review-ul fără probleme și pot scala pe termen lung.
Diferența nu este framework-ul.
Diferența este ingineria. -
-
AuthorPosts
- You must be logged in to reply to this topic.
