0

Ich migrierte von GCM zu FCM wie angewiesen here.FCM-Callback-Handler werden nach der Migration von gcm zu fcm nicht ausgelöst

Immer wenn ich eine Nachricht sende, wird die Methode onMessageSent nicht aufgerufen.

I-Code verwenden folgende Quelle-Nachrichten senden:

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()); 

Warum nicht funktioniert?

+0

Wohin senden Sie von und an? –

Antwort

2

Wenn Sie auf der offiziellen Website Beispiel aussehen here, dann werden Sie diesen Kommentar sehen:

@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. 

zu Beginn des onMessageReceived. Mein Verständnis davon ist, dass Sie eine Datenkomponente in Ihrer Nachricht haben müssen, damit der Rückruf ausgelöst wird. Ich basiere meinen Code darauf und die Callbacks werden ausgelöst.

+0

aber was ist mit gesendeten Nachrichten? Warum wird der Callback-Handler onMessageSent (String msgId) nicht ausgelöst, wenn ich eine Nachricht wie im obigen Codebeispiel sende? –

+1

Es tut mir leid, ich habe deine Frage falsch gelesen, ich habe onMessageReceived für onMessagSent gelesen. Nun, ich denke nicht, dass meine Antwort in irgendeiner Weise helfen wird. – NickT

+0

Kein Problem. Trotzdem, vielen Dank für Ihren Kommentar. –

0

Ja, löste mein Problem. Ich lege google-services.json in den falschen Ordner. Das nächste Mal sollte ich "get started guide" für die Implementierung des Clients genauer folgen.