190 votes

Comment puis-je envoyer une notification Firebase Cloud Messaging sans utiliser la console Firebase ?

Je commence par le nouveau service Google pour les notifications, Firebase Cloud Messaging .

Grâce à ce code https://github.com/firebase/quickstart-Android/tree/master/messaging J'ai pu envoyer des notifications depuis mon Console utilisateur Firebase sur mon appareil Android.

Existe-t-il une API ou un moyen d'envoyer une notification sans utiliser la console Firebase ? Je veux dire, par exemple, une API PHP ou quelque chose comme ça, pour créer des notifications depuis mon propre serveur directement.

198voto

Frank van Puffelen Points 16029

Firebase Cloud Messaging dispose d'une API côté serveur que vous pouvez appeler pour envoyer des messages. Voir https://firebase.google.com/docs/cloud-messaging/server .

L'envoi d'un message peut être aussi simple que l'utilisation de la fonction curl pour appeler un point final HTTP. Voir https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol

curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" \
    --Header "Content-Type: application/json" \
    https://fcm.googleapis.com/fcm/send \
    -d "{\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":{\"body\":\"Yellow\"},\"priority\":10}"

49voto

Hamzah Malik Points 1302

Cela fonctionne en utilisant CURL

function sendGCM($message, $id) {

    $url = 'https://fcm.googleapis.com/fcm/send';

    $fields = array (
            'registration_ids' => array (
                    $id
            ),
            'data' => array (
                    "message" => $message
            )
    );
    $fields = json_encode ( $fields );

    $headers = array (
            'Authorization: key=' . "YOUR_KEY_HERE",
            'Content-Type: application/json'
    );

    $ch = curl_init ();
    curl_setopt ( $ch, CURLOPT_URL, $url );
    curl_setopt ( $ch, CURLOPT_POST, true );
    curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );

    $result = curl_exec ( $ch );
    echo $result;
    curl_close ( $ch );
}

?>

$message est votre message à envoyer à l'appareil

$id est le jeton d'enregistrement des dispositifs

YOUR_KEY_HERE est la clé API de votre serveur (ou la clé API de votre ancien serveur).

43voto

Ankit Adlakha Points 101

Utiliser une api de service.

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

Type de méthode : POST

En-têtes :

Content-Type: application/json
Authorization: key=your api key

Corps/charge utile :

{ "notification": {
    "title": "Your Title",
    "text": "Your Text",
     "click_action": "OPEN_ACTIVITY_1" // should match to your intent filter
  },
    "data": {
    "keyname": "any value " //you can get this data as extras in your activity and this data is optional
    },
  "to" : "to_id(firebase refreshedToken)"
} 

Et avec cela dans votre application, vous pouvez ajouter le code ci-dessous dans votre activité à appeler :

<intent-filter>
    <action android:name="OPEN_ACTIVITY_1" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Vérifiez également la réponse sur Firebase onMessageReceived n'est pas appelé lorsque l'application est en arrière-plan

37voto

JITHINRAJ Points 6

Exemples d'utilisation de curl

Envoyer des messages à des appareils spécifiques

Pour envoyer des messages à des dispositifs spécifiques, définissez le jeton d'enregistrement pour l'instance d'application spécifique.

curl -H "Content-type: application/json" -H "Authorization:key=<Your Api key>"  -X POST -d '{ "data": { "score": "5x1","time": "15:10"},"to" : "<registration token>"}' https://fcm.googleapis.com/fcm/send

Envoyer des messages aux sujets

ici le sujet est : /topics/foo-bar

curl -H "Content-type: application/json" -H "Authorization:key=<Your Api key>"  -X POST -d '{ "to": "/topics/foo-bar","data": { "message": "This is a Firebase Cloud Messaging Topic Message!"}}' https://fcm.googleapis.com/fcm/send

Envoyer des messages à des groupes de dispositifs

L'envoi de messages à un groupe de périphériques est très similaire à l'envoi de messages à un périphérique individuel. Définissez le paramètre to sur la clé de notification unique pour le groupe de dispositifs.

curl -H "Content-type: application/json" -H "Authorization:key=<Your Api key>"  -X POST -d '{"to": "<aUniqueKey>","data": {"hello": "This is a Firebase Cloud Messaging Device Group Message!"}}' https://fcm.googleapis.com/fcm/send

Exemples d'utilisation de l'API de service

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

En-têtes

Content-type: application/json
Authorization:key=<Your Api key>

Méthode de demande : POST

Corps de la demande

Messages vers des appareils spécifiques

{
  "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to": "<registration token>"
}

Messages aux sujets

{
  "to": "/topics/foo-bar",
  "data": {
    "message": "This is a Firebase Cloud Messaging Topic Message!"
  }
}

Messages aux groupes de dispositifs

{
  "to": "<aUniqueKey>",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!"
  }
}

23voto

Antoine Guénard Points 382

Comme l'a mentionné Frank, vous pouvez utiliser l'API HTTP de Firebase Cloud Messaging (FCM) pour déclencher une notification push à partir de votre propre back-end. Mais vous ne serez pas en mesure de

  1. envoyer des notifications à un identifiant d'utilisateur (UID) Firebase et
  2. envoyer des notifications aux segments d'utilisateurs (en ciblant les propriétés et les événements comme vous pouvez le faire dans la console utilisateur).

En d'autres termes, vous devrez stocker vous-même les identifiants d'enregistrement FCM/GCM (jetons d'accès) ou utiliser les sujets FCM pour abonner les utilisateurs. Gardez également à l'esprit que FCM n'est pas une API pour Firebase Notifications Il s'agit d'une API de niveau inférieur, sans programmation ni analyse du taux d'ouverture. Firebase Notifications est construit au dessus de FCM.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X