Pular para conteúdo

Como testar o Push FCM (integrador + app Flutter)

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-07-06

Pré-requisitos

  • Mesmo projeto Firebase no integrador e no app Flutter (o firebase-admin-sdk.json do integrador e o google-services.json / Firebase do app apontam para o mesmo projeto).
  • App Flutter já com FCM configurado e inscrição nos 4 tópicos (bl_liberado_sulplata, nota_venda_emitida_sulplata, bl_liberado_onpetrotrading, nota_venda_emitida_onpetrotrading) e permissão de notificação concedida no celular.

1. Integrador no PC local

  1. Ativar o push
    Em application.yml ou via variável de ambiente:

    push:
      enabled: true
      empresa: "sulplata"   # ou "onpetrotrading" na instância OnPetro (ex.: porta 3002)
      credentials-path: "C:/caminho/para/firebase-admin-sdk.json"   # fora do repo
      notification-image-url: "https://navarro-app.web.app/logo-sulplata.png"
    
    Ou defina na linha de comando ao subir:
    ./gradlew run --args="--push.enabled=true"
    
    Ou crie application-local.yml (e use MICRONAUT_ENVIRONMENTS=local) com push.enabled: true.

  2. Credenciais
    Aponte push.credentials-path (ou a env PUSH_CREDENTIALS_PATH) para o caminho absoluto do JSON da conta de serviço no seu PC. Não coloque o arquivo em src/main/resources/: a credencial é segredo, não entra no repo nem no jar (decisão 0030). Com push.enabled=true e a credencial ilegível, o app não sobe — a mensagem de erro nomeia o path.

  3. Subir o integrador

    ./gradlew run
    
    Ou rode pela IDE. O servidor sobe (por exemplo em http://localhost:8080).

  4. Teste rápido pelo navegador (opcional)
    Acesse http://localhost:8080/debug e clique em:

  5. Enviar push BL Liberado
  6. Enviar push Nota de Venda Emitida
    Isso envia uma mensagem de teste para cada tópico. Se o app estiver inscrito e em primeiro plano/background, a notificação deve aparecer no celular.

2. App Flutter (release) no celular

  1. Build release e instale no aparelho (USB ou build de distribuição).
  2. Login / uso normal para garantir que o app obtém o FCM token e se inscreve nos tópicos bl_liberado e nota_venda_emitida.
  3. Permissão de notificação concedida para o app no Android/iOS.
  4. Celular pode estar em qualquer rede (4G/5G ou outro Wi‑Fi); não precisa estar na mesma rede do PC. O integrador envia para os servidores do FCM e eles entregam no dispositivo.

3. Formas de testar

A) Pela tela de teste do integrador (recomendado primeiro)

  • No PC: http://localhost:8080/debug
  • Clique em um dos dois botões.
  • No celular: deve chegar a notificação (título “BL Liberado” ou “Nota de Venda Emitida”) se o app estiver inscrito nesse tópico.

B) Por um PUT XADM real (PBLDI ou PNOTAI)

  • Envie um PUT para o endpoint XADM do integrador (PUT /api/v1/xadm com body JSON de origem PBLDI ou PNOTAI).
  • Se o processamento der certo, o integrador dispara o push para o tópico correspondente (BL Liberado ou Nota de Venda Emitida).
  • O app no celular deve receber a notificação da mesma forma.

4. Se não chegar notificação no celular

  • Logs do integrador: verifique se aparece algo como Push FCM enviado tópico=... messageId=.... Se aparecer, o envio até o FCM está ok.
  • App: confirme no código Flutter que, após o login/token, está sendo chamado subscribeToTopic("bl_liberado") e subscribeToTopic("nota_venda_emitida").
  • Firebase Console: em “Cloud Messaging” (e testes de mensagem) dá para enviar uma mensagem de teste por tópico e ver se o dispositivo recebe; isso ajuda a isolar se o problema é integrador → FCM ou FCM → app.
  • Desabilitar otimização de bateria para o app no Android pode evitar atraso ou bloqueio de notificações em segundo plano.

Resumo

Onde O que fazer
PC (integrador) push.enabled: true, credenciais no classpath ou em credentials-path, ./gradlew run
Navegador Abrir http://localhost:8080/debug e usar os dois botões de push
Celular (app release) App com FCM + inscrição nos 4 tópicos (sulplata + onpetrotrading) + permissão de notificação
Teste Primeiro pela tela /debug; depois, se quiser, por PUT XADM com PBLDI/PNOTAI

Sim: você pode rodar o integrador no PC local com push.enabled=true e o app em release no celular; desde que o app esteja inscrito nos tópicos e use o mesmo projeto Firebase, o teste funciona.