Comment puis-je envoyer une notification de messagerie Cloud Firebase sans utiliser la Console Firebase? [fermé]

je commence avec 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 ma Firebase User Console 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.

159
demandé sur Alexander Farber 2016-05-22 11:11:50

11 réponses

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

envoyer un message peut être aussi simple que d'utiliser curl pour appeler un terminal 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}"
168
répondu Frank van Puffelen 2017-02-05 22:42:03

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 dispositif jeton d'enregistrement

YOUR_KEY_HERE est votre Serveur de Clé API (ou Serveur Hérité de la Clé API)

37
répondu Hamzah Malik 2017-07-20 19:04:18

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 c'est dans votre application, vous pouvez ajouter le code ci-dessous dans votre activité d'être appelé:

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

Également vérifier la réponse sur Firebase onMessageReceived pas appelé quand application en arrière-plan

34
répondu Ankit Adlakha 2017-07-20 16:01:41

exemples utilisant curl

envoyer des messages à des dispositifs spécifiques

pour envoyer des messages à des appareils spécifiques, définissez le token d'enregistrement pour l'instance app 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 à des 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 aux groupes d'appareils

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

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 utilisant L'API de Service

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

En-têtes

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

Demande De La Méthode : POST

Du Corps De La Requête

Messages à des dispositifs spécifiques

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

Messages aux rubriques

{
  "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!"
  }
}
28
répondu J.R 2017-11-15 09:34:40

comme L'a mentionné Frank, vous pouvez utiliser L'API HTTP Firebase Cloud Messaging (FCM) pour déclencher la notification push à partir de votre propre back-end. Mais vous ne pourrez pas

  1. envoyer des notifications à un identificateur D'utilisateur Firebase (UID) et
  2. envoyer des notifications aux segments d'utilisateurs (ciblant les propriétés et les événements comme vous pouvez sur la console de l'utilisateur).

ce qui signifie: vous devrez stocker les identificateurs D'enregistrement FCM/GCM (push tokens) vous-même ou utilisez FCM topics pour abonner les utilisateurs. Gardez également à l'esprit que FCM n'est pas une API pour les Notifications Firebase , c'est une API de niveau inférieur sans planification ou d'analyse à taux ouvert. Les Notifications Firebase sont construites en haut sur FCM.

22
répondu Antoine Guénard 2016-05-26 20:42:13

d'Abord, vous devez obtenir un jeton d'android et vous pouvez appeler ce code php et vous pouvez même envoyer des données pour d'autres actions dans votre application.

 <?php

// Call .php?Action=M&t=title&m=message&r=token
$action=$_GET["Action"];


switch ($action) {
    Case "M":
         $r=$_GET["r"];
        $t=$_GET["t"];
        $m=$_GET["m"];

        $j=json_decode(notify($r, $t, $m));

        $succ=0;
        $fail=0;

        $succ=$j->{'success'};
        $fail=$j->{'failure'};

        print "Success: " . $succ . "<br>";
        print "Fail   : " . $fail . "<br>";

        break;


default:
        print json_encode ("Error: Function not defined ->" . $action);
}

function notify ($r, $t, $m)
    {
    // API access key from Google API's Console
        if (!defined('API_ACCESS_KEY')) define( 'API_ACCESS_KEY', 'Insert here' );
        $tokenarray = array($r);
        // prep the bundle
        $msg = array
        (
            'title'     => $t,
            'message'     => $m,
           'MyKey1'       => 'MyData1',
            'MyKey2'       => 'MyData2', 

        );
        $fields = array
        (
            'registration_ids'     => $tokenarray,
            'data'            => $msg
        );

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

        $ch = curl_init();
        curl_setopt( $ch,CURLOPT_URL, 'fcm.googleapis.com/fcm/send' );
        curl_setopt( $ch,CURLOPT_POST, true );
        curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
        curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
        curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
        curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
        $result = curl_exec($ch );
        curl_close( $ch );
        return $result;
    }


?>
4
répondu Sandi Horvat 2016-08-08 10:40:41

vous pouvez utiliser par exemple un script PHP pour Google Cloud Messaging (GCM). Firebase, et sa console, est juste au-dessus de GCM.

j'ai trouvé celui-ci sur github: https://gist.github.com/prime31/5675017

