| name | guideline-apple |
| description | Audits a Flutter app for compliance with Apple App Store Review Guidelines. Checks privacy keys (NSUsageDescription), ATT, Info.plist, SafeArea/notch handling, IAP for digital goods, age rating, accessibility, metadata accuracy, Kids Category rules, and HIG design basics. Use when the user asks to review, prepare or audit an app for App Store submission. Activate even when the user says 'my app was rejected by Apple', 'what do I need to submit to the App Store?', 'App Store review checklist', 'is my app ready for App Store?', 'Apple rejected my binary', 'NSUserTrackingUsageDescription is missing', or 'how to pass App Store review' without explicitly mentioning App Store Review Guidelines or HIG. |
Apple App Store Guidelines — Compliance Audit
Analisa o projeto Flutter e verifica conformidade com as principais exigências das Apple App Store Review Guidelines.
Antes de auditar
Leia as instruções do projeto:
.github/instructions/architecture.instructions.md
.github/instructions/view.instructions.md
Arquivos-chave a inspecionar no projeto:
ios/Runner/Info.plist
ios/Runner.xcodeproj/project.pbxproj
pubspec.yaml
lib/app.dart
lib/main_production.dart
lib/presentation/**/view/**
lib/common/services/
lib/l10n/arb/app_en.arb
Escopo de Auditoria
1. Privacidade e Proteção de Dados (Diretriz 5.1)
1.1 NSUsageDescription — Chaves obrigatórias no Info.plist
Para cada permissão usada no app, verificar se a chave e descrição existem em ios/Runner/Info.plist:
| Permissão | Chave Info.plist | Criticidade |
|---|
| Câmera | NSCameraUsageDescription | 🔴 Bloqueante |
| Galeria (leitura) | NSPhotoLibraryUsageDescription | 🔴 Bloqueante |
| Galeria (escrita) | NSPhotoLibraryAddUsageDescription | 🔴 Bloqueante |
| Microfone | NSMicrophoneUsageDescription | 🔴 Bloqueante |
| Localização (em uso) | NSLocationWhenInUseUsageDescription | 🔴 Bloqueante |
| Localização (sempre) | NSLocationAlwaysAndWhenInUseUsageDescription | 🔴 Bloqueante |
| Contatos | NSContactsUsageDescription | 🔴 Bloqueante |
| Calendário (leitura) | NSCalendarsUsageDescription | 🔴 Bloqueante |
| Calendário (escrita) | NSCalendarsWriteOnlyAccessUsageDescription | 🔴 Bloqueante |
| Lembretes | NSRemindersUsageDescription | 🔴 Bloqueante |
| Notificações locais | NSUserNotificationsUsageDescription | 🟡 Recomendado |
| Bluetooth | NSBluetoothAlwaysUsageDescription | 🔴 Bloqueante |
| Face ID / Touch ID | NSFaceIDUsageDescription | 🔴 Bloqueante |
| Rastreamento / ATT | NSUserTrackingUsageDescription | 🔴 Bloqueante |
| Saúde (leitura) | NSHealthShareUsageDescription | 🔴 Bloqueante |
| Saúde (escrita) | NSHealthUpdateUsageDescription | 🔴 Bloqueante |
| Movimento / Pedômetro | NSMotionUsageDescription | 🔴 Bloqueante |
| Siri | NSSiriUsageDescription | 🔴 Bloqueante |
| Reconhecimento de fala | NSSpeechRecognitionUsageDescription | 🔴 Bloqueante |
| Rede local | NSLocalNetworkUsageDescription | 🔴 Bloqueante |
Regras de qualidade para as descrições:
- ✅ Deve explicar CLARAMENTE o propósito (ex: "Para tirar fotos do seu perfil")
- ✅ Deve estar no idioma principal do app
- ✅ Deve ser descritiva e específica — não genérica (ex: evitar "Necessário para o app")
- ❌ NÃO pode ser vazia ou conter apenas o nome do app
1.2 App Tracking Transparency (ATT) — (iOS 14.5+)
1.3 Privacy Nutrition Labels (App Privacy)
1.4 Privacy Manifest (PrivacyInfo.xcprivacy)
2. Compras e Pagamentos (Diretriz 3.1)
2.1 Compras In-App obrigatórias
Casos que NÃO precisam de IAP (permitido uso de pagamento externo):
- Bens e serviços físicos (ex: delivery, e-commerce de produtos físicos)
- Serviços "fora do app" (ex: Uber, reservas, streaming de terceiros)
2.2 Assinaturas
2.3 Proibições
- ❌ NÃO indicar preços de outras plataformas (ex: "Mais barato no Android")
- ❌ NÃO redirecionar para site externo para compra de conteúdo digital
- ❌ NÃO usar botões de "external purchase link" sem o entitlement aprovado pela Apple
3. Design e Interface (Diretrizes 4.x + HIG)
3.1 SafeArea e Suporte a Notch / Dynamic Island
Padrão esperado no projeto:
// Com AppBar
Scaffold(
appBar: AppBar(...),
body: SafeArea(top: false, child: ...),
)
// Sem AppBar / fullscreen
Scaffold(
body: SafeArea(child: ...),
)
3.2 Suporte a Tamanhos de Tela (iPad + iPhone)
3.3 Funcionalidade Mínima (Diretriz 4.2)
3.4 Conteúdo Inacabado / Build de Teste
4. Acessibilidade (Diretriz 4.x + HIG Accessibility)
5. Classificação Etária / Kids Category (Diretrizes 1.3 + 5.1.4)
6. Metadados e Apresentação (Diretriz 2.3)
7. Segurança e Integridade de Dados (Diretriz 5.2 + 5.4)
8. Notificações Push (Diretriz 4.5.4)
9. Login / Autenticação (Diretriz 4.8)
10. Flutter / Dart — Verificações Específicas para iOS
Formato de Saída
Para cada categoria auditada, usar o seguinte formato:
## [Número]. [Nome da Categoria]
**Status:** ✅ Conforme | ⚠️ Atenção | ❌ Não conforme | ⏭️ Não aplicável
### Problemas encontrados:
1. [criticidade] Descrição do problema
- Arquivo: `caminho/do/arquivo.ext`
- Linha: X (se aplicável)
- Atual: `código ou valor atual`
- Correção: `código ou valor esperado`
### Itens conformes:
- ✅ Descrição do item ok
Relatório Final
Ao final da auditoria, gerar um resumo executivo:
## 📋 Relatório de Conformidade Apple App Store
### Resumo
| Categoria | Status | Bloqueantes | Atenções |
|---|---|---|---|
| 1. Privacidade | ✅/⚠️/❌ | N | N |
| 2. Compras IAP | ✅/⚠️/❌ | N | N |
| 3. Design / HIG | ✅/⚠️/❌ | N | N |
| 4. Acessibilidade | ✅/⚠️/❌ | N | N |
| 5. Classificação Etária | ✅/⚠️/❌ | N | N |
| 6. Metadados | ✅/⚠️/❌ | N | N |
| 7. Segurança / ATS | ✅/⚠️/❌ | N | N |
| 8. Notificações | ✅/⚠️/❌ | N | N |
| 9. Login / Apple Sign-In | ✅/⚠️/❌ | N | N |
| 10. Flutter/iOS Específico | ✅/⚠️/❌ | N | N |
### Veredicto
🔴 NÃO PRONTO — X item(ns) bloqueante(s) devem ser corrigidos antes do envio.
🟡 QUASE PRONTO — Sem bloqueantes, mas X atenção(ões) recomendadas.
🟢 PRONTO — App em conformidade com as principais diretrizes da Apple.
### Próximos Passos (ordenados por prioridade)
1. [BLOQUEANTE] Ação corretiva
2. [ATENÇÃO] Ação recomendada
Referências
Última atualização: 28 de março de 2026