6
respostas

Posso ter 2 classes msgService?

A dúvida é a seguinte: Meu app trabalha recebendo os push que chamamos de transacionais, que sao gerados pela api da empresa. Onde por exemplo um usuario manda msg para outro e ai eu recebo a notificação.

A outra é via firebase, onde nós enviamos pushes para aumentar atividade do usuario.

Quanto tento customizar as notificações que chegam, só consegui customizar as notificações que chegam da nossa api, as notificações do firebase não. Eu devo criar uma outra classe pra tratar as notificações do firebase?

6 respostas

Rafael, tudo bem ?

Cara tu chegou num dos problemas mais comuns do firebase, não poder ter mais de uma classe que recebe o push.

Podemos ter apenas uma, e dentro dessa classe, tu vai precisar tratar cada evento de uma maneira diferente :(

Geralmente o pessoal envia um meta dado para poder fazer isso, essa distinção de cada mensagem e exibir textos, imagens e também carregar telas da maneira correta.

Entendi. Com relação a ter variáveis dentro da mensagem, é possivel?

Por exemplo pegar o nome do usuario logado no app e mostrar na mensagem

Ex: Olá %username!

Você consegue fazer isso sim, de diversas formas, uma delas é tendo cada string de mensagem no app e ter que alterar nativamente.

Agora se tudo vier do backend, vai ser mais chato, porque ai a galera envia com diversos parametros pra tu montar no nativo também, fazer a substituição é bem treta nesses casos, tanto que tu vê que o pessoal opta por não colocar isso e mostra o push generico.

Mas uma mensagem generica vindo o FCM, eu preciso usar entao uma string pra conseguir usar variáveis?

Generica tipo:

"Olá, você ganhou 10 reais de desconto agora" // ja viria assim do backend

Não é nada especifico pro cliente Rafael, sacou ?

Saca só:

"Olá Rafael, tu acabou de ganhar 10 reais de desconto pra gastar com algo que tu curte"

Mas tipo, você teria que ter essa String na sua pasta res

Dá uma olhada nesse caso aqui da documentação, clica aqui pra ver o método

Tipo, você poderia ter uma string tipo:

<string name="ganhouDesconto">Olá %1$s, tu acabou de ganhar 10 reais de desconto pra gastar com algo que tu curte</string>

E para fazer a troca no código seria algo assim:

val nomeDoUsuario = //pega de algum lugar mistico o nome 
val texto = getString(R.string.ganhouDesconto, nomeDoUsuario)

// usa esse texto pra colocar na notificação.

Certo, e ai usuaria essa string na montagem da mensagem recebida pelo FCM. No builder, certo?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software