# FireBase FCM

El BackEndBase permite utilizar la API de FireBase (opens new window) para enviar notificaciones a tópicos y subscribir clientes conectados a dichos tópicos.

# Configuración

En el archivo app/config/google/firebase.py se establecen la url para el envío de notificaciones, la url para subscripciones de clientes a tópicos, el token del servidor, y una lista de tópicos por defecto, necesarios para el correcto funcionamiento del módulo.

Nota

No se utiliza ningún cliente nativo, sólo los servicios Rest proporcionados por FireBase, más información por aquí (opens new window).

# app/config/google/firebase.py

MESSAGE_URI = 'https://fcm.googleapis.com/fcm/send'
SUBSCRIBE_URI = 'https://iid.googleapis.com/iid/v1/{0}/rel/topics/{1}?details=true'
TOKEN_SERVER = 'awesome_token'
DEFAULT_TOPICS_NAME = ['awesome_topic_name']

# Funciones disponibles

El módulo de FireBase FCM, implementado en el BackEndBase contiene las funciones send_to_topic, subscribe_to_topic y send_to_receiver

# Enviar notificaciones a un tópico

La función send_to_topic espera dos parametros, message y topic_name

  • message: La información a enviar.
  • topic_name: El nombre del tópico.
def send_to_topic(message=None, topic_name=None):
    ...

Un ejemplo:

from app.ext.firebase.fcm import send_to_topic
...

message = "hola mundo desde firebase module"
topic_name = 'alertas'

resp = send_to_topic(message, topic_name)
print("The response message id:", resp)

# Subscribir clientes

Permite subscribir un cliente desde una app movil ó servicio web a un tópico ó lista de ellos.

La función subscribe_to_topic espera un parametro: client_token.

def subscribe_to_topic(client_token=None):
    ...

Un Ejemplo:

from app.ext.firebase.fcm import subscribe_to_topic
...

client_token = "eVORLjzx9-5:APA91bEhom...-yqx4jbw-TzRABxQj5AOJhf"
subscribe_to_topic(client_token)

El cliente (client_token) será subscrito a la lista de tópicos definida por DEFAULT_TOPICS_NAME

# Enviar notificaciones a un usuario

Así como enviamos notificaciones a un tópico, también podemos enviarla a un usuario en particular.

La función send_to_receiver espera dos parametros: message y registration_id

def send_to_receiver(message=None, registration_id=None):
    ...

Un Ejemplo:

from app.ext.firebase.fcm import send_to_receiver
...

message = "hola mundo desde firebase module"
registration_id = "eVORLjzx9-5:APA91bEhom...-yqx4jbw-TzRABxQj5AOJhf"

resp = send_to_receiver(message, registration_id)

print("The response message id:", resp)

# Más información

Para mas información consulte: