Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Mensagem recebida de aluno cadastrado, não está sendo exibida

Preciso de um auxílio, já que ao adicionar um novo aluno, eu não recebo o Log de "mensagem recebida" na classe AgendaMessagingService.

public class AgendaMessagingService extends FirebaseMessagingService {

@Override public void onMessageReceived(RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); Map mensagem = remoteMessage.getData(); Log.i("Mensagem recebida", String.valueOf(mensagem)); }

Estou recebendo uma mensagem de Warning: The app gradle file must have a dependency on com.google.firebase:firebase-core for Firebase services to work as intended.

Segue abaixo o gradle:

// restante do código

dependencies {

implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support:cardview-v7:26.1.0' implementation 'com.android.support:support-v4:26.1.0' implementation 'com.android.support:multidex:1.0.3' implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-jackson:2.3.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' implementation 'com.google.firebase:firebase-messaging:17.0.0' implementation 'com.google.firebase:firebase-analytics:16.0.0' implementation 'com.google.android.gms:play-services-maps:15.0.1' implementation 'com.google.android.gms:play-services-location:15.0.1' implementation 'com.androidhuman.rxfirebase2:firebase-core:16.0.0.0'

}

apply plugin: 'com.google.gms.google-services'

O único "firebase-core", que encontrei na busca de dependências, pelo Android Studio, foi o "com.androidhuman.rxfirebase2:firebase-core:16.0.0.0".

Além disso, preciso saber como eu posso verificar se, quando ao inserir um novo aluno, o firebase está de fato recebendo do servidor local e enviando a notificação para o aplicativo?

Fico no aguardo, desde já agradeço qualquer ajuda!

5 respostas
solução!

Oi Rodrigo, blz?

O código está certo, um detalhe que você pode verificar é se o AgendaMessagingService está declarado como um Service no Android Manifest. Em relação a dependência essa dependência é o suficiente com.google.firebase:firebase-analytics:16.0.0. Na própria página de configuração do Firebase mostra que apenas ela é necessária.

Esse erro que você apresentou eu ainda não tinha visto, porém, é mencionado nessa página de instalação do Firebase no projeto. Nela ele mostra todo o pré requisito para instalar o Firebase da maneira correta, inclusive ele recomenda o uso do próprio Android Studio ao invés de fazer manualmente.

Um dos possíveis problemas podem estar relacionados com a versão que está usando do Firebase ou do Google Services. Se caso investigar o suficiente a ponto de não conseguir resolver, me manda o projeto via GitHub que dou uma olhada e testo.

Sobre a parte de verificar se ele está enviando a requisição para o Firebase, você pode verificar se ele apresenta um log no terminal similar a este cada vez que você faz uma operação com um aluno:

2018-06-19 13:23:00.940  INFO 18756 --- [   MyExecutor-1] br.com.caelum.alura.log.LoggerExecucao   : br.com.caelum.alura.service.DispositivoService - enviaNotificacao args: [Aluno [id=651dbaad-a2c7-4249-a7da-84e88b49ec53, nome=teste, endereco=, telefone=, site=, nota=10.0, caminhoFoto=null, desativado=0, modificacao=2018-06-19T13:23:00.802]]

Veja que ele chama esse método enviaNotificacao. Não foi criado um log para analisar possíveis erros durante o envio, apenas quando o retorno é 401... Porém, é possível modificar o código do servidor que é disponibilizado na última atividade do curso. Sendo mais preciso, nesta classe que foi feita a implementação da requisição que manda para o Firebase.

[]s

Olá, Alex! beleza! Obrigado pela ajuda, mas realmente ainda estou com problemas.

Segue o GitHub do projeto https://github.com/ProdigalSorc/AndroidWebService

Conferi o Manifest, está declarado o serviço como: <service android:name=".firebase.AgendaMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service>

Encontrei o log no terminal do servidor, ao inserir o aluno novo:

2018-06-19 14:28:06.035 INFO 9892 --- [ MyExecutor-1] br.com.caelum.alura.log.LoggerExecucao : br.com.caelum.alura.service.DispositivoService - enviaNotificacao args: [Aluno [id=7f5b71bb-6a53-4eb3-979e-54a796dbc561, nome=novo cadastro, endereco=enderecoToken, telefone=456, site=www.com, nota=10.0, caminhoFoto=null, desativado=0, modificacao=2018-06-19T14:28:05.765]]

Estou tentando instalar o Maven no meu eclipse e validar a resposta do firebase.

Agradeço se puder conferir o meu código no Github.

Rodrigo, testei o seu código agora mesmo e tudo está funcionando como esperado. Você colocou a chave do Firebase no servidor?

[]s

Oi Alex, boa tarde!

Configurei sim, a chave do Firebase no servidor local foi inserida com sucesso. Mesmo assim, não está se comunicando.

Fiz como me orientou, para verificar o retorno do servidor local. Baixei o fonte no github, executei o comando mvn package, na raiz. O build foi realizado com sucesso.

Ao abrir o fonte no Spring Tool Suite, tive de adicionar os jars, para corrigir os erros de compilação e executar o Application.java. Porém, está gerando o seguinte erro, na execução:

Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : org.springframework.boot.context.logging.ClasspathLoggingApplicationListener

O erro está em uma interface de um jar inserido. Estou utilizando a última versão do jar spring-boot-2.0.3, para compilar o código .

A questão é, eu preciso baixar todos os jars, para executar o fonte, através do Spring Tool Suite? Caso positivo, preciso baixar uma outra versão? Qual?

Obrigado!

Oi Rodrigo,

Considerando que ainda tá dando problema, o único detalhe que vejo que pode resolver é baixando novamente o arquivo google-services.json, um outro aluno teve problema e foi resolvido, dá uma olhada na discussão.

Sobre as dependências do projeto web, é recomendável que utilize as mesmas versões para fazer o build do projeto, pois, de repente, teve algum tipo de update em algumas das libs que pode causar em problemas de compilação.

Em outras palavras, se tiver algum outro problema, vai ser necessário realizar uma pesquisa para os erros que forem surgindo.

E sim, todos os jars que estão declarados como dependência, precisam ser baixados, pois cada um deles foi utilizado no projeto.

[]s

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