Pular para o conteúdo
supastack
Explorar a documentação
MobileExpo

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /pt/docs/mobile/notifications.md (or send Accept: text/markdown).

Notificações e push

A caixa de entrada na app, as preferências de canal e o pipeline de push Expo.

A caixa de entrada e as preferências de canal

O separador de notificações lista as notificações do workspace a partir de GET /api/notifications e marca-as como lidas com um PATCH no id da notificação. Configurações → Notificações edita as preferências de canal partilhadas — emailBilling, emailInvites, inAppProduct — através de GET e PATCH na vista de preferências da mesma rota, o contrato exato que a app web usa. A contagem de não lidas aparece no ecrã inicial.

Regista um dispositivo para push

No início de sessão — e outra vez em cada mudança de workspace — a app pede a permissão de notificações, resolve o id de projeto EAS a partir da configuração da app, obtém um Expo push token e envia-o para POST /api/mobile/push-tokens. O Android regista no canal predefinido com importância alta.

O registo reporta registered, permission_denied ou unavailable e nunca lança — o início de sessão nunca é bloqueado pelo push. O Expo Go e os simuladores não conseguem concluir o registo, por isso a cobertura real precisa de um development build. O token fica em SecureStore (supastack.push.token) para que o sign-out o possa desregistar antes de o cookie de sessão ser destruído.

Entrega do servidor e recibos

GET lista os tokens do membro, POST faz upsert de um token debaixo do workspace ativo e DELETE revoga — listar e revogar ficam ao nível do utilizador para que uma conta sem workspace possa na mesma limpar. Cada utilizador guarda no máximo vinte tokens de dispositivo; registar mais um remove o mais antigo.

Cada notificação de workspace na app também é enviada por push em best-effort: o servidor envia para a push API da Expo em blocos de cem, regista os tickets ok e remove os tokens DeviceNotRegistered de imediato. O EXPO_ACCESS_TOKEN opcional, só de servidor, adiciona um cabeçalho Bearer a essas chamadas e nunca é registado. Uma schedule de plataforma reconcilia os recibos a cada trinta minutos e varre os tickets velhos — precisa do mesmo driver de tick do scheduler que as outras schedules de plataforma.

# Optional server-only token for authenticated Expo push sends:
# apps/web/.env.local
EXPO_ACCESS_TOKEN=

Os toques em notificações abrem rotas da app

Os remetentes anexam um caminho web como data.href. A app valida-o — só caminhos absolutos com barra, comprimento limitado, sem traversal — e mapeia caminhos conhecidos para rotas nativas, por exemplo /billing para /settings/billing e /dashboard para /home. Um toque que chega sem sessão iniciada fica em buffer e é descarregado depois de o início de sessão concluir.

Verificação e resolução de problemas

Testa num development build: concede e nega a permissão, alterna o push em Configurações → Notificações — o ecrã reporta este dispositivo como enabled, disabled ou denied — e toca numa notificação a frio e a quente. Se desligar mostrar um erro, o unregister do lado do servidor falhou e o dispositivo fica registado até conseguir.

Perguntas frequentes

14 perguntas

O que é o supastack?

O supastack é uma base modular para construir produtos SaaS com IA. Reúne a infraestrutura comum para que possas concentrar-te nas funcionalidades próprias do teu produto.

Suporta web e mobile?

Sim. O supastack inclui apps Next.js e Expo como pontos de partida para experiências web e mobile.

Que autenticação está incluída?

O Better Auth cobre email/palavra-passe, OTP e login social. Os workspaces pessoais são aprovisionados com a conta para que os registos fiquem delimitados desde o primeiro dia.

Como é suportada a IA?

O supastack inclui IA multi-fornecedor configurável, registo de utilização, orçamentos e suporte encriptado de chaves próprias (BYOK).

Como são geridas as subscrições?

Para produtos construídos sobre o kit, a faturação Stripe, as subscrições e as permissões formam a base do acesso pago. Os segredos de fornecedor ficam no servidor.

Onde vive o código próprio do meu produto?

As funcionalidades próprias do produto ficam num codebase separado, enquanto o produto configura e integra os módulos base do supastack.

Como funciona o preço do supastack?

O kit é uma compra única com atualizações vitalícias: Stack único por 249 $ — à escolha entre os repositórios Next.js (web), Expo (iOS e Android) ou Tauri (macOS e Windows) —, Stack duplo por 398 $ com dois repositórios à escolha, ou Pacote completo por 399 $ com os três repositórios e o monorepo completo, mais 75 $ por lugar de programador adicional. Sem subscrição do kit. O checkout neste site entrega a tua chave de licença por email, com acesso ao repo por convite GitHub.

Como é que os workspaces delimitam os meus dados?

Os registos do utilizador são delimitados por workspaceId. Identidade, permissões, utilização de IA, eventos de faturação e entradas de auditoria ficam dentro do limite do workspace pessoal.

Como funcionam os jobs em segundo plano?

O Trigger.dev é o runtime de jobs explícito. O contrato JobRunner só promete enqueue, status e cancel — a semântica de workflow permanece específica e explícita do Trigger.dev.

Como difere o email da divulgação?

O email transacional cobre fluxos de produto como avisos de conclusão de tarefas. A divulgação fria e as campanhas pertencem ao próprio produto, fora do módulo de email deste kit.

Como funcionam as compras no aplicativo móvel?

O aplicativo móvel inclui compras nativas e restauração via RevenueCat, com acesso verificado pelo servidor. Configure as contas das lojas e conclua os testes em dispositivos antes de publicar. A cobrança web permanece separada.

Onde residem as chaves dos fornecedores de IA?

As credenciais BYOK são encriptadas e ficam no servidor. As chaves são higienizadas nos logs; a utilização e os orçamentos ficam visíveis ao nível do workspace.

Quais métodos de pagamento o checkout aceita?

O checkout hospedado na Stripe aceita cartões e também pode oferecer Alipay e WeChat Pay quando essas carteiras estiverem ativadas na conta Stripe — útil para compradores na China. As autorizações de carteira são confirmadas de forma assíncrona, então a página da licença é atualizada assim que o pagamento é liquidado.

Posso solicitar um reembolso?

Depois de obter acesso ao repositório, o supastack é seu para sempre, portanto não pode ser reembolsado. Mas fique tranquilo: você recebe o código-fonte completo com atualizações vitalícias para criar e lançar produtos ilimitados para você ou seus clientes. Você apenas não pode revender o código nem redistribuir o repositório como starter kit ou modelo.

PT
Tema