Envoyer la FCM des messages à partir du serveur de côté pour appareil android
Avec la nouvelle mise à jour, la FCM va maintenant être utilisé.
J'ai essayé de l'exemple d'application à partir de git, et il fonctionne tout va bien. Je peux envoyer des notifications à partir de la console.
Mais je veux envoyer la notification à partir du serveur après un certain événement est déclenché. J'ai suivi la même démarche comme dans la GCM, mais cela ne fonctionne pas.
05-20 20:40:58.941 30132-30919/com.google.firebase.quickstart.fcm E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
Process: com.google.firebase.quickstart.fcm, PID: 30132
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.messaging.RemoteMessage$Notification.getBody()' on a null object reference
at com.google.firebase.quickstart.fcm.MyFirebaseMessagingService.onMessageReceived(MyFirebaseMessagingService.java:53)
at com.google.firebase.messaging.FirebaseMessagingService.zzo(Unknown Source)
at com.google.firebase.messaging.FirebaseMessagingService.zzn(Unknown Source)
at com.google.firebase.messaging.FirebaseMessagingService.zzm(Unknown Source)
at com.google.firebase.iid.zzb$2.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
05-20 20:40:59.118 30132-30279/com.google.firebase.quickstart.fcm E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb9e83390
Suis ce Script PHP pour envoyer la notification.
Si j'essaie d'exécuter le script, j'obtiens le résultat suivant.
{"multicast_id":4679427854122301046,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1463757518309261%31bd1c96f9fd7ecd"}]}
NOTE : je suis allé à travers leurs docs et modifié le code est essentiel d'avoir seulement de titre et le corps. Même alors, il ne fonctionne pas.
Pourriez-vous ajouter le message que vous envoyez? Il semble que votre message ne contient pas de corps, ce qui pourrait être la raison pour laquelle le pointeur null.
Ismael est droit. Par la présente, ma réponse: http://stackoverflow.com/questions/37358462/firebase-onmessagereceived-not-called-when-app-in-background/37471326#37471326
Ismael est droit. Par la présente, ma réponse: http://stackoverflow.com/questions/37358462/firebase-onmessagereceived-not-called-when-app-in-background/37471326#37471326
OriginalL'auteur driftking9987 | 2016-05-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ce code complet
Passer le message et de l'id de jeton en tant que paramètre à la
sendFCM($mess,$id)
appel.OriginalL'auteur php
J'ai essayé et travaillé:
C'est le résultat:
Comment puis-je conserver ce résultat dans une variable ?
OriginalL'auteur Alejandro Luna
Afin de recevoir la notification à l'aide de remoteMessage.getNotification().getBody(), vous devez utiliser l'ensemble prédéfini de clé option pour la notification.
Dans ce cas, "notification" est le mot clé.
La réponse JSON doit être formaté comme ceci.
Vous pouvez également vous envoyer une notification et des données de charge utile dans la même réponse JSON
voir ceci: https://firebase.google.com/docs/cloud-messaging/concept-options#messages-with-both-notification-and-data-payloads
OriginalL'auteur Andrea Scalabrini
De la php gist vous envoyez uniquement pour les données de message. Votre récepteur s'attend à un message de notification ainsi, lorsque vous obtenez la notification à partir de la télécommande du message qu'il va être nul, résultant en un NPE lorsque vous appelez getBody.
Envoyer un message de notification et cela devrait fonctionner comme prévu. Voir le message de notification des exigences ici:
https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support
remoteMessage.getData().get("body");
reçois le texte. Une idée de comment créer une notification? La doc indique les champs obligatoires, mais comment puis-je créer unnotification
là?Les données de l'objet et de l'objet de notification sont frères et sœurs, de sorte que vous pouvez utiliser les champs de notification de la documentation pour créer un objet de notification au même niveau que vous aviez l'objet de données.
Je vais essayer ça.
OriginalL'auteur Arthur Thompson
J'ai été confrontée au même problème et après avoir passé du temps à essayer de trouver la cause , mon observation était -
Depuis la "notification" représentation JSON de la RemoteMessage.Notification .
Si vous définissez les champs prédéfinis de la Notification de la classe dans la "notification" sur le terrain , sur le côté client, le JSON est analysée avec succès et que vous avez une valeur non nulle pour
RemoteMessage.getNotification()
sur lequel vous pouvez appeler legetBody()
/getTopic()
/getIcon()
.Mais si vous ne définissez pas un champ de la classe de Notification dans la "notification" champ json, l'analyse de classe échoue et vous aurez une valeur null pour
RemoteMessage.getNotification()
L'une des trois suivantes JSONs est valide corps POST pour pousser un
RemoteMessage.Notification
( outre les deux exemples cités par Andrea dans la précédente réponse ) , c'est à dire ces trois ne cause pas au-dessus de la NPEEt aucun des trois suivantes sont valables pour pousser un RemoteMessage.Notification -
N'a pas la "notification" champ
"notification" le champ est vide json
"notification" de terrain a quelques paires clé-valeur , mais aucun des champs définis dans RemoteMessage.Classe de Notification
OriginalL'auteur Keshav
Essayer ce code ci-dessous cela donnera à pousser la notication pour Android à partir de php côté serveur et vous pouvez obtenir le dispositif de jeton à partir de android vous avez besoin de passer dynamiquement pour obtenir push notication pour plus d'appareil android.
OriginalL'auteur Sathish Kumar VG