Uso de push notifications (iOS) y servicio PHP, lo que debes de considerar.

Hace unos meses participé en desarrollar para una aseguradora un centro de mensajes que se accede desde su servidor para que desde ahí se puedan enviar mensajes para dispositivos Android y iOS dependiendo algunos criterios, todo un reto ya que en donde trabajaba no teníamos experiencia para hacerlas.

En esta entrada, que no es realmente un tutorial para hacer un servicio de envío de push notifications para un app de iOS, sino que les daré algunos tips que pueden considerar a la hora de desarrollar, ya que, créanme, fue un dolor de cabeza por semanas encontrar la solución correcta para que funcionaran.

Espero sea una referencia para que no tengan problemas y puedan terminar en tiempo y quedarse calvos de la frustración.

1. Puertos SSL activos: Verifica que tu ISP (o si estas probando localmente, tu servidor local) tenga activos los puertos SSL, puerto 2195 o 2196. Esto evita que al probar tu servicio te aparezca el siguiente error:

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.push.apple.com:2195 (Connection refused) in SendPushNotification.php on line 28 Failed to connect: 111 Connection refused

También es recomendable que tu servidor de producción tenga habilitados dichos puertos. En casos particulares, algunos proveedores por default no los tienen activados así que habrá que pedir que los activen

2. Certificados: Este es otro problema que muchos desarrolladores llegan a tener, la generación de certificados tiene que ser al pie de la letra, porque esto puede provocar que simplemente no funcionen las pruebas de envíos de mensajes. Importante recordar que existen los certificados de desarrollo y producción y que dependiendo el ambiente en el que estés, los ID’s de los dispositivos cambiarán.

Ejemplo: Registras un dispositivo en ambiente de desarrollo, funciona todo bien. Pero después de que tengas que generar el certificado de producción, ese ID que tenías registrado ya no servirá por lo que tienes que registrarlo de nuevo en tu sistema que estes desarrollando. Esto me trajo una confusión que me costo algunas horas de trabajo así que tenlo presente.

3. Conexión de APN para envío de mensajes: Este si es un detalle muy particular que encontré al desarrollar el centro de mensajes. Cada vez que se envía el mensaje se crea una conexión nueva al servidor APN y después de que se envía el mensaje se tiene que cerrar por seguridad. El problema radica en que si quieres enviar mensajes de manera masiva usando una sola conexión, no será posible.

Por lo tanto, si necesitas enviar mensajes a n dispositivos simultáneamente, tienes que hacer una conexión por cada dispositivo al que vayas a mandarlo, de lo contrario, solo mandará al primer registrado o no mandará nada.

Este punto resulta algo truculento y lo solucioné de esta manera.

4. GET en vez de POST: Este punto realmente nunca lo encontramos como solución en sitios de ayuda como Stack Overflow y nos sorprendió el hecho de que funcionara.

Básicamente consiste en que todos los datos que envías en los formularios que vayas a utilizar (en mi caso, para escribir el mensaje al dueño del dispositivo) los mandes por GET y no por POST, curiosamente, al hacer este cambio, pude enviar mis mensajes sin problema alguno. Puede que mi situación haya sido una situación MUY particular y sabemos que a veces pasar por GET los datos no es buena idea, pero si tienes la oportunidad de hacerlo por este método, hazlo.

En esta experiencia que tuve, aprendí bastante sobre el desarrollo de este sistema de mensajes vía push notifications, algo muy divertido y retador. Algunos puntos quizás no apliquen a su situación, pero considérenlo como una especie de checklist cuando tengan problemas. Además, si tienen otro problema, es importante que lean a detalle la documentación que proporciona Apple para realizar este servicio.

Si tienen otra solución será bienvenida en este blog.

Game-on!

Design a site like this with WordPress.com
Get started