Esta idea surgió ya que necesitaba mandar alertas al smartphone cuando algún cliente registrará un ticket con alguna solicitud de servicio y debido a que el iPhone es el smartphone mas utilizado en mi lugar de trabajo decidí utilizar algo que funcionará en él.
Despues de realizar una búsqueda exhaustiva en google, encontré 3 aplicaciones para realizar esta tarea, estas fueron: pushme.to, boxcar y notifo.
La primera aplicación que probé fue la de pushme.to y la verdad resultó ser la mas sencilla aunque no me convencía del todo ya que para utilizarla debíamos ademas de tenerla la aplicación instalada en nuestro iPhone y haber creado una cuenta, necesitábamos extraer una url utilizada en un iframe que pushme.to utiliza para poder embeber su widget en alguna pagina que queramos. No voy a explicar como se utiliza ya que eso lo podemos encontrar en la siguiente dirección si asi lo queremos:
www.barattalo.it
La segunda aplicación que utilice fue boxcar. Esta aplicación cuenta con un api que explica como enviar notificaciones push, sin embargo en la sección de foros de ayuda de la página encontré una clase en php que simplificaba aun mas las cosas. Con la ayuda obtenida ahí pude hacer funcionar el envío de notificaciones, lo único necesario fue modificar la clase con los datos de mi cuenta, instalar la aplicación en mi iPhone y por último activar el servicio growl desde la aplicación. En general la aplicación trabaja bastante bien y no es nada difícil configurarla, el motivo por el cual no me decidí a utilizarla fue que no pude hacer funcionar que al momento de desbloquear el iPhone y "ver" la notificación no era posible abrir una página web. Aqui les dejo los links por si quieren echarle un vistazo:
boxcar.io
boxcar PHP class
Por último decidí probar la api de notifo. Esta aplicación cuenta con una api muy bien explicada ademas de contar con dos formas de utilizar sus servicios. La primera opción es crear una cuanta de usuario, la cual solo permite enviar notificaciones a ti mismo y otra que te permite crear una cuenta para servicio, con un límite de 10,000 notificaciones al mes gratis.
Para el ejemplo propuesto aquí utilizaremos la cuenta de usuario, para ello es necesario crear una cuenta en notifo.com.
Las credenciales que utilizaremos para autentificarnos desde nuestra aplicación será nuestro nombre de usuario y nuestra "API Secret" que podremos encontrar en la sección Settings.
El link de descarga de las librerías para utilizar la api las podemos encontrar aquí. Cuenta con librerias para PHP, Python, .NET, ColdFusion y Ruby.
A continuación les dejo el código del script que envía la notificación...
<?php
/* incluye el archivo Notifo_API */
require("Notifo_API.php");
/* crea un nuevo objeto "notifo" */
$notifo = new Notifo_API("nombreDeUsuario", "apiSecret");
/* establece los parámetros de la notificación */
$params = array("to"=>"nombreDeUsuario",
"label"=>"NotificaciónPHP",
"title"=>"Titulo del Mensaje",
"msg"=>"Aquí va el mensaje de prueba de la notificación.",
"uri"=>"http://www.google.com");
/* envía la notificación! */
$response = $notifo->send_notification($params);
/* hacer uso de la respuesta */
print_r($response);
/* ... */
?>
y de la clase que hace uso de la api:
<?php
class Notifo_API {
const API_ROOT = 'https://api.notifo.com/';
const API_VER = 'v1';
protected $apiUsername;
protected $apiSecret;
/**
* class constructor
*/
function __construct($apiUsername, $apiSecret) {
$this->apiUsername = $apiUsername;
$this->apiSecret = $apiSecret;
}
function set_apiusername($val) {
$this->apiUsername = $val;
}
function set_apisecret($val) {
$this->apiSecret = $val;
}
/**
* function: sendNotification
* @param: $params - an associative array of parameters to send to the Notifo API.
* These can be any of the following:
* to, msg, label, title, uri
* See https://api.notifo.com/ for more information
*/
function sendNotification($params) {
$validFields = array('to', 'msg', 'label', 'title', 'uri');
$params = array_intersect_key($params, array_flip($validFields));
return $this->sendRequest('send_notification', 'POST', $params);
} /* end function sendNotification */
function sendMessage($params) {
$validFields = array('to','msg');
$params = array_intersect_key($params, array_flip($validFields));
return $this->sendRequest('send_message', 'POST', $params);
}
/**
* function: subscribeUser
* @param: $username - the username to subscribe to your Notifo service
* See https://api.notifo.com/ for more information
*/
function subscribeUser($username) {
return $this->sendRequest('subscribe_user', 'POST', array('username' => $username));
} /* end function subscribeUser */
/**
* helper function to send the requests
* @param $method - name of remote method to call
* @param $type - HTTP method (GET, POST, etc)
* @param $data - array with arguments for remote method
*/
function sendRequest($method, $type, $data) {
$url = self::API_ROOT.self::API_VER.'/'.$method;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if ($type == "POST") {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($ch, CURLOPT_USERPWD, $this->apiUsername.':'.$this->apiSecret);
curl_setopt($ch, CURLOPT_HEADER, false);
/*
* if you are on a shared host or do not have access to install
* the root CA certificates on your server, uncomment the next
* two lines or the curl_exec call may fail with null
*/
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$result = curl_exec($ch);
$result = json_decode($result, true);
return $result;
} /* end function sendRequest */
// for backwards compatibility
function send_notification($params) { return json_encode($this->sendNotification($params)); }
function send_message($params) { return json_encode($this->sendMessage($params)); }
function subscribe_user($username) { return json_encode($this->subscribeUser($username)); }
function send_request($url, $type, $data) { return json_encode($this->sendRequest($method, $type, $data)); }
} /* end class Notifo_API */
?>
Link de descarga de la aplicacion notifo.
Ejemplo de la notificación push:


2 comentarios:
Aun no lo comprendo... yo quiero enviar notificaciones a los usuarios de mi pagina web.
Algunos entran con la version de la aplicacion movil y otroa a traves de la web.
No me queda muy claro, que debo yo hacer.
En realidad deberia detectar cuando un usuario entra a traves de la aplicación movil , para guardar la clave de la aplicacion o su numero de telefono??
Hola soy completamente nuevo, una vez que ya tengo el codigo y la app instalada, como hago para hacer la prueba? :)
Publicar un comentario