Skip to content
This repository has been archived by the owner on Oct 10, 2023. It is now read-only.

Módulo Firebase

Gabriel edited this page May 17, 2021 · 4 revisions

🡐 Volver a la descripción general de los módulos

Documentación:


Permite implementar en forma simple Firebase y todas sus librerías. Al momento, incluye métodos para implementar notificaciones Push en navegadores web de escritorio, escritorios móviles y aplicaciones Cordova (Android, iOS) mediante FCM (Firebase Cloud Messaging). Otras librerías de Firebase pueden importarse, pero no hay aún métodos útiles para ellas.

Con respecto a las notificaciones Push para aplicaciones web, el módulo se encargará de generar el Service Worker automáticamente y de3 gestionar las credenciales establecidas, todas ellas, en el archivo config.php.

En Cordova, hoy implementa el plug-in cordova-plugin-firebasex. Si bien el proósito de este módulo es abstraer el código de la aplicación de la implementación, se requiere, al menos, instalar el plug-in manualmente (cordova plugin add cordova-plugin-firebasex). Puede encontrarse más información sobre la instalación, configuración y personalización en el repositorio del plug-in.

Nota: Por el momento, las notificaciones Push Cordova solo han sido probadas en Android.

Próximamente se ampliarán los métodos útiles para gestión de notificaciones Push, y en el futuro pueden sumarse utilidades para abstraer o automatizar la implementación de otras librerías Firebase.

Nombre: firebase

Configuración

Se deben agregar los siguientes parámetros en la configuración de la aplicación o global:

//Estos valores provienen de la configuración que nos muestra Firebase al configurar la aplicación web
'firebaseApiKey'=>'...',
'firebaseAuthDomain'=>'...',
'firebaseProjectId'=>'...',
'firebaseStorageBucket'=>'...',
'firebaseMessagingSenderId'=>'...',
'firebaseAppId'=>'...',
//Clave pública del certificado de notificaciones Push web (VAPID)
'firebaseVapid'=>'...',
//Clave del servidor de Cloud Messaging del proyecto
'firebaseClaveServidor'=>'...'

Ver más información para obtener estas credenciales.

Cordova

En Android, debe ubicarse el archivo google-services.json en platforms/android/app.

En iOS, debe incluirse el archivo GoogleService-Info.plist en platforms/ios/[Aplicacion].

Ver más sobre cómo obtener estos archivos de configuración.

Métodos cliente

cargar([opciones]) Carga Firebase y, según las opciones, obtiene la configuración e incluye librerías. Invocar este método solo se requiere en aplicaciones web (no en Cordova).

notificaciones(opciones) Inicia las notificaciones Push web, solicitando autorización si corresponde.

notificacionesCordova(opciones) Inicia las notificaciones Push Cordova, solicitando autorización si corresponde.

Ver documentación completa.

Métodos servidor (Públicos)

obtenerConfiguracion() Devuelve la configuración pública.

Ver documentación completa.

Métodos servidor (Privados)

enviarNotificacion($para,$notificacion[,$datos]) Envía una notificación Push al tema o dispositivo (token) $para.

Ver documentación completa.

Ejemplo de autorización (cliente) y envío (servidor) de notificaciones Push

Cliente (aplicación web)

Puede realizarse ante un evento (ej. click en un botón de "Activar notificaciones") o al cargar la aplicación (función listo() del controlador).

var firebase=ui.obtenerInstanciaModulo("firebase")
    .cargar({
        //No es necesario especificar la configuración, se obtendrá desde el config.php automáticamente
        //Si es solo para notificaciones Push, no es necesario especificar las librerías, 'messaging' se incluirá por defecto

        retorno:function() {
            //Firebase y messaging están listos, activar notificaciones Push
            firebase.notificaciones({
                retorno:function(token) {
                    //Notificaciones activadas, podemos enviar el token al servidor para asociarlo al usuario actual, ejemplo:
                    //t.servidor.registrarTokenFirebase(token);
                }
            });
        }
     });

Cliente (Cordova)

ui.obtenerInstanciaModulo("firebase")
    .notificacionesCordova({
        retorno:function(token) {
            //Notificaciones activadas, podemos enviar el token al servidor para asociarlo al usuario actual, ejemplo:
            //t.servidor.registrarTokenFirebase(token);
        },
        notificacion:function(datos) {
            //Notificación recibida en segundo plano (el usuario tocó la notificación)
            //Aquí se recibe el objeto especificado en `$datos` al enviar la notificación (más otras propiedades)
        }
    });

Servidor

\foxtrot::fabricarModulo('firebase');
    ->enviarNotificacion($token,[
        'titulo'=>'¡Hola!',
        'cuerpo'=>'Esta es una notificación Push',
        'icono'=>\foxtrot::url().'recursos/img/icono.png', //opcional
        'accion'=>\foxtrot::url() //opcional, URL a abrir al clickear la notificación, debe omitirse si el destinatario es Cordova
    ],
    //Solo si el destinatario es Cordova, al tocar la notificación, se recibirá el siguiente objeto
    [
        'datoA'=>123,
        'datoB'=>456
    ]);

Nota: Si la aplicación estará enviando notificaciones a diferentes plataformas (web, Android, iOS), debería almacenarse junto con cada token desde qué plataforma fue recibido.

Clone this wiki locally