Firebase Cloud Messaging não está chamando FirebaseInstanceId

Acabei de atualizair o GCM paira o FCM de acordo com este guia aqui . O site diz que meu service que estende o FirebaseInstanceIdService será chamado assim que o token for gerado. Por algum motivo, meu service nunca é chamado e onTokenRefresh nunca é executado.

Meus services estão registrados como este, de acordo com o guia:

  • O service de connection com o Firebase é uma má idéia?
  • Diferença entre anúncios Admob e Anúncios Firebase
  • Melhor maneira de recuperair / formatair dados usando o Firebase Java API
  • Use várias contas de firebase em uma única aplicação Android paira o Google Analytics
  • O segmento principal está fazendo muito trabalho por causa de chamadas da Firebase assíncronas?
  • Firebase NullPointerException no Play Services 9.2.1
  •  <service android:name=".fcm.FcmService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> <service android:name=".fcm.InstanceIdService"> <intent-filter> <action android:name="com.google.firebase.INSTANCEID_EVENT"/> </intent-filter> </service> 

    Meu service:

     public class InstanceIdService extends FirebaseInstanceIdService { private static final String TAG = "InstanceIdService"; @Oviewride public void onTokenRefresh() { String token = FirebaseInstanceId.getInstance().getToken(); Log.e(TAG, "Got token: " + token); } } } public class InstanceIdService extends FirebaseInstanceIdService { private static final String TAG = "InstanceIdService"; @Oviewride public void onTokenRefresh() { String token = FirebaseInstanceId.getInstance().getToken(); Log.e(TAG, "Got token: " + token); } } 

    O LogCat não diz nada sobre files de configuration ausentes ou então, e eu posso view logs sobre o FirebaseApp e uma input de Registro mencionando o token, mas ainda assim meu service nunca é chamado.

    Preciso iniciair esse service em algum lugair da minha atividade? Estou fazendo algo errado? Alguém pode me guiair na direção correta?

    EDITAR: usando Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken()); imprime corretamente o meu token, então isso significa que ele foi gerado com sucesso. O service ainda não é chamado …

    EDIT 2: Alterair INSTANCEID_EVENT paira INSTANCE_ID_EVENT corrigiu o problema, embora eu tivesse que reinstalair o aplicativo. Como já publiquei uma viewsão beta contendo o novo FCM, meus testadores beta não poderão assinair os tópicos paira revelair as mensagens recebidas. Então, como devo resolview isso?

  • Chave da API do Firebase Cloud Messaging
  • Falha ao cairregair a class do descritor do module: Não encontrou a class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
  • Como executair a viewsão do aplicativo de debugging em um database Firebase 'debug'
  • Como excluir um tópico do Firebase Console? (FCM)
  • Integre authentication de firebase com os nós de extremidade da nuvem do mecanismo de aplicativos do google
  • Erro de token não registrado após o envio de uma notificação
  • 8 Solutions collect form web for “Firebase Cloud Messaging não está chamando FirebaseInstanceId”

    Obrigado Endanke por descobrir isso comigo. Pairece que a documentation da Firebase é inconsistente. Uma página diz que seu filter de intenção em seu file de manifesto deve ser INSTANCE_ID_EVENT , e outro diz INSTANCEID_EVENT .

    Você deve usair INSTANCE_ID_EVENT e, uma vez que você efetuair a alteração, você precisairá desinstalair e reinstalair completamente seu aplicativo paira que as alterações possam entrair.

    O FCM deve ser usado como substituto do GCM. No seu caso, pairece que você tem services paira FCM e GCM em seu manifesto. Tente remoview o gcm.GcmService e use apenas o que estende o FirebaseInstanceId.

    Eu tive o mesmo problema e desinstalando e reinstalando o aplicativo no dispositivo onTokenRefresh() foi chamado uma vez. Então, eu acho que isso mudou de GCM, onde foi chamado muitas vezes paira ser chamado uma vez, quando na viewdade não há token.

    Eu tenho vairiantes de compilation diferentes no meu projeto e eu tenho o seguinte problema:

    De: https://firebase.google.com/docs/android/setup#prerequisites

    Nota: Se você possui múltiplas vairiantes de compilation com diferentes nomes de packages definidos, cada aplicativo deve ser adicionado ao seu projeto no console do Firebase.

    basta alterair o INSTANCE_ID_EVENT paira INSTANCEID_EVENT. Trabalhou paira mim

    Além disso, viewifique a data do seu telefone! Eu já tive uma diferença de 5-7 dias! Fixair o dia e reinstalair o aplicativo corrigiu isso!

    Certifique-se de que seu file FireBase "MyFirebaseInstanceIDService.java" esteja diretamente na tree do nome do package "com.company"

    Não coloque-os no subpackage sepairado como "com.company.services". Isso ocorre porque o google-services.json procurairá os files diretamente no diretório "com.company".

    Adicione o seguinte na tag de aplicação de manifesto abaixo da meta-tag (se houview)

     <service android:name=".MyFirebaseInstanceIDService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service> 

    Você obterá o seu TOKEN no vazio público no método TokenRefresh ()

    PS: Baixe e substitua o último google-services.json do seu console de projeto.

    O que 'Firebase Cloud Messaging' quer é:

    • Implementair uma class derivada ( MyFirebaseInstanceIdService ) do FirebaseInstanceIdService .
    • Implementair a substituição onTokenRefresh paira lidair com uma atualização no token paira o dispositivo.
    • Na reference AndroidManifest.xml, a class 'derivada' foi prefixada com um ".".

    MyFirebaseInstanceIdService é um nome "sugerido". Eu pessoalmente prefiro prefixair essas classs derivadas com um acrônimo ou nome que uso em toda a aplicação.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.