Notificaciones Remotas (Notificaciones Push) en iOS - Parte 2: Preparando el entorno para las Notificaciones Push

Bueno chavoz siguiendo el aporte de la semana pasada, ahora les mostrare como preparar el entorno para las notificaciones push.

Primero debemos de generar un certificado de autoridad, para eso abrimos Acceso a Llaveros, Hacemos click en Acceso a Llaveros->Asistente para Certificados->Solicitar un certificado de una autoridad de certificacion.


Se nos abrirá un asistente y lo llenaremos introduciendo nuestro correo (el correo que usamos para nuestro iOS Development Program) y el nombre común, el cual puede ser lo que ustedes desean, pero para casos prácticos necesitamos ponerle un nombre descriptivo y lo guardaremos en nuestro sistema.

Ahora hay que dirigirnos a nuestro Acceso a Llaveros y buscaremos el certificado que acabamos de crear usando el Nombre Común que utilizamos y lo exportaremos, utilizaremos el que pertenezca a la clave privada.


Esto nos generara un archivo p12, pero antes de poderlo exportar el sistema nos pedirá una contraseña, esta contraseña sera propia para el archivo p12, así que por favor NO OLVIDEN ESTA CONTRASEÑA, ya que la utilizaremos mas adelante. Ya una vez introducida una contraseña aceptable, el sistema nos pedirá nuestra contraseña y solo así podremos exportar nuestro archivo correctamente.

Hora nos dirigimos a la pagina oficial de Desarrolladores de iOS (click aqui) y nos dirigimos a la sección de "Certificates, Identifiers & Profiles"
Hacemos click en "Certificates"
Seleccionamos "App IDs" y hacemos click en el boton "+"
Ahora nos aparecerá la ventana de Registro del App ID y llenaremos los campos necesarios de la siguiente manera:


App ID Description Push Ejemplo
App ID SuffixSeleccionamos la opción "Explicit App ID" y en el campo Bundle ID introducimos lo siguiente: com.brion.PushEjemplo
App ServicesSeleccionar la opción "Push Notifications"


*Bundle ID -> es la clave única de nuestra aplicaron, es decir, en el servidor de Apple se registra este campo como único alrededor del mundo de Apps

*App ID Description -> Es el nombre por el cual conoceremos nuestra aplicacion dentro de todas las aplicaciones que hemos hecho

*App Services -> Son los servicios que contendra nuestra aplicacion, es decir, no todas las aplicaciones tienen los mismos servicios, nosotros decidimos que servicios queremos en nuestra Aplicacion

Finalmente después de haber introducido estos datos, haremos click en "Continue". Después veremos una pantalla de confirmación junto con un resumen de nuestra aplicacion.


Ahora simplemente hacemos click en "Submit" y después en "Done", cuyos botones se encuentran al final de cada resumen. Una vez hecho eso veremos nuestra App ID junto a las demás que hemos desarrollado con anterioridad.
Si hacemos click en el app ID que acabamos de crear veremos un resumen como el siguiente:
Como podemos ver la seccion de "Push Notifications" como "Configurable" para cambiar eso haremos click en "Edit", después de eso nos mostrara una pantalla de Configuracion de nuestra app. Ahora nos dirigiremos a la sección de "Push Notifications" y haremos click en el boton "Create Certificate" en la sección de "Development SSL Certificate",  seleccionamos este certificado porque ahora solamente  utilizaremos las notificaciones Push en un ambiente de desarrollo, si quisieramos también en producción, entonces presionaríamos el botón debajo de la sección de "Production SSL Certificate".
Ahora veremos la seccion de "Add iOS Certificate", aquí simplemente haremos click en "Continue"
Ahora haremos click en "Choose File..." y seleccionaremos nuestro archivo .certSigningRequest que creamos previamente.
Hacemos click en "Generate" esto nos generara nuestro certificado y ahora simplemente lo descargamos haciendo click en "Download".
Lo descargamos y lo colocamos en la misma carpeta donde se encuentran todos los certificados que hemos generado con anterioridad.

Ahora crearemos nuestro archivo PEM, la verdad no se que signifique PEM solo que que la P significa PHP, porque PHP? porque es mas simple manejar los notificaciones Push usando PHP debido a que PHP es un lenguaje de scripting, si ustedes conocerán un poco de lenguajes de scripting, conocerán entonces lo que es Python, Ruby y PHP. Todos estos lenguajes fueron creados para crear aplicaciones Web simples y rapidas.

Ahora para crear nuestro archivo PEM, necesitaremos todos los certificados previos que hemos generado, de preferencia coloquenlos en la misma carpeta para no batallar. Una vez colocados en la misma carpeta abriremos nuestra Terminal y seguiremos las siguientes instrucciones:

  • Convertiremos nuestro archivo ".cer" a ".pem" usando el siguiente comando:
