Envío de notificaciones push

publicado por: Anonymous

Estoy realizando una app móvil con la tecnología de NativeScript y tengo un panel backend PHP para el envío de notificaciones push, tengo entendido que desde la app necesito enviar el token hacia una BD (en este caso quiero utilizar Firebase), y luego usar la api de firebase para llevarme los token al panel backend de PHP para poder enviar notificaciones push a través de un formulario a todos los dispositivos.
Tengo los archivos google-services incluidos en los directorios de Android e iOS.

Tengo el siguiente código:

app.js

var applicationModule = require("application");
applicationModule.start({ moduleName: "main-page" });

var pushPlugin = require("nativescript-push-notifications");

var pushSettings = {
        senderID: "XXXXXXXXXXXX", // Required: setting with the sender/project number
        notificationCallbackAndroid: function (stringifiedData, fcmNotification) {
            var notificationBody = fcmNotification && fcmNotification.getBody();
            _this.updateMessage("Message received!n" + notificationBody + "n" + stringifiedData);
        }
    };
pushPlugin.register(pushSettings, function (token) {
    alert(token);
}, function() { });

Dependencias del package.json

"dependencies": {
    "nativescript-push-notifications": "^1.1.4",
    "nativescript-theme-core": "~1.0.4",
    "tns-core-modules": "^3.4.1"
}

Desde mi backend PHP se envía perfectamente la notificación push al dispositivo, pero solo a uno ya que tengo que escribir manualmente el token de este en el código.

El objetivo es guardar en firebase los token generados y luego recorrerlos en el backend PHP, pero no sé como hacerlo porque no entiendo muy bien todo este concepto, ¿alguna ayudita por favor?

solución

No tengo como validar en este momento, pero lo mejor sería que cambies a nativescript-plugin-firebase, pues tiene acceso a los diferentes productos de Firebase en el mismo plugin.

Podrías obtener el token y enviarlo a tu base de datos Realtime Database o a Firestore, entonces en tu backend obtener acceso a la lista de tokens.

Por ejemplo, en tu dispositivo:

const firebase = require("nativescript-plugin-firebase");
firebase.init({
    // Funcion Callback para cuando un mensaje es recibido
    onMessageReceivedCallback: (message) => {
      console.log(`Title: ${message.title}`);
      console.log(`Body: ${message.body}`);
    },
    // Funcion Callback para cuando se obtiene el token
    onPushTokenReceivedCallback: (token) => {
      console.log("Firebase push token: " + token);
      // Enviamos el token a la base de datos
      firebase.push('/tokensDeDispositivos', token)
        .then((result) => console.log("Token guardado"));
    }
});

En tu backend entonces puedes revisar en Firebase Realtime Database /tokensDeDispositivos/, que debería ser un array con los tokens de todos los dispositivos que se han registrado.

Eso puedes hacerlo con firebase-php. Pero ese es otro tema.

Más adelante puedes hacer algo para mantener la lista de tockens actualizada y depurada de los dispositivos que han perdido o cambiado su token. Pero ese es otro tema.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published.