Firebase FCM notifications click_action charge utile
Je suis en train d'ouvrir une activité en particulier lorsque l'utilisateur clique sur la notification lorsque l'application est en arrière-plan. De la documentation, je n'ai obtenu que click_action doit être ajoutée dans la charge utile et un filtre d'intention dans l'Application pour le manipuler. Mais, comment faire pour ajouter click_action dans le Firebase des Notifications par Firebase Console? Je suis ouvert à tout autre Travail Autour de trop. Merci à l'Avance.
Vous devez vous connecter pour publier un commentaire.
Si votre application est en arrière-plan, Firebase ne déclenchera pas onMessageReceived(). Pourquoi.....? Je n'ai aucune idée. Dans cette situation, je ne vois pas de point dans la mise en œuvre FirebaseMessagingService.
Selon les docs, si vous voulez processus d'arrière-plan d'arrivée des messages, vous devez envoyer "click_action' avec votre message.
Mais il n'est pas possible si vous envoyez un message à partir de Firebase console, uniquement via Firebase API.
Cela signifie que vous aurez à construire votre propre "console" afin de permettre la commercialisation de gens à l'utiliser. Donc, ce qui rend Firebase console aussi tout à fait inutile!
Il est vraiment bon, prometteur, l'idée derrière ce nouvel outil, mais mal exécuté.
Je suppose que nous allons avoir à attendre pour les nouvelles versions et améliorations/corrections!
Aussi loin que je peux dire, à ce stade, il n'est pas possible de définir click_action dans la console.
Pas une stricte réponse à la façon d'obtenir le click_action jeu dans la console, vous pouvez utiliser curl comme une alternative:
C'est un moyen facile de tester click_action de cartographie. Il nécessite un filtre d'intention comme celui spécifié dans le FCM docs:
HTML:
Cela rend également l'utilisation de rubriques pour définir l'audience. Pour que cela fonctionne, vous devez vous abonner à un sujet appelé "news".
Même si cela prend plusieurs heures pour voir un nouveau sujet dans la console, vous pouvez toujours envoyer des messages par le biais de la FCM api.
Aussi, gardez à l'esprit, cela ne fonctionnera que si l'application est en arrière-plan. Si elle est au premier plan, vous aurez besoin de mettre en œuvre une extension de FirebaseMessagingService. Dans le onMessageReceived méthode, vous devrez manuellement accédez à votre click_action cible:
Comme je l'ai dit, à ce moment je ne peut pas trouver un moyen d'accéder à la notification de la charge utile des propriétés par le biais de la console, mais j'ai pensé que ce travail autour de peut-être utile.
OPEN_ACTIVITY_1
- est-il possible d'avoir un caractère générique. Par exemple, pour tous les messages commençant par "my_firebase_event_" serait admissible, pour mon lanceur d'intention.Vous pouvez gérer toutes vos actions en fonction de votre message dans onMessageReceived() dans votre service de l'extension de FirebaseMessagingService.
Pour ce faire, vous devez envoyer un message contenant exclusivement des données, en utilisant par exemple Advanced client REST dans Chrome.
Ensuite, vous envoyez un message pour https://fcm.googleapis.com/fcm/send
à l'aide de "têtes Bruts":
Et un json message dans le champ "Raw charge".
Attention, si il y a le champ "notification" dans votre json, votre message ne sera jamais reçu lors de l'application en arrière-plan dans onMessageReceived(), même si il y a un champ de données !
Par exemple, en faisant cela, le message de travail seulement si l'application en premier plan:
Afin de recevoir votre message dans tous les cas onMessageReceived(), il suffit de retirer la "notification" de champ à partir de votre json !
Exemple:
et dans votre FirebaseMessagingService :
Profitez-en !
Cela relève de contournement de la catégorie, contenant des informations supplémentaires trop:
Depuis les notifications sont traitées différemment en fonction de l'état de l'application (premier plan/arrière-plan/pas lancé) j'ai vu la meilleure façon de mettre en œuvre une classe d'assistance où l'activité sélectionnée est lancée basés sur les données personnalisées envoyées dans le message de notification.
De cette façon, vous n'avez pas besoin de la click_action ou filtre d'intention spécifique. Aussi, vous écrivez le code, juste une fois, on peut raisonnablement facilement commencer toute activité.
De sorte que le minimum de données personnalisé ressemblerait à quelque chose comme ceci:
Et le code pour la manipulation:
Qui est le code pour les deux derniers cas, startSelectedActivity serait appelé aussi de onMessageReceived (premier cas).
La limitation est que toutes les données dans le but extras sont des chaînes de caractères, de sorte que vous pouvez avoir besoin pour gérer que d'une certaine façon dans l'activité elle-même. Aussi, c'est simplifiée, vous n'avez probablement pas ce qu'il faut changer l'Activité/Afficher sur une application qui est sur le premier plan, sans avertissement, votre nom d'utilisateur.
when the app is not launched use the helper class for handling the intent in main activity's onCreate (call getIntent for the intent).
". Je veux dire, si l'application n'est pas active, comment pouvez-vous y répondre?Bien, c'est clair à partir de firebase docs que votre
onMessageReceived
ne fonctionnera pas lorsque l'application est en arrière-plan.Lorsque votre application est en arrière-plan et cliquez sur votre notification de votre lanceur par défaut sera lancé.
Pour le lancement de votre activité souhaitée, vous devez spécifier
click_action
dans votre notification de la charge utile.Et dans votre
android.manifest
fichierAjoutez le code suivant où vous avez enregistré votre activité
Si votre application est en arrière-plan, Firebase ne déclenchera pas onMessageReceived().
onMessageReceived() est appelée lorsque l'application est en arrière plan .
Lorsque l'application est en arrière-plan,onMessageReceived() la méthode sera appelée que si le corps de https://fcm.googleapis.com/fcm/send ne contiennent que des données de charge utile.Ici ,je viens de créer une méthode pour construire la coutume de notification avec l'intention d'avoir ur nécessaire à votre activité . et a appelé cette méthode dans onMessageRecevied() .
En Facteur:
uri: https://fcm.googleapis.com/fcm/send
en-tête:Autorisation:key=clé ur
corps --->>
dans votre application.
lorsque la charge utile de données vient du mobile,puis onMessageReceived() méthode sera appelée.. à l'intérieur de cette méthode ,j'ai juste fait un custom de notification. cela fonctionne même si ur application est en arrière-plan ou au premier plan.
Mise à jour:
Donc, juste pour le vérifier, il n'est actuellement pas possible de régler la
click_action
paramètre via le Firebase Console.Alors j'ai essayé de le faire dans le Firebase Notifications Console avec pas de chance. Depuis je n'arrive pas à trouver n'importe où à lieu la
click_action
valeur dans la console, ce que j'ai principalement fait de tester ceci est d'ajouter des paires clé/valeur dans la Notification (l'Avance des Options > Données Personnalisées):ensuite essayé d'appeler RemoteMessage.getNotification().getClickAction() dans
onMessageReceived()
pour voir si c'était de la récupération de la valeur correcte, mais il renvoie toujoursnull
. Donc ensuite, j'ai essayé d'appeler RemoteMessage.getData().get(< specified_key >) et a été en mesure de récupérer la valeur ai-je ajouté.NOTE: je ne suis pas entièrement sûr si c'est normal d'être utilisé comme une solution de contournement, ou si c'est contre les bonnes pratiques. Je vous recommande d'utiliser votre propre serveur d'application mais votre post est spécifique à la Firebase Console.
La façon dont l'application cliente et la notification se comporte dépend toujours de la façon dont vous le programmer. Avec cela dit, je pense que vous pouvez utiliser le haut comme une solution de contournement, à l'aide de la valeur extraite de la
getData()
, puis d'avoir l'appel de Notification de ceci ou de cela. Espérons que cela aide en quelque sorte. Cheers! 😀onMessageReceived()
pas être appelé quand dans le fond, avez-vous essayé la définition de la priorité de la Notification de haut? N'essayez avec votre propre serveur d'application, laissez-moi savoir si cela fonctionne. Cheers! 🙂click_action
besoin de localiser ànotification
. Exemple :"notification": { "title" : "New follower!", "body": "{name} is following you", "sound": "default", "click_action" : "FollowActivity" }
click_action
paramètre ne peut pas être réglée via le Firebase de la Console. Merci de me le rappeler, je vais mettre à jour ma réponse et indiquez-le dans. Cheers! 🙂Maintenant, il est possible de définir click_action dans Firebase de la Console. Vous allez simplement à des notifications-envoyer un message-option avancée et là, vous aurez deux champs pour la clé et la valeur. Dans le premier champ, vous mettre click_action et dans le deuxième vous mettre un peu de texte qui représente la valeur de cette action. Et vous ajoutez intent-filter dans votre Manifeste, et de lui donner la même valeur que vous avez écrit dans la console.
Et c'est la simulation de réel click_action.
click_action
paramètre via le Firebase de la Console. Leclick_action
paramètre est censé être à l'intérieur de la notification de la charge utile. L'option paires clé-valeur dans les options avancées sont pour la charge utile de données.Je suis à la recherche de ce Firebase est , le développement de google cloud messaging notification push fondamentaux nous pouvons donc utiliser le gcm tutoriel,la fonction et la mise en œuvre de firebase ,
je l'aide de fonction de gcm fonction de notification push pour résoudre ce problème click_action
j'ai utiliser la fonction de gcm **
**
essayez cette url de sauvegarde click_action dans la variable url c'est dans server-worker.js