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
- enviar notificaciones a un identificador de usuario (UID) de Firebase y
- 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