Erreur dans remoteMessage.getNotification().getBody()

J'ai mis en place Firebase Messagerie en Nuage dans mon application et lors de l'utilisation du Firebase de la console de mon application sur Android et iOS reçoit mes notifications. Mais parce que je voulais notification push quotidien, j'ai créé une tâche cron pour faire que, de mon côté serveur. J'ai remarqué que chaque fois que je déclencheur de mon cron mon application se bloque

Dans mon iOS client il ne reçoit aucune notification.

Dans mon client android, il affiche une erreur:

java.lang.String com.google.firebase.messaging.RemoteMessage$Notification.getBody()' on a null object reference

Où il est dans mon FirebaseMessagingService voici mon code

public class MyFirebaseMessagingService  extends FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    Log.d(TAG, "From: " + remoteMessage.getFrom());
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());

    sendNotification(remoteMessage.getNotification().getBody());
} 

Et de mon côté serveur

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,
    ),
);


$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;
}

Je me demande pourquoi suis-je en avoir un NPE et comment puis-je le résoudre?

Où est l'objet de notification dans votre $message?
Je n'ai pas notification objet, j'ai pensé data est suffisant, car notification est facultatif. Dois-je ajouter dans mon $message? Que dois-je mettre dans notification objet?
oui objet de notification par défaut est facultatif. Mais sur votre onMessageReceived(), vous appelez remoteMessage.getNotification (), mais vous n'avez pas de notification objet à analyser.
il fonctionne maintenant, merci! 🙂

OriginalL'auteur natsumiyu | 2016-06-02