Loading

Español  English

Blog

By 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 + 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);
}
  • Date13-03-2016
  • 0

    comments

  • +

    Leave a comment

    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