Espero que todos vocês estejam cientes dessa classe, usada para obter o token de notificação sempre que o token de notificação do firebase foi atualizado, obtemos o token atualizado dessa classe, Do seguinte método.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
Para usar isso como desejo implementar o FCM, estendi o MyClass de FirebaseInstanceIdService
Mas, Mostrando que o FirebaseInstanceIdService está obsoleto
Alguém sabe disso ?, Qual método ou classe devo usar em vez disso para obter um token atualizado, pois isso foi preterido.
Estou a usar : implementation 'com.google.firebase:firebase-messaging:17.1.0'
Eu verifiquei o documento para o mesmo, não há nada mencionado sobre isso. : DOCUMENTO DE CONFIGURAÇÃO DO FCM
ATUALIZAR
Este problema foi corrigido.
Como o Google reprovou FirebaseInstanceService
,
Fiz a pergunta para encontrar o caminho e eu sei que podemos obter o token do FirebaseMessagingService ,
Como antes, quando perguntei que os documentos de pergunta não eram atualizados, mas agora os documentos do Google foram atualizados, para obter mais informações, consulte este documento do google: FirebaseMessagingService
ANTIGO De: FirebaseInstanceService (descontinuado)
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
NOVO De: FirebaseMessagingService
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d("NEW_TOKEN",s);
}
Obrigado.
fonte
super.onNewToken(s);
? (Não vejo isso sendo chamado em firebase.google.com/docs/cloud-messaging/android/client .) #Respostas:
firebaser aqui
Verifique a documentação de referência para
FirebaseInstanceIdService
:Curiosamente, o JavaDoc para
FirebaseMessagingService
ainda não menciona oonNewToken
método. Parece que nem toda a documentação atualizada foi publicada ainda. Arquivei um problema interno para publicar as atualizações dos documentos de referência e também para atualizar os exemplos no guia.Enquanto isso, as chamadas antigas / obsoletas e as novas devem funcionar. Se você estiver com problemas, publique o código e eu darei uma olhada.
fonte
Sim
FirebaseInstanceIdService
está obsoletoNão é necessário usar o
FirebaseInstanceIdService
serviço para obter o token FCM Você pode remover oFirebaseInstanceIdService
serviço com segurançaAgora precisamos
@Override onNewToken
começarToken
emFirebaseMessagingService
CÓDIGO DE AMOSTRA
EDITAR
como obter token em sua atividade
Agora precisamos usar
getInstanceId ()
para gerar tokengetInstanceId ()
Retorna oID
token gerado automaticamente para esteFirebase
projeto.Isso gera um ID da instância, se ainda não existir, que inicia o envio periódico de informações ao back-end do Firebase.
Devoluções
InstanceIdResult
qual mantém oID
etoken
.CÓDIGO DE AMOSTRA
EDIT 2
Aqui está o código de trabalho para o kotlin
fonte
E isto:
suponha que seja uma solução obsoleta:
EDITAR
FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
pode gerar exceção se a tarefa ainda não estiver concluída, portanto, o método descrito por Nilesh Rathod (com.addOnSuccessListener
) é a maneira correta de fazer isso.Kotlin:
fonte
O Kotlin permite um código ainda mais simples do que o mostrado em outras respostas.
Para obter o novo token sempre que for atualizado:
Para obter o token de qualquer lugar no tempo de execução:
fonte
FirebaseinstanceIdService
está obsoleto. Então, tem que usar "FirebaseMessagingService"Mar a imagem por favor:
fonte
No KOTLIN: - Se você deseja salvar o token no DB ou preferências compartilhadas, substitua onNewToken no FirebaseMessagingService
Obter token em tempo de execução, use
fonte
override fun onNewToken(token: String)
(sem o ponto de interrogação).Classe de implementação do FCM:
E chame sua inicialização em Activity ou APP:
AndroidManifest.xml:
** Se você adicionou "INSTANCE_ID_EVENT", não se esqueça de desativá-lo.
fonte
Você tem que usar em
FirebaseMessagingService()
vez deFirebaseInstanceIdService
fonte