J'ai mis en œuvre la messagerie en cloud Firebase dans mon application et tout en utilisant la console Firebase, mon application dans Android et iOS reçoit mes notifications. Mais parce que je voulais pousser la notification quotidienne, j'ai créé un travail cron pour le faire de mon côté serveur. Je remarque que chaque fois que je déclenche mon cron mon application se bloque
dans mon client iOS, il ne reçoit aucune notification. P>
dans mon client Android, il affiche une erreur: p>
où il se trouve dans mon et dans mon côté serveur p> Je me demande pourquoi suis-je Avoir une NPE et comment puis-je le résoudre? p> p> java.lang.string com.google.firebase.messaging.remotemessage $ notification.getbody () 'sur une référence objet nulle code> p>
FirebasemessagingService < / code> voici mon code p>
4 Réponses :
Essayez d'ajouter un objet de notification sur votre message $. Le corps de votre demande postale doit être quelque chose comme: votre Utilisez des notifications lorsque vous souhaitez que FCM gère l'affichage d'une notification sur le nom de votre application client. Utilisez des messages de données lorsque votre application gère l'affichage ou traiter les messages de votre application client Android, ou si vous souhaitez envoyer des messages aux périphériques iOS lorsqu'il existe une connexion FCM directe. P>
blockQuote> vérifier le Documentation pour des options de messagerie avancées pour votre référence. p> p> remotemessage.getnotification () code> retourne
null code> parce que le corps de votre message demande ne contient pas d'objet de notification. P>
Tu es incroyable
if (remoteMessage.getNotification() != null) { sendNotification(remoteMessage.getNotification().getBody()); }
Les gens ont donné un vote négatif à ce sujet, mais c'est une réponse réelle, tout ce que vous voulez vérifier si GetNotification () renvoie NULL, sinon, vous pouvez demander au corps.
function sendNotificationFCM($apiKey, $registrationIDs, $messageText,$id) { $headers = array( 'Content-Type:application/json', 'Authorization:key=' . $apiKey ); $message = array( 'registration_ids' => $registrationIDs, 'data' => array( "message" => $messageText, "id" => $id, ), 'notification' => array( "body" => "body of notification", "title" => "title for notification", ) ); $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => 'https://fcm.googleapis.com/fcm/send', CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => json_encode($message) )); $response = curl_exec($ch); curl_close($ch); return $response; }
J'ai fait face au même problème et j'ai découvert la solution à travers peu d'expériences.
J'utilise le backend de nœud où mon exemple de poussée (prise de Google Firebase) ressemble à: p>
const message = { data: {score: '850', time: '2:45'}, tokens: nTokenArray }
Où est l'objet de notification dans votre message $?
@sinense je n'ai pas
notification code> objet, je pensais
data code> est suffisant, car
notification code> est facultatif. Dois-je l'ajouter dans mon
$ message code>? Que dois-je mettre dans
notification code> objet?
Oui L'objet de notification est par défaut en option. Mais sur votre surmessagereceived (), vous appelez RemoteMessage.getNotification () mais vous n'avez pas d'objet de notification à analyser.
@sinense ça marche maintenant merci! :)