openssl x509 -in aps_development.cer -inform der -out PushEjemp
lo.pem
 

  •  Ahora convertiremos nuestro archivo ".p12" en ".pem" usando el siguiente comando:
openssl pkcs12 -nocerts -out PushEjemploKey.pem -in PushEjemp
lo.p12
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
  • Como pudieron observar, este archivo nos pidio la contraseña que le dimos cuando lo exportamos de nuestros llaveros, se la damos y ahora nos pedirá nuevamente una contraseña, este nueva contraseña sera propia de este archivo, de preferencia usen la misma para así no confundirse.
  • Ahora fusionaremos nuestros 2 archivos ".pem" en uno solo usando el siguiente comando:
cat PushEjemplo.pem PushEjemploKey.pem > ck.pem

  • Ahora comprobaremos que nuestros certificados funcionen, usando el siguiente comando
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -c
ert PushEjemplo.pem -key PushEjemploKey.pem
Enter pass phrase for PushEjemploKey.pem:


Si todo salio bien, veremos un mensaje similar en nuestra Terminal:

CONNECTED(00000003)

//mas cosas por aquí apareceran...solo asegurense que diga connected y que
regrese un codigo 0...
    Verify return code: 0 (ok)
---


Ahora nos dirigimos nuevamente a nuestro iOS Dev Center y debajo de la sección de "Provisioning Profiles" la opción "All" y haremos click en el boton "+"
Seleccionamos "iOS App Development" debajo de la sección de "Development"
Nos aseguramos que en "App ID" aparezca el nombre de nuestra aplicacion y hacemos click en "Continue"
Ahora hacemos click en en la casilla de "Select All", la cual es para seleccionar los certificados que queremos incluir y posteriormente hacemos click en "Continue"
Ahora seleccionaremos los dispositivos en los que queramos probar este perfil y después haremos click en "Continue"
Ahora finalmente le ponemos nombre a este perfil y después haremos click en "Generate"

Ahora finalmente si obtuvimos una pantalla como la siguiente, podemos decir que nuestro entorno esta listo, ahora ya podemos proceder a la parte 3, la parte de crear el Servidor. Por mi parte es todo por ahora, espero esto les sea de ayuda y útil en su aventura de desarrolladores de iOS, si tienen alguna duda o comentario favor de dejarmelas en la sección designada;por ahora me despido...adios ^_^/

Comments

  1. Hola buenas: En primer lugar, gracias por tu tutorial. Comentarte que estoy teniendo problemas con el perfil de distribución. Quito lo de sandbox en la url para poder probar y no se corta la conexión, pero más arriba puedo ver un mensaje de error "verify error:num=20: unable to get local issuer certificate" y seguido de un verify return:0. Lo tengo subido a mi servidor y no parece que funcione, aunque ya me pasó otra vez con el de developer que no me funcionó hasta unas horas más tarde.

    Saludos y gracias.

    ReplyDelete
    Replies
    1. Hola! ya estuve revizando tu caso y encontre este articulos que quisas pueda ayudarte:

      https://developer.apple.com/library/ios/technotes/tn2265/_index.html

      Lo que estuve leyendo es que posiblemente tienes errores con tus certificados o en todo caso tus certificados estan bloqueados por tantas conexiones abiertas y cerradas repetidamente. Te recomiendo que busques el error en el link y le des una leida y posteriormente revizes la estructura de tu aplicacion para asi encuentres la razon de tu error y asi lo puedas resolver.

      Delete
    2. Gracias por contestar. El error lo sigo obteniendo, pero únicamente en la parte de arriba. Quiero decir, que aparentemente funciona pero no entiendo por qué antes no me iba y ahora sí. Comentar como curiosidad que antes me subían los certificados con solo lectura y esta vez no me lo han tocado. Sea como sea, ¡gracias!

      Delete
    3. No hay de que, en lo que pueda ayudar y me da gusto que ya funcione :)

      Delete
  2. Disculpa segui este tutorial para generar los certificados ya esta hecho el codigo en xcode para los certificados y me da lo siguiente:
    no valid 'aps-environment' entitlement string found for application
    sabes por qué podrìa ser ? ya que esperaba tener como respuesta el número de celular para entonces generar el php

    ReplyDelete

Post a Comment

Popular posts from this blog

Juego de Gato Usando HTML, JavaScript y CSS

AfterEffects - Quitar el Fondo de un Video Forma 1: KeyLight

Crear un nuevo Libro de Excel con VBA ES