Saltar al contenido

Cómo suscribirse a temas con un navegador web usando Firebase Cloud Messaging

Este equipo de especialistas despúes de muchos días de trabajo y de recopilar de datos, han obtenido los datos necesarios, nuestro deseo es que todo este artículo sea de utilidad en tu plan.

Solución:

No hay una API directa para suscribir clientes a temas en el SDK de Firebase Cloud Messaging para JavaScript. En su lugar, puede suscribir un token a un tema a través de la API REST. Llamar a esta API requiere que especifique el servidor FCM key, lo que significa que solo debe hacer esto en un entorno confiable, como su máquina de desarrollo, un servidor que controle o Cloud Functions. Esto es necesario, ya que tener el servidor FCM key permite enviar mensajes en nombre de su aplicación a todos los usuarios de su aplicación.

Resulta que en mis pruebas estaba usando un proyecto anterior, donde la API del cliente keys fueron permite suscribirse a temas. Esta capacidad se ha eliminado de los proyectos más nuevos por razones de seguridad.

En Node.js podría, por ejemplo, llamar a la API REST para crear un mapeo de relaciones para una instancia de aplicación como esta:

function subscribeTokenToTopic(token, topic) 
  fetch('https://iid.googleapis.com/iid/v1/'+token+'/rel/topics/'+topic, 
    method: 'POST',
    headers: new Headers(
      'Authorization': 'key='+fcm_server_key
    )
  ).then(response => 
    if (response.status < 200 ).catch(error => 
    console.error(error);
  )

Donde fcm_server_key es el servidor FCM keytomado de la consola Firebase de su proyecto.

La solución de Frank sigue siendo válida. Sin embargo, debe tener un servidor que se suscriba por usted.

function subscribeTokenToTopic(token, topic) 
  fetch('https://myserver.com/'+token+'/rel/topics/'+topic, 
    method: 'POST',
    headers: new Headers(
      'Authorization': 'Bearer '+ oauthToken
    )
  ).then(response => 
    if (response.status < 200 ).catch(error => 
    console.error(error);
  )

entonces su servidor tiene una llamada de descanso algo como esto:

(primavera java)

@RequestMapping(value = "/token/rel/topics/topic", method = RequestMethod.POST)
public ResponseEntity subscribeTokenToTopic(@PathVariable("token") String token, @PathVariable("topic") String topic)  throws ServletException 
  URL url = new URL("https://iid.googleapis.com/iid/v1/"+token+"/rel/topics/"+topic);
  // make https post call here.. 
  ...

Esperemos que eso tenga sentido.

Cualquiera que busque una solución php, busque a continuación, ya que va a utilizar Api key del servidor, así que no hagas esto en el lado del cliente

código js base de fuego del lado del cliente

// Initialize Firebase
var config = 
    apiKey: "xxxx",
    authDomain: "yyy",
    databaseURL: "zzzz",
    projectId: "aaaa",
    storageBucket: "bbbbb",
    messagingSenderId: "ccc"
  ;
firebase.initializeApp(config);

const messaging = firebase.messaging();

messaging.requestPermission()
.then(function() 
  console.log('Notification permission granted.');
  return messaging.getToken();
)
.then(function(token) 

//send this token to server
  console.log(token); // Display user token
)
.catch(function(err)  // Happen if user deney permission

  console.log('Unable to get permission to notify.', err);
);

messaging.onMessage(function(payload)
    console.log('onMessage',payload);
)

código del lado del servidor por php curl

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

$ch = curl_init();
// browser token you can get it via ajax from client side
$token = 'drVdtCt82qY:APA91bEZb99GvoS9knv-cp5ThVBiYGBjUwl_Ewj2tKaRFwp7HoG347utaNKbgLWmkxpGadABtIg-DspPUh5sC_bc2JrBKVw10Ejg72nYxZgD2wBU-adYJo0yi03lX22s5K2UEp6gwnMv';
curl_setopt($ch, CURLOPT_URL, "https://iid.googleapis.com/iid/v1/$token/rel/topics/testIshakTopic");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, array());
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo "The Result : " . $result;

Espero que ayude a los desarrolladores de PHP.

Al final de todo puedes encontrar las ilustraciones de otros creadores, tú además tienes el poder insertar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *