Cargando

Español  English

Blog

Por Enrique González

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 + AngularJS, 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);
}
  • Fecha13-03-2016
  • 0

    comentarios

  • +

    Deja un comentario