Notificaciones Push: Migración de Parse a OneSignal

OneSignalFue toda una sorpresa que Facebook cerrara Parse, que era una de las plataformas de gestión de notificaciones Push más usadas, y usada por mi en muchos proyectos. Para sustituirla he usado OneSignal, que es la más similar que he visto, ya que también es gratuita (por ahora), y dispone de un completo sistema de API y gestión.

OneSignal tiene un asistente de migración que facilita la tarea de mover los datos de una plataforma a otra. En una app realizada con Phonegap + Angular, apenas tenemos que hacer cambios, ya que es bastante similar. El plugin de Parse era https://github.com/avivais/phonegap-parse-plugin y el de One Signal es https://documentation.onesignal.com/v2.0/docs/phonegap-sdk-installation. El de Parse estaba algo más desarrollado, ya que dispone de varios métodos y eventos, mientras que el de OneSignal solo dispone del evento “notificationOpenedCallback”, que se activa al pulsar sobre la notificación y traer la app a primer plano, pero yo creo que es suficiente para la mayoría de los usos que se le puede dar.

Voy a explicar un caso concreto, lo que sería enviar una notificación Push mediante PHP.

En ambas plataformas necesitamos las librerías de PHP, que en One Signal están aquí: https://github.com/norkunas/onesignal-php-api

Este era el aspecto de un script para Parse que enviaba una notificación a todos los usuarios Android de la app:


define( 'PARSE_SDK_DIR', './parse/' );
require 'autoload.php';
use Parse\ParseInstallation;
use Parse\ParseClient;
use Parse\ParsePush;  
ParseClient::initialize(APP_ID , REST_KEY, MASTER_KEY);
$data = array("alert" => "Esta es una notificación Push para los usuarios de Android");
$query = ParseInstallation::query();
$query->equalTo('deviceType', 'android');
ParsePush::send(array(
    "where" => $query,
    "data" => $data
));
Y este es el equivalente en OneSignal, que como se ve es bastante similar, solo hay que acostumbrarse a la nueva sintaxis.

require __DIR__ . '/vendor/autoload.php';
use OneSignal\Config;
use OneSignal\Devices;
use OneSignal\OneSignal;
use GuzzleHttp\Exception\RequestException;
use OneSignal\Exception\OneSignalException;
$config = new Config();
$config->setApplicationId(APP_ID);
$config->setApplicationAuthKey(APP_AUTH_KEY);
$config->setUserAuthKey(USER_AUTH_KEY);
$api = new OneSignal($config);
try {
$api->devices->add([
    'device_type' => Devices::ANDROID
]);
$api->notifications->add([
    'contents' => [
        'en' => 'Esta es una notificación Push para los usuarios de Android'
    ]
]);
} catch (OneSignalException $e) {
    $httpStatusCode = $e->getStatusCode();
    $errors = $e->getErrors();
    var_dump($httpStatusCode);
    var_dump($errors);    
} catch (RequestException $e) {
    $message = $e->getMessage();
    var_dump($message);
}
1 comments
  • Miqueas Gutierrez
    22-02-2021 04:15
    Hola, tambien el servicio de Notificaciones Push INDIGITALL, es Gratis para 30000 Dispositivos, permite enviar Notificaciones Push con imágenes también geolocalizadas, programadas entre muchas más funciones, aquí está el enlace de la documentación para instalarlo fácilmente:https://docs.indigitall.com/es/
Leave a comment
I have read and accept the Privacy Policy

The comments sent by each user will always be visible in the corresponding post, and will not be used for any other purpose. The user has the right to access, rectify and suppress said comments, as reflected in our Privacy Policy