PDM · DAW 2

Aula 29 · Semana 12 · Terça, 24 de novembro de 2026 · 08:30 às 10:30

Lojas e monetização, e sprint 3

Teoria (30 minutos): modelos de negócio em mobile, compras in-app e subscrições, regras das lojas, publicidade, motivos comuns de rejeição e ASO. Prática: sprint 3, com revisão da app do grupo contra as guidelines da App Store.

Review da sprint 3: quarta 02/12 às 16:30

No fim desta aula consegues

Modelos de negócio

ModeloExemplosO que muda na arquitetura
Pago (compra única)Minecraft, Procreate, ThingsNada no código: a loja cobra antes de instalar. Cada vez mais raro fora de jogos e ferramentas.
FreemiumDuolingo, Windy, SpotifyEntitlements (a app sabe quem tem o quê), paywall, compras in-app, botão de restaurar compras.
SubscriçãoCarrot Weather, Headspace, YouTube PremiumTudo o do freemium mais o ciclo de vida: trial, renovação, falha de cobrança, cancelamento; validação no servidor.
PublicidadeAccuWeather, Instagram, jogos casuaisSDK de anúncios, consentimento, ATT, platform views; a receita depende de volume.
Empresa ou internaApp de estafetas, app de um banco para os balcõesDistribuição fora da loja pública (Apple Business Manager, managed Google Play), login corporativo, sem monetização direta.

Para os testes: o modelo de negócio decide a arquitetura: freemium e subscrição exigem entitlements e restauro de compras, publicidade exige consentimento, apps de empresa distribuem-se fora da loja pública.

Compras in-app e subscrições

Para os testes: conteúdo digital consumido na app passa pela loja, bens e serviços físicos não; restaurar compras é obrigatório e a validação é no servidor.

Comissões e o DMA na UE

App StoreGoogle Play
Comissão padrão30 %30 %
Pequenos programadores15 % com o Small Business Program (até 1 M$ por ano)15 % no primeiro milhão de dólares de cada ano
Subscrições15 % a partir do segundo ano de cada subscritor15 % desde o primeiro dia
Pagamentos alternativos na UEPermitidos desde o iOS 17.4 (2024), com termos próprios da Apple e taxas adicionaisUser choice billing: o utilizador escolhe e a comissão baixa cerca de 4 pontos
Lojas alternativasSó na UE (AltStore PAL, Epic Games Store), com notarização da AppleSempre existiram: sideloading, Galaxy Store, F-Droid

Para os testes: 30 % é a comissão padrão, 15 % para pequenos programadores e subscrições; na UE o DMA obriga a alternativas, mas com condições próprias de cada loja.

Publicidade

Para os testes: a publicidade paga por volume, degrada a experiência quando é intrusiva e exige consentimento (ATT e RGPD) para ser personalizada.

Review guidelines e rejeições comuns

Guideline (Apple)O que o revisor encontraComo evitar
2.1 CompletudeCrash ao abrir, botão que não faz nada, "em breve", login que não funcionaTestar num telemóvel limpo; conta de demonstração nas review notes; zero placeholders
2.3 MetadataScreenshots de outra versão, descrição que fala de Android, funcionalidades que não existemScreenshots do build submetido; descrever só o que existe
3.1.1 PagamentosLink para pagar no site, "mais barato em tempoacores.pt"Conteúdo digital só pela loja; nenhuma referência a preços externos
4.2 Funcionalidade mínimaWebView à volta do site, app que só mostra uma lista estáticaFuncionalidade nativa que o site não tem: offline, notificações, mapa, widgets
5.1.1 PrivacidadeLogin obrigatório sem funcionalidade de conta, permissão sem justificação, dados a maisPedir só o que precisas, quando precisas, com texto concreto; labels a bater certo com a app

Para os testes: as rejeições mais comuns são crashes e funcionalidade incompleta (2.1), metadata enganosa (2.3), pagamento externo (3.1.1), funcionalidade mínima (4.2) e privacidade (5.1.1).

Analogia A loja é ao mesmo tempo a alfândega e a montra. A alfândega (a revisão) verifica as regras antes de deixar a app entrar; a montra (a ficha, os screenshots, o ASO do slide seguinte) decide se alguém repara nela. A Apple tem uma alfândega com inspeção humana a cada versão; a Google inspeciona sobretudo por máquina e é mais rápida, mas exige aos vendedores novos um período de teste fechado antes da primeira venda.

ASO e pedir avaliação no momento certo

final review = InAppReview.instance;
if (previsoesConsultadas == 3 && await review.isAvailable()) {
  await review.requestReview();   // o SO pode decidir não mostrar nada
}

Para os testes: pede-se avaliação com a API do sistema, depois de um sucesso e nunca no arranque; o sistema decide se o pedido aparece.

Sprint 3: ponto de situação

Calendário apertado Depois da review de quarta há uma semana até ao freeze de 09/12, com o teste 2 pelo meio, na segunda 07/12. O polish e o README não podem ficar para a semana do freeze: entram nesta sprint.

Exercício: a vossa app contra as guidelines

Quinze minutos, por grupo, com a app instalada num telemóvel (não no emulador) e a ficha da loja imaginada como se a submissão fosse amanhã. Cada ponto indica a guideline da App Store em causa.

Exercício Percorram a lista na app do grupo e escrevam numa issue os três motivos mais prováveis de rejeição, cada um com o número da guideline, o que o revisor veria e o que vão fazer. O mais grave dos três entra hoje no backlog da sprint 3 com um responsável; os outros dois ficam na issue, ou no README como limitação conhecida se decidirem não os corrigir. Quem acabar antes: NSLocationWhenInUseUsageDescription e as justificações de notificações reescritas em português concreto, num PR de cinco minutos.

Da issue de hoje à review de quarta

Regra do revisor O revisor da Apple passa uns minutos com a vossa app e nunca leu o vosso código. Tudo o que precisar de explicação já vem tarde: se um ecrã só faz sentido com contexto, o contexto vai nas review notes ou o ecrã sai.

Até amanhã

Para fazer

  • A sprint 3 continua: o motivo de rejeição escolhido hoje está numa issue com responsável, e a migração para a API v2 está merged em todos os grupos.
  • PRs abertos revistos por um colega até amanhã; nada entra em main sem revisão e sem CI verde.
  • Para amanhã: o projeto compila em release (flutter build apk --release sem erros) num portátil do grupo.

Para ler