notification notificaciones google enviar php android api firebase firebase-cloud-messaging

php - google - notificaciones push laravel firebase



¿Cómo puedo enviar una notificación de Firebase Cloud Messaging sin usar Firebase Console? (11)

Ejemplos que usan curl

Enviar mensajes a dispositivos específicos

Para enviar mensajes a dispositivos específicos, configure el token de registro para la instancia de aplicación específica

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

Enviar mensajes a temas

aquí el tema es: / 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

Enviar mensajes a grupos de dispositivos

Enviar mensajes a un grupo de dispositivos es muy similar a enviar mensajes a un dispositivo individual. Establezca el parámetro a en la clave de notificación única para el grupo de dispositivos

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

Ejemplos de uso de API de servicio

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

Encabezados

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

Método de solicitud: POST

Organismo de solicitud

Mensajes a dispositivos específicos

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

Mensajes a temas

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

Mensajes a grupos de dispositivos

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

Estoy comenzando con el nuevo servicio de Google para las notificaciones, Firebase Cloud Messaging .

Gracias a este código https://github.com/firebase/quickstart-android/tree/master/messaging pude enviar notificaciones desde mi Firebase User Console a mi dispositivo Android.

¿Hay alguna API o forma de enviar una notificación sin usar la consola Firebase? Me refiero, por ejemplo, a una API PHP o algo así, para crear notificaciones desde mi propio servidor directamente.


Con Firebase Console puede enviar mensajes a todos los usuarios en función del paquete de la aplicación, pero con CURL o PHP API no es posible.

A través de la API Puede enviar notificaciones a un ID de dispositivo específico o usuarios suscritos a los temas seleccionados o usuarios de temas suscritos.

Get a view on following link. It will help you. https://firebase.google.com/docs/cloud-messaging/send-message


Esto funciona usando 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 es su mensaje para enviar al dispositivo

$id es el token de registro de dispositivos

YOUR_KEY_HERE es la clave de API del servidor (o la clave de API del servidor heredado)


Firebase Cloud Messaging tiene una API del lado del servidor a la que puedes llamar para enviar mensajes. Ver https://firebase.google.com/docs/cloud-messaging/server .

Enviar un mensaje puede ser tan simple como usar curl para llamar a un punto final HTTP. Ver 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}"


O puede usar las funciones en la nube de Firebase, que es para mí la forma más fácil de implementar sus notificaciones push. firebase/functions-samples


Primero debe obtener un token de Android y luego puede llamar a este código php e incluso puede enviar datos para acciones adicionales en su aplicación.

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


Puede usar, por ejemplo, un script PHP para Google Cloud Messaging (GCM). Firebase y su consola están justo encima de GCM.

Encontré este en github: https://gist.github.com/prime31/5675017

Sugerencia: este script PHP genera una notificación de Android .

Por lo tanto: lea esta respuesta de Koot si desea recibir y mostrar la notificación en Android.


Se pueden enviar notificaciones o mensajes de datos al servidor de mensajería en la nube base de Firebase utilizando el punto final API FCM HTTP v1. https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send .

Debe generar y descargar la clave privada de la cuenta de servicio con la consola Firebase y generar la clave de acceso con la biblioteca de cliente de la API de Google. Use cualquier biblioteca http para publicar el mensaje en el punto final anterior, el código siguiente muestra la publicación del mensaje usando OkHTTP. Puede encontrar el código completo del lado del servidor y del lado del cliente en Firebase Cloud Messaging y enviar mensajes a varios clientes utilizando el ejemplo de tema fcm

Si necesita enviar un mensaje específico del cliente, debe obtener la clave de registro de Firebase del cliente, consulte el envío de mensajes específicos del cliente o dispositivo al servidor FCM.

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"); }


Según lo mencionado por Frank, puede usar la API HTTP de Firebase Cloud Messaging (FCM) para activar notificaciones push desde su propio back-end. Pero no podrás

  1. enviar notificaciones a un identificador de usuario (UID) de Firebase y
  2. enviar notificaciones a segmentos de usuarios (propiedades y eventos de segmentación como puede hacerlo en la consola de usuario).

Significado: tendrá que almacenar los identificadores de registro de FCM / GCM (tokens de inserción) usted mismo o usar los temas de FCM para suscribirse a los usuarios. Tenga en cuenta también que FCM no es una API para notificaciones de Firebase , es una API de nivel inferior sin programación o análisis de tasa de apertura. Las notificaciones de Firebase se basan en FCM.


Si desea enviar notificaciones push desde Android, consulte mi publicación de blog

Enviar notificaciones push de 1 teléfono Android a otro sin servidor.

enviar notificaciones push no es más que una solicitud de publicación a fcm.googleapis.com/fcm/send

fragmento de código con 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);

Les sugiero a todos que revisen mi publicación de blog para obtener detalles completos.


Use una API de servicio.

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

Tipo de método: POST

Encabezados:

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

Cuerpo / carga útil:

{ "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)" }

Y con esto en su aplicación, puede agregar el siguiente código en su actividad que se llamará:

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

También verifique la respuesta en Firebase onMessageReceived no llamado cuando la aplicación está en segundo plano