Je résume les étapes ici, en espérant qu'elles soient utiles.
ÉTAPE 1
Suivant Guide d'utilisation du FCM . Assurez-vous que tout fonctionne correctement en poussant un message de Console Firebase .
ÉTAPE 2
Changez votre classe FirebaseMessagingService personnalisée comme suit :
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
startActivity(new Intent(this, SplashActivity.class));
}
}
Maintenant, en utilisant à nouveau les messages push de la console Firebase, vous trouverez que onMessageReceived
se déclenche uniquement lorsque votre application est au premier plan. Comme la console Firebase est capable d'envoyer Notification message
seulement. Afin d'envoyer Data message
nous avons besoin de l'étape 3.
ÉTAPE 3
Instalar Client REST de Google Advanced
Entrez les paramètres ci-dessous :
url: https://fcm.googleapis.com/fcm/send
method: POST
Raw header:
Content-Type: application/json
Authorization:key=YOUR_SERVER_KEY
Raw payload:
{
"to" : "YOUR_DEVICE_FCM_TOKEN",
"data" : {
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
}
YOUR_SERVER_KEY est disponible dans la console Firebase > volet Paramètres > onglet Messagerie en ligne.
YOUR_DEVICE_FCM_TOKEN est FirebaseInstanceId.getInstance().getToken()
en onTokenRefresh()
NOTE
Le démarrage de l'interface utilisateur sans interaction avec l'utilisateur est une mauvaise UX, vous pourriez avoir besoin de remplacer l'activité de démarrage avec le service de démarrage ou quelque chose en arrière-plan. Je n'utilise l'activité qu'à des fins de test, elle sera donc plus visuelle que le service. Merci @2ndgab pour la présentation de l'outil client Google Advanced REST.
1 votes
Si vous relisez la documentation, vous verrez que onMessageReceived n'est appelé en arrière-plan que lorsque la balise de notification n'est pas présente dans votre charge utile.
0 votes
Mais j'ai essayé d'ajouter une intention de lancement et startActivity n'a même pas été appelé.
0 votes
Si vous regardez ici, vous verrez où est appelé onMessageReceived et où est écrit foreground. firebase.google.com/docs/cloud-messaging/
0 votes
Consultez ma réponse ici, vous aurez peut-être une idée : stackoverflow.com/a/37843845/1507602
0 votes
Vérifiez ceci stackoverflow.com/a/44800598/7329597 J'espère que vous obtiendrez votre réponse et qu'elle sera disponible.
0 votes
Je cherche également la solution.