Voici mon manifeste
<service android:name=".fcm.PshycoFirebaseMessagingServices">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".fcm.PshycoFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
Quand l'application est en arrière-plan et qu'une notification arrive, la notification par défaut arrive et n'exécute pas mon code de onMessageReceived
.
Voici mon onMessageReceived
code. Ce code est invoqué si mon application est en avant-plan, mais pas lorsque l'application est en arrière-plan. Comment exécuter ce code lorsque l'application est en arrière-plan également ?
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// TODO(developer): Handle FCM messages here.
// If the application is in the foreground handle both data and notification messages here.
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
data = remoteMessage.getData();
String title = remoteMessage.getNotification().getTitle();
String message = remoteMessage.getNotification().getBody();
String imageUrl = (String) data.get("image");
String action = (String) data.get("action");
Log.i(TAG, "onMessageReceived: title : "+title);
Log.i(TAG, "onMessageReceived: message : "+message);
Log.i(TAG, "onMessageReceived: imageUrl : "+imageUrl);
Log.i(TAG, "onMessageReceived: action : "+action);
if (imageUrl == null) {
sendNotification(title,message,action);
} else {
new BigPictureNotification(this,title,message,imageUrl,action);
}
}
// [END receive_message]
3 votes
C'est écrit dans le exemple de surcharge de onMessageReceived() la deuxième ligne de commentaires dit
Not getting messages here? See why this may be: goo.gl/39bRNJ
. La solution, comme les réponses ci-dessous, peut être trouvée dans la documentation en Messages contenant à la fois des notifications et des données6 votes
En bref, pour réveiller votre application tuée, vous devez toujours envoyer une notification avec un objet de données pour appeler le gestionnaire de classe de votre service de notification FirebaseMessagingService.onMessageReceived() dans votre application. Essayez également de l'envoyer non pas à partir de la console Firebase, mais à partir d'un autre endroit (par exemple, un service de post-test en ligne).
3 votes
Cette solution a fonctionné pour moi stackoverflow.com/a/44150822/6632278 J'espère que cela vous aidera. Bonne chance
3 votes
Quel ".fcm." PshycoFirebaseMessagingServices est dans votre manifeste ? J'obtiens une erreur de classe non trouvée et je n'ai trouvé nulle part ce qu'est la première partie du paramètre.