Indice: ce script PHP donne un notification android .

donc: lire cette réponse de Koot si vous voulez recevoir et montrer la notification sur Android.

3
répondu P-Zenker 2017-05-23 12:03:08

si vous voulez envoyer des notifications push à partir d'android, consultez mon billet de blog

envoyer des notifications Push à partir d'un téléphone android à un autre sans serveur.

envoyer une notification push n'est rien d'autre qu'une demande postale à https://fcm.googleapis.com/fcm/send

extrait de code à l'aide de volley:

    JSONObject json = new JSONObject();
 try {
 JSONObject userData=new JSONObject();
 userData.put("title","your title");
 userData.put("body","your body");

json.put("data",userData);
json.put("to", receiverFirebaseToken);
 }
 catch (JSONException e) {
 e.printStackTrace();
 }

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("https://fcm.googleapis.com/fcm/send", json, new Response.Listener<JSONObject>() {
 @Override
 public void onResponse(JSONObject response) {

Log.i("onResponse", "" + response.toString());
 }
 }, new Response.ErrorListener() {
 @Override
 public void onErrorResponse(VolleyError error) {

}
 }) {
 @Override
 public Map<String, String> getHeaders() throws AuthFailureError {

Map<String, String> params = new HashMap<String, String>();
 params.put("Authorizationey=" + SERVER_API_KEY);
 params.put("Content-Typepplication/json");
 return params;
 }
 };
 MySingleton.getInstance(context).addToRequestQueue(jsonObjectRequest);

je vous suggère à tous de vérifier mon sur le blog pour plus de détails.

0
répondu Redman 2017-08-27 10:47:21

une Notification ou un message de données peut être envoyé à firebase base cloud messaging server à l'aide de L'endpoint de L'API HTTP V1 de FCM. https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send .

vous devez générer et télécharger la clé privée du compte service en utilisant la console Firebase et générer la clé d'accès en utilisant la bibliothèque client api de google. Utilisez n'importe quelle bibliothèque http pour poster un message au point d'arrivée ci-dessus, le code ci-dessous montre le message de publication en utilisant OkHTTP. Vous pouvez trouver le code complet côté serveur et côté client à Firebase messagerie cloud et l'envoi de messages à plusieurs clients en utilisant l'exemple de sujet fcm

si un message client spécifique doit être envoyé, vous devez obtenir la clé d'enregistrement firebase du client, voir envoyer des messages spécifiques au client ou au périphérique au serveur FCM exemple

String SCOPE = "https://www.googleapis.com/auth/firebase.messaging";
String FCM_ENDPOINT
     = "https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send";

GoogleCredential googleCredential = GoogleCredential
    .fromStream(new FileInputStream("firebase-private-key.json"))
    .createScoped(Arrays.asList(SCOPE));
googleCredential.refreshToken();
String token = googleCredential.getAccessToken();



final MediaType mediaType = MediaType.parse("application/json");

OkHttpClient httpClient = new OkHttpClient();

Request request = new Request.Builder()
    .url(FCM_ENDPOINT)
    .addHeader("Content-Type", "application/json; UTF-8")
    .addHeader("Authorization", "Bearer " + token)
    .post(RequestBody.create(mediaType, jsonMessage))
    .build();


Response response = httpClient.newCall(request).execute();
if (response.isSuccessful()) {
    log.info("Message sent to FCM server");
}
0
répondu Arnav Rao 2017-12-16 05:15:46

en utilisant la Console Firebase vous pouvez envoyer un message à tous les utilisateurs basés sur le paquet d'application.Mais avec L'API CURL ou PHP ce n'est pas possible.

grâce à L'API, vous pouvez envoyer une notification à un identifiant de périphérique spécifique ou à des utilisateurs abonnés à des utilisateurs thématiques sélectionnés ou abonnés.

Get a view on following link. It will help you.
https://firebase.google.com/docs/cloud-messaging/send-message
0
répondu Prateek Bhardwaj 2017-12-26 16:05:06

ou vous pouvez utiliser les fonctions cloud de Firebase, ce qui est pour moi le moyen le plus simple de mettre en œuvre vos notifications push. firebase/fonctions-échantillons

0
répondu Laurent Maquet 2018-01-19 13:36:17