Apple App Store - Deploy iOS
Última atualização: 6 de novembro de 2025
Visão Geral
Guia completo para publicação de aplicativos iOS na Apple App Store, incluindo o processo de TestFlight para testes beta e deploy em produção. A Apple oferece um fluxo de aprovação rigoroso que garante qualidade e segurança dos aplicativos disponibilizados na loja.
Tipos de Distribuição
| Tipo | Alcance | Descrição |
|---|---|---|
| TestFlight (Beta) | Até 10.000 testadores | Testes beta antes do lançamento |
| Produção | Todos os usuários | Versão final disponível na App Store |
Pré-requisitos
Conta de Desenvolvedor Apple
- Apple Developer Program ativo
- App Store Connect configurado
- Certificados e Perfis de provisionamento criados
Configurações Necessárias
| Item | Descrição | Obrigatório |
|---|---|---|
| IPA | Arquivo compilado do aplicativo | ✅ Sim |
| Certificado de Distribuição | Para assinar o app | ✅ Sim |
| Provisioning Profile | Perfil de provisionamento | ✅ Sim |
| Ícone do aplicativo | 1024x1024px em PNG | ✅ Sim |
| Screenshots | Por tamanho de tela | ✅ Sim |
| Descrição | Curta e detalhada | ✅ Sim |
| Política de Privacidade | URL válida | ✅ Sim |
| IDFA | Justificativa se usar rastreamento | Condicional |
TestFlight - Distribuição Beta
Visão Geral
TestFlight é a plataforma oficial da Apple para distribuir versões beta do seu aplicativo para testadores antes do lançamento público. Permite coletar feedback, identificar bugs e validar funcionalidades com usuários reais.
Características do TestFlight
| Característica | Detalhes |
|---|---|
| Testadores Internos | Até 100 membros da equipe do App Store Connect |
| Testadores Externos | Até 10.000 testadores públicos |
| Duração do Build | 90 dias após upload |
| Aprovação Apple | Necessária para testadores externos |
| Feedback | Coleta automática via app TestFlight |
| Instalação | Via app TestFlight na App Store |
Para que serve o TestFlight
Casos de Uso
- ✅ Testes internos com equipe de desenvolvimento e QA
- ✅ Testes beta com grupo selecionado de usuários
- ✅ Validação de funcionalidades antes do lançamento
- ✅ Coleta de feedback estruturado
- ✅ Identificação de bugs em ambiente real
- ✅ Testes de aceitação do usuário (UAT)
- ✅ Demonstrações para clientes e stakeholders
Benefícios
| Benefício | Descrição |
|---|---|
| Sem custos adicionais | Incluído no Apple Developer Program |
| Fácil distribuição | Testadores instalam via app TestFlight |
| Feedback integrado | Sistema nativo de coleta de feedback |
| Múltiplas versões | Até 3 builds ativos simultaneamente |
| Análises | Métricas de uso e crashes |
Tipos de Testadores
1. Testadores Internos
Características:
- Limite: Até 100 testadores
- Aprovação: Nenhuma (distribuição imediata)
- Acesso: Membros do App Store Connect com papel adequado
- Finalidade: Testes rápidos com equipe interna
Como Funciona:
1. Testador deve ter conta no App Store Connect
2. Papel: Admin, Desenvolvedor, Marketing ou Vendas
3. Acesso imediato após upload do build
4. Não requer revisão da Apple
Quando Usar:
- ✅ Validações rápidas de desenvolvimento
- ✅ Testes de regressão
- ✅ Verificação de builds antes de distribuir externamente
- ✅ QA interno
2. Testadores Externos
Características:
- Limite: Até 10.000 testadores
- Aprovação: Revisão da Apple (1-2 dias)
- Acesso: Qualquer pessoa com e-mail ou link público
- Finalidade: Beta público ou privado
Como Funciona:
1. Enviar build para revisão da Apple
2. Aguardar aprovação (1-2 dias)
3. Convidar testadores por e-mail ou link
4. Testadores instalam via app TestFlight
Quando Usar:
- ✅ Testes beta com usuários selecionados
- ✅ Validação com clientes
- ✅ Coleta de feedback em larga escala
- ✅ Testes antes do lançamento oficial
Configurar TestFlight
Passo 1: Preparar o Build
# Via Fastlane (recomendado)
bundle exec fastlane ios beta
# Ou manualmente no Xcode
# Product → Archive → Distribute App → TestFlight
Passo 2: Upload para App Store Connect
Opções de Upload:
| Método | Ferramenta | Uso |
|---|---|---|
| Xcode | Xcode Organizer | Upload manual |
| Transporter | App Transporter | Upload offline |
| Fastlane | deliver | Automação |
| Xcode Cloud | CI/CD integrado | Automação Apple |
Via Xcode:
1. Window → Organizer
2. Selecionar o arquivo
3. Distribute App → App Store Connect
4. Upload
5. Aguardar processamento (5-30 min)
Via Fastlane:
# ios/fastlane/Fastfile
lane :beta do
build_app(
scheme: "YourApp",
export_method: "app-store"
)
upload_to_testflight(
skip_waiting_for_build_processing: false
)
end
Passo 3: Configurar Testadores Internos
1. App Store Connect → TestFlight
2. Grupo Padrão: App Store Connect Users
3. Builds → Selecionar build
4. Habilitar para testadores internos
5. Testadores recebem notificação automática
Passo 4: Configurar Testadores Externos
Criar Grupo de Testadores:
1. TestFlight → Testadores Externos
2. Criar Grupo (ex: "Beta Público")
3. Adicionar testadores:
- Manualmente por e-mail
- Ou gerar link público
4. Selecionar build para distribuir
5. Preencher informações de teste
6. Enviar para revisão da Apple
Informações de Teste:
| Campo | Descrição | Obrigatório |
|---|---|---|
| O que testar | Funcionalidades a validar | ✅ Sim |
| E-mail de feedback | Contato para testadores | ✅ Sim |
| Nome de usuário | Para login de teste | Condicional |
| Senha | Para login de teste | Condicional |
Gerenciar Builds no TestFlight
Adicionar Notas de Teste
1. TestFlight → Builds → Selecionar build
2. Test Details → What to Test
3. Descrever:
- Novas funcionalidades
- Áreas para testar
- Problemas conhecidos
- Credenciais de teste (se necessário)
Template de Notas:
## Versão 5.1.550
### Novas Funcionalidades
- 🎉 Sistema de notificações push
- ✨ Novo design do catálogo
### Para Testar
- [ ] Login com suas credenciais
- [ ] Navegar pelo catálogo
- [ ] Testar notificações
### Problemas Conhecidos
- Pequeno atraso no carregamento inicial
### Credenciais de Teste
- Usuário: teste@exemplo.com
- Senha: Teste123!
Gerenciar Múltiplos Builds
Boas Práticas:
- Máximo de 3 builds ativos por grupo
- Builds expiram após 90 dias
- Remover builds antigos regularmente
- Usar números de versão claros
Expiração de Builds
| Evento | Ação |
|---|---|
| 90 dias após upload | Build expira automaticamente |
| Antes de expirar | Testadores recebem aviso |
| Após expirar | App para de funcionar em dispositivos de teste |
Monitoramento no TestFlight
Métricas Disponíveis
| Métrica | Descrição | Localização |
|---|---|---|
| Instalações | Quantos testadores instalaram | TestFlight → Métricas |
| Sessões | Número de aberturas do app | TestFlight → Métricas |
| Crashes | Relatórios de crashes | TestFlight → Crashes |
| Feedback | Comentários dos testadores | TestFlight → Feedback |
| Screenshots | Capturas de tela dos testadores | TestFlight → Feedback |
Análise de Crashes
1. TestFlight → Crashes
2. Selecionar build
3. Ver crashes agrupados
4. Baixar logs detalhados
5. Simbolizar para análise
Coletar Feedback
Tipos de Feedback:
- 📧 E-mail direto dos testadores
- 📱 Screenshots anotados via app TestFlight
- 💬 Comentários sobre funcionalidades específicas
- 🐛 Relatórios de bugs com contexto
Produção - App Store
Visão Geral
A distribuição em produção disponibiliza seu aplicativo para todos os usuários da App Store. O processo envolve uma revisão rigorosa da Apple que pode levar de 24 horas a 7 dias.
Características da Produção
| Característica | Detalhes |
|---|---|
| Público | Todos os usuários da App Store |
| Aprovação | Revisão completa da Apple (1-7 dias) |
| Visibilidade | Pública na App Store |
| Atualizações | Requerem nova revisão |
| Lançamento | Manual ou automático após aprovação |
Para que serve a Produção
- ✅ Lançamento oficial do aplicativo
- ✅ Disponibilização pública na App Store
- ✅ Geração de receita (se aplicável)
- ✅ Alcance máximo de usuários
- ✅ Posicionamento em rankings e buscas
Preparar para Produção
1. Informações do App
App Store Connect → Meu App → Informações do App:
| Seção | Campos Obrigatórios |
|---|---|
| Localização | Nome, Subtítulo, Política de Privacidade |
| Categoria | Primária e Secundária (opcional) |
| Classificação | Conteúdo e faixa etária |
| Contato | E-mail, telefone, URL de suporte |
2. Preços e Disponibilidade
App Store Connect → Preços e Disponibilidade
Configurar:
- Preço (ou gratuito)
- Países disponíveis
- Compras no app (se aplicável)
- Data de disponibilidade
Opções de Preço:
| Opção | Descrição |
|---|---|
| Gratuito | Sem custo para usuários |
| Pago | Preço único para download |
| Freemium | Gratuito com compras no app |
3. Privacidade
Informações de Privacidade:
App Store Connect → Privacidade do App
Declarar:
- Dados coletados
- Finalidade da coleta
- Dados vinculados ao usuário
- Dados de rastreamento
Categorias de Dados:
- 📧 Informações de contato
- 🏥 Dados de saúde
- 💰 Informações financeiras
- 📍 Localização
- 🔍 Dados de navegação
- 🎯 Identificadores
Criar Versão de Produção
Passo 1: Adicionar Versão
1. App Store Connect → Meu App
2. Distribuição → App Store
3. + Versão ou Plataforma
4. Número da versão (ex: 5.1.550)
5. Criar
Passo 2: Preencher Metadados
Informações da Versão:
| Campo | Descrição | Limites |
|---|---|---|
| Nome | Nome do app | 30 caracteres |
| Subtítulo | Descrição curta | 30 caracteres |
| Descrição | Descrição completa | 4.000 caracteres |
| Palavras-chave | Para busca | 100 caracteres |
| URL de suporte | Link para suporte | URL válida |
| URL de marketing | Site do app (opcional) | URL válida |
| Novidades | Changelog da versão | 4.000 caracteres |
Template de Descrição:
[Nome do App] - Solução completa para [propósito]
PRINCIPAIS FUNCIONALIDADES:
• Funcionalidade 1
• Funcionalidade 2
• Funcionalidade 3
BENEFÍCIOS:
✓ Benefício 1
✓ Benefício 2
✓ Benefício 3
DESTAQUES:
⭐ Destaque 1
⭐ Destaque 2
Baixe agora e [call-to-action]!
Passo 3: Adicionar Screenshots
Tamanhos Obrigatórios:
| Dispositivo | Resolução | Quantidade |
|---|---|---|
| iPhone 6.7" | 1290x2796px | Mínimo 1 |
| iPhone 6.5" | 1242x2688px | Mínimo 1 |
| iPhone 5.5" | 1242x2208px | Opcional |
| iPad Pro 12.9" | 2048x2732px | Mínimo 1 |
Boas Práticas:
- ✅ Usar 4-5 screenshots por tamanho
- ✅ Destacar principais funcionalidades
- ✅ Incluir texto descritivo nas imagens
- ✅ Manter identidade visual consistente
- ✅ Atualizar quando UI mudar significativamente
Passo 4: Selecionar Build
1. Na versão criada → Build
2. Selecionar build do TestFlight
3. Build deve estar aprovado para testadores externos
4. Aguardar processamento (se necessário)
Requisitos do Build:
- ✅ Número de versão corresponde à versão da App Store
- ✅ Aprovado para testadores externos (se foi no TestFlight)
- ✅ Sem erros de processamento
- ✅ Compatível com versões do iOS declaradas
Passo 5: Configurar Lançamento
Opções de Lançamento:
| Opção | Descrição | Quando Usar |
|---|---|---|
| Manual | Você controla quando publicar | Lançamentos coordenados |
| Automático | Publica assim que aprovado | Atualizações simples |
| Agendado | Define data/hora específica | Lançamentos planejados |
1. Versão → Informações da Versão
2. Lançamento da Versão
3. Selecionar opção desejada
Passo 6: Enviar para Revisão
Checklist Pré-Envio:
- Todos os metadados preenchidos
- Screenshots adicionados
- Build selecionado
- Política de privacidade atualizada
- Informações de contato corretas
- Classificação etária definida
- Opção de lançamento escolhida
Enviar:
1. Revisar todas as informações
2. Salvar
3. Adicionar para Revisão
4. Enviar para a App Store
5. Aguardar aprovação
Processo de Revisão da Apple
Linha do Tempo
| Fase | Duração | Status |
|---|---|---|
| Aguardando Revisão | Variável | Fila de espera |
| Em Revisão | 24-48h | Apple testando |
| Pendente de Informações | Indefinido | Aguardando resposta |
| Rejeitado | - | Requer correções |
| Aprovado | - | Pronto para lançamento |
O que a Apple Revisa
Áreas de Análise:
- ✅ Funcionalidade: App funciona conforme descrito
- ✅ Performance: Estabilidade e velocidade
- ✅ Segurança: Proteção de dados do usuário
- ✅ Design: Interface e experiência do usuário
- ✅ Negócios: Compliance com políticas comerciais
- ✅ Legal: Conformidade com leis e regulamentos
Motivos Comuns de Rejeição
| Motivo | Solução |
|---|---|
| Crashes frequentes | Corrigir bugs e reenviar |
| Funcionalidade incompleta | Implementar recursos prometidos |
| Violação de privacidade | Atualizar política e práticas |
| Metadados enganosos | Ajustar descrição e screenshots |
| Recursos não documentados | Adicionar à descrição |
| Compras não funcionais | Testar IAP em sandbox |
Pós-Aprovação
Lançamento Manual
1. App Store Connect → Meu App
2. Status: Pronto para Venda
3. Lançar esta Versão
4. Confirmar
Lançamento Automático
- App é publicado automaticamente após aprovação
- Sem intervenção necessária
Lançamento Gradual (Phased Release)
Como Funciona:
- Distribuição gradual ao longo de 7 dias
- Automaticamente gerenciado pela Apple
- Possibilidade de pausar se problemas forem detectados
Cronograma Padrão:
| Dia | Porcentagem |
|---|---|
| 1 | 1% |
| 2 | 2% |
| 3 | 5% |
| 4 | 10% |
| 5 | 20% |
| 6 | 50% |
| 7 | 100% |
Habilitar:
1. Versão → Lançamento Gradual Automático
2. Ativar para esta versão
3. Salvar
Monitoramento Pós-Lançamento
App Analytics
Métricas Disponíveis:
| Métrica | Descrição |
|---|---|
| Impressões | Visualizações na App Store |
| Conversão | Taxa de download |
| Instalações | Quantidade de downloads |
| Sessões | Uso do aplicativo |
| Retenção | Usuários que retornam |
| Crashes | Taxa de falhas |
Acessar:
App Store Connect → Analytics
- Visão geral
- Métricas do app
- Fontes de aquisição
- Uso
- Retenção
Avaliações e Comentários
Gerenciar Feedback:
1. App Store Connect → Avaliações e Comentários
2. Ler avaliações
3. Responder (recomendado)
4. Reportar avaliações inadequadas
Boas Práticas:
- ✅ Responder avaliações negativas educadamente
- ✅ Agradecer feedback positivo
- ✅ Oferecer suporte em avaliações com problemas
- ✅ Monitorar tendências de feedback
Comparação TestFlight vs Produção
| Característica | TestFlight | Produção |
|---|---|---|
| Público | Até 10.000 testadores | Ilimitado |
| Aprovação | 1-2 dias (externos) | 1-7 dias |
| Duração | 90 dias | Permanente |
| Atualizações | Ilimitadas | Requer nova revisão |
| Feedback | Integrado no app | Avaliações da App Store |
| Custo | Incluído | Incluído |
| Visibilidade | Privado ou por convite | Pública |
| Métricas | Básicas | Completas (Analytics) |
Automação com Fastlane
Configuração Completa
# ios/fastlane/Fastfile
default_platform(:ios)
platform :ios do
# Lane para TestFlight
lane :beta do
# Incrementar build number
increment_build_number(xcodeproj: "YourApp.xcodeproj")
# Build do app
build_app(
scheme: "YourApp",
export_method: "app-store",
export_options: {
provisioningProfiles: {
"com.yourcompany.yourapp" => "YourApp AppStore"
}
}
)
# Upload para TestFlight
upload_to_testflight(
skip_waiting_for_build_processing: false,
notify_external_testers: true,
changelog: "Bug fixes and improvements"
)
end
# Lane para Produção
lane :release do
# Incrementar versão
increment_version_number(
bump_type: "patch" # ou "minor" ou "major"
)
# Build
build_app(
scheme: "YourApp",
export_method: "app-store"
)
# Upload para App Store
upload_to_app_store(
force: true,
skip_metadata: false,
skip_screenshots: true,
submit_for_review: true,
automatic_release: false,
phased_release: true,
submission_information: {
add_id_info_uses_idfa: false
}
)
end
# Lane para screenshots
lane :screenshots do
snapshot
end
end
Executar Deploy
# TestFlight
bundle exec fastlane ios beta
# Produção
bundle exec fastlane ios release
# Gerar screenshots
bundle exec fastlane ios screenshots
Certificados e Provisionamento
Tipos de Certificados
| Tipo | Uso | Duração |
|---|---|---|
| Development | Desenvolvimento local | 1 ano |
| Distribution | App Store e TestFlight | 1 ano |
| Push Notification | Notificações push | 1 ano |
Perfis de Provisionamento
| Tipo | Uso | Dispositivos |
|---|---|---|
| Development | Testes locais | Específicos |
| Ad Hoc | Distribuição limitada | Até 100 |
| App Store | TestFlight e App Store | Ilimitados |
Gerenciar com Fastlane Match
# Configurar Match
fastlane match init
# Criar certificados
fastlane match appstore
fastlane match development
# Renovar certificados
fastlane match nuke distribution
fastlane match appstore
Solução de Problemas
TestFlight
Build não aparece
Causas comuns:
- Ainda processando (aguardar 5-30 min)
- Erro de processamento
- Número de versão duplicado
Solução:
1. Verificar e-mails da Apple
2. Xcode Organizer → Verificar status
3. Incrementar build number e reenviar
Testadores não recebem convite
Verificar:
- E-mail correto
- Build habilitado para o grupo
- Verificar spam
- Limite de testadores não atingido
Solução:
1. Reenviar convite
2. Usar link público alternativo
3. Verificar status do grupo
App Store
Rejeição por Guideline 2.1 (Bugs)
Problema: App crasha ou tem bugs críticos
Solução:
1. Corrigir todos os bugs
2. Testar extensivamente
3. Providenciar vídeo demonstrando funcionamento
4. Reenviar para revisão
Rejeição por Guideline 5.1.1 (Privacidade)
Problema: Política de privacidade inadequada
Solução:
1. Atualizar política de privacidade
2. Declarar corretamente dados coletados
3. Adicionar consentimento quando necessário
4. Reenviar para revisão
Build não disponível
Possíveis causas:
- Build ainda processando
- Expirou (90 dias)
- Erro no upload
Solução:
1. Aguardar processamento
2. Fazer novo upload
3. Verificar logs no Xcode Organizer
Checklist de Deploy
Pré-Deploy TestFlight
- Build compilado sem erros
- Testado em dispositivos físicos
- Certificado de distribuição válido
- Provisioning profile atualizado
- Build number incrementado
- Notas de teste escritas
Pré-Deploy Produção
- Todos os itens de TestFlight ✓
- Testado extensivamente via TestFlight
- Screenshots atualizados
- Metadados revisados
- Política de privacidade atualizada
- Informações de privacidade declaradas
- Keywords otimizadas
- Classificação etária correta
Pós-Deploy
- Monitorar crashes (48h)
- Responder avaliações
- Analisar métricas
- Verificar taxa de conversão
- Preparar próxima versão
Requisitos de Conteúdo
Screenshots
Quantidade Recomendada: 4-5 por tamanho de tela
Ordem Sugerida:
- Principal funcionalidade ou tela inicial
- Segunda funcionalidade mais importante
- Terceira funcionalidade
- Social proof ou avaliações
- Call-to-action ou benefício final
App Preview (Vídeo)
| Especificação | Valor |
|---|---|
| Duração | 15-30 segundos |
| Resolução | Por dispositivo |
| Formato | .mov ou .mp4 |
| Orientação | Portrait ou landscape |
Políticas da Apple
Guidelines Principais
| Guideline | Descrição |
|---|---|
| 2.1 | Performance e bugs |
| 2.3 | Metadados precisos |
| 4.0 | Design e experiência |
| 5.1 | Privacidade e dados |
Links Úteis
Glossário
| Termo | Descrição |
|---|---|
| IPA | iOS App Archive - arquivo do aplicativo iOS |
| TestFlight | Plataforma de testes beta da Apple |
| Build Number | Número interno incremental da versão |
| Version Number | Versão legível (ex: 5.1.550) |
| Provisioning Profile | Perfil de autorização para distribuição |
| Bundle ID | Identificador único do app |
| App Store Connect | Portal de gerenciamento de apps Apple |
| Phased Release | Lançamento gradual automático da Apple |
Boas Práticas
TestFlight
- ✅ Usar testadores internos para validação rápida
- ✅ Enviar para testadores externos apenas versões estáveis
- ✅ Providenciar notas de teste detalhadas
- ✅ Responder feedback dos testadores
- ✅ Manter no máximo 3 builds ativos
- ✅ Remover builds antigos regularmente
Produção
- ✅ Testar extensivamente no TestFlight antes
- ✅ Usar lançamento gradual para primeiras versões
- ✅ Monitorar crashes nas primeiras 48h
- ✅ Responder todas as avaliações
- ✅ Manter screenshots e metadados atualizados
- ✅ Planejar releases com antecedência (considerar tempo de revisão)
Sempre teste sua build no TestFlight com testadores externos antes de enviar para produção. Isso ajuda a identificar problemas que a Apple pode encontrar durante a revisão.
Builds no TestFlight expiram após 90 dias. Planeje seus ciclos de teste considerando essa limitação.
A Apple pode rejeitar atualizações mesmo se versões anteriores foram aprovadas. Sempre revise as guidelines antes de cada envio.