Skip to content

Enviar notificaciones push (FCM) con TNetHTTPClient

En un articulo anterior, ensañábamos a obtener el token de Firebase en Android, ahora llega la hora de comprender como se envían notificaciones push a través de Firebase Cloud Messaging (FCM) en Delphi con el componente TNetHTTPClient.

En primer lugar, crearemos un proyecto VCL, y en el Formulario colocamos un TEdit, un TButton, y un TMemo, debería quedar algo parecido a la siguiente imagen:
FCM

Ahora colocamos el componente TNetHTTPCliente que se encuentra en la sección Net de nuestra paleta de componentes.

Paso siguiente, en el evento OnClick del TButton, colocamos el siguiente código:

procedure TForm1.Button1Click(Sender: TObject);
var
  Msg: string;
  s1, s2: TMemoryStream;
  hd: TArray <TNameValuePair>;
  st: String;
  b: TBytes;
  devicetoken: string;

begin
  deviceToken := Trim(Edit1.Text);

  Msg := 'Mi primer notificación Push.';

  s1 := TMemoryStream.Create;
  s2 := TMemoryStream.Create;

  try
    NetHTTPClient1.ContentType := 'application/json';

    st := '{' +
        '"to": "'+deviceToken+'",' +
        '"notification":{"priority":"hight",' +
        '"title":"Título de la Notificación",'+
        '"body":"'+Msg+'",'+
        '"dry_run":"false"}'+
      '}';

    setlength(hd, 1);

    b := TEncoding.UTF8.GetBytes(st);

    s1.Write(b, length(b));
    s1.Position := 0;

    hd[0].Name:='Authorization';
    hd[0].Value:='key=Ingrese aquí el Server Key de FCM';

    NetHTTPClient1.Post('https://fcm.googleapis.com/fcm/send', s1, s2, hd);

    s2.Position := 0;

    { Mostramos el resultado devuelto por FCM }
    memo1.Lines.LoadFromStream(s2, TEncoding.UTF8);
  finally
    s1.Free;
    s2.Free;
  end;
end;

Las unidades a utilizar son las siguientes:

uses
  Winapi.Windows, 
  Winapi.Messages, 
  System.SysUtils, 
  System.Variants, 
  System.Classes, 
  Vcl.Graphics,
  Vcl.Controls, 
  Vcl.Forms, 
  Vcl.Dialogs, 
  System.Net.URLClient,
  System.Net.HttpClient, 
  System.Net.HttpClientComponent, 
  Vcl.StdCtrls;

Funcionamiento

En el Edit1 deberemos colocar el Token del dispositivo, y en el código, no olvides de agregar el Server Key del proyecto de Firebase.

Al presionar el botón enviar, se enviará la notificación push al dispositivo Android y se mostrará en el Memo el resultado obtenido, algo similar a esto:

{"multicast_id": 47068889804 ********, "success": 1, "failure": 0, "canonical_ids": 0,
"results": [{"message_id": "0: 15763105 ********% 22dfc2a4 ********"}]}