9

Dopo la migrazione a Firebase, ho verificato la notifica di invio utilizzando la console di Firebase funziona, ma ho bisogno di una notifica giornaliera in un momento specifico, quindi invece di usare la console di Firebase uso il mio cron job per inviare notifiche quotidianamente. Ho cambiato https://android.googleapis.com/gcm/send in https://fcm.googleapis.com/fcm/send ma il mio dispositivo non riceve alcuna notifica.Come implementare la messaggistica cloud di Firebase sul lato server?

C'è un modo per risolvere questo? O mi sono perso qualcosa? il mio lavoro cron funziona perfettamente per i miei dispositivi che utilizzano ancora GCM.

Ecco il mio codice

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; 

}

+1

@McAwesomville da quello che ho letto in https: // Firebase. google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol dice che per inviare un messaggio, il server delle applicazioni i accetta una richiesta POST. Ad esempio: "https.fcm.googleapis.com/fcm/send" – natsumiyu

+0

@McAwesomville la sua confusione su cosa usare :(ma ci proverò – natsumiyu

+0

proverò a guardarti intorno e ti faccio sapere se mai trovo qualcosa. :) –

risposta

9

Ho aggiunto l'oggetto notification nel mio json. Ho scoperto che nel mio remoteMessage.getNotification().getBody() restituisce null è per questo che non riceve alcuna notifica inviata dal mio cron.

Modifica

Ecco il mio oggetto JSON

$message = array(
      'registration_ids' => $registrationIDs, 
      'notification' => array(
            "title" => $id, 
            "body" => $messageText, 
            "icon" => "name_of_icon"), 
      'data' => array(
        "message" => $messageText, 
        "id" => $id, 
      ), 
    ); 
+0

Se funziona, puoi condividere l'oggetto JSON che stai inviando? – Blacksad

+0

@Blacksad ho aggiunto il mio oggetto json – natsumiyu

+0

@mori Grazie a ton –

3

Oltre a cambiare l'URL al seguente:

https://fcm.googleapis.com/fcm/send 

È inoltre necessario cambiare il modo di inviare richiesta di dati:

Content-Type:application/json 
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA 

{ 
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", // "to" replaces "registration_ids" of gcm in fcm 
    "data" : { 
    ... 
    }, 
} 

C diamine this complete guide.

+0

è richiesto 'message_id'? – natsumiyu

+0

No se si sta lavorando solo con le richieste 'HTTP', sì se si implementa il tipo di funzionalità di chat usando' XMPP'. – astuter

+0

Sto riscontrando un errore "Campo" in "deve essere una stringa JSON:' – natsumiyu

Problemi correlati