Fue 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:
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);
}
Miqueas Gutierrez