0

J'ai migré de GCM vers FCM comme indiqué here.Le gestionnaire de rappel FCM n'est pas déclenché après la migration de gcm à fcm

Chaque fois que j'envoie un message, la méthode onMessageSent n'est pas appelée.

J'utilise suivant le code source pour envoyer des messages:

Map<String,String> data = new HashMap<String,String>(); 
     data.put(GcmConstants.ACTION, GcmConstants.ACTION_CHAT); 
     data.put(Constants.CHAT_FLAG, Constants.FLAG_NEW_CHAT); 

     ObjectMapper mapper = new ObjectMapper(); 
     String chatJsonInString = mapper.writeValueAsString(Helper.chatToJson(chat)); 

     data.put(Constants.CHAT_JSON, chatJsonInString); 

     String receiverJsonInString = mapper.writeValueAsString(Helper.userToJson(receiver)); 
     data.put(Constants.RECEIVER_JSON, receiverJsonInString); 

     String id = Integer.toString(getNextMsgId(ctxt)); 
     FirebaseMessaging fm = FirebaseMessaging.getInstance(); 
     fm.send(new RemoteMessage.Builder(senderId + "@gcm.googleapis.com").setMessageId(id).setData(data).build()); 

Pourquoi ne fonctionne pas?

+0

D'où envoyez-vous et de? –

Répondre

2

Si vous regardez l'exemple de site officiel here, alors vous verrez ce commentaire:

@Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     // [START_EXCLUDE] 
     // There are two types of messages data messages and notification messages. Data messages are handled 
     // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type 
     // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app 
     // is in the foreground. When the app is in the background an automatically generated notification is displayed. 
     // When the user taps on the notification they are returned to the app. Messages containing both notification 
     // and data payloads are treated as notification messages. The Firebase console always sends notification 
     // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options 
     // [END_EXCLUDE] 

// TODO(developer): Handle FCM messages here. 

au début de onMessageReceived. Ma compréhension de ceci est que vous devez avoir un composant de données dans votre message, pour que le rappel soit déclenché. J'ai basé mon code sur ceci et les rappels sont déclenchés.

+0

mais qu'en est-il des messages envoyés? Pourquoi le gestionnaire de rappel onMessageSent (String msgId) n'est pas déclenché, lorsque j'envoie un message comme dans l'exemple de code ci-dessus? –

+1

Je suis désolé, j'ai mal lu votre question, j'ai lu surMessageReceived pour onMessagSent. Maintenant, je ne pense pas que ma réponse va aider d'une quelconque façon. – NickT

+0

Pas de problème. Néanmoins, merci pour votre commentaire. –

0

Oui, résolu mon problème. J'ai mis google-services.json dans le mauvais dossier. La prochaine fois que je devrais suivre "get started guide" pour implémenter le client plus précis.