Algunos de los inconvenientes que nos topamos los programadores es la generación de certificados de Push Notification, sobre todo por la confusión por los pasos a seguir para conseguirlo y podría llevarte varias horas en generarlos y validar su funcionamiento. En este blog explico cómo hacerlo y no morir en el intento.
REQUISITOS
– Xcode 8.0 o superior
– iPhone con iOS 9 o superior
– Knuff o alguna herramienta alterna para el envío de Push Notification
– Certificados de firmas: certSigningRequest, p12 y pem anteriores (si existen certificados anteriores)
– Claves de acceso al portal de desarrolladores de Apple con licencia de desarrollo vigente
VALIDACIÓN DE INFORMACIÓN
El primer paso que se debe realizar es verificar que tanto identificadores como la habilitación de las Push Notification en el identificador correspondiente se encuentren activas, además de encontrar la activación de recepción de Push Notification desde la app.
GENERACIÓN
Dentro del portal de desarrolladores de Apple ingresar a Identifiers – App IDs y en la pantalla se desplegarán el listado de todas las aplicaciones registradas en el portal con su nombre e identificador (ver fig. 1). Se debe seleccionar el identificador que concuerde con el de la app mostrada en Xcode (Project Navigator – Seleccionar la app – General). Una vez encontrado, se debe seleccionar para poder visualizar todos los servicios asociados con la aplicación. Se busca el servicio “Push Notification” y existen cuatro posibles estados los que encontremos:
- Deshabilitados: estarán de color gris tanto en development como en distribution y se necesitan habilitar
- Habilitados: están de color verde tanto en development como en distribution, existen certificados vigentes
- Dañados: están de color amarillo tanto en development como en distribution y necesitan revisión
- Intercalados: pueden estar de color amarillo y verde en cualquier columna y se requiere revisión
Para poder ver la configuración de los servicios debe presionar el botón “Edit” y aparecerá la aplicación con sus servicios disponible para editar su configuración. Volvemos a buscar “Push Notification” y veremos dos secciones claramente identificables que son “Development SSL Certificate” y “Production SSL Certificate”. En cada recuadro se podrán visualizar los certificados asociados que hacen posible el funcionamiento de los Push Notification.
NOTA: una posible razón por la que los estados del servicio “Push Notification” sea de color amarillo sea por que los certificados haya expirado. Para solucionar esto se requiere generar nuevos para renovar la vigencia y reemplazarlos. En caso de que el sistema no te permita crear más es muy probable que tengas más de un certificado y hayas llegado al límite de certificados permitidos, por lo que deberás eliminar alguno.
Como siguiente paso se crearán los certificados, lo que servirá para agregar si no están habilitados o bien reemplazar lo que ya existen. Para realizar esto se presiona en el botón “Create certificate” ubicados en la parte inferior de cada sección. Una vez presionado el botón nos aparecerá la pantalla “Add iOS Certificate” con instrucciones de crear un archivo CSR. Una vez leído y entendido precionado el botón de “Continuar” y se mostrará la pantalla de subir el archivo CSR, cuyos pasos para generarlo está explicado en las instrucciones anteriores. Para cargar se presiona botón de “Choose file…”, explora por las carpetas de tu máquina, seleccionalo y presiona el botón de “Continuar” y finalmente podrás ver el certificado creado con tres datos importantes: el nombre del certificado, el tipo y la fecha de expiración. Se descarga el certificado y se hace el mismo procedimiento pero para el certificado de Production.
Con esto podremos decir que hemos habilitado los certificados de Push Notifications y hasta ahora, desde el portal están habilitados. El siguiente paso consiste en generar los archivos correspondientes para poder emitirlos desde la herramienta correspondiente. Como primer paso procederemos a instalar los certificados anteriormente descargados en Acceso de Llaveros (KeyChain), por lo que lo abriremos y seleccionamos el llavero “Inicio de sesión” y como Categoría “Mis Certificados”. Se podrá ver el listado de certificados que están instalados en la máquina. Arrastramos los archivos descargados (aps_development.cer y aps.cer) y podremos observar que se agregan con dos nombres tentativos:
- Apple Development IOS Push Services: certificado agregado que corresponde al emisor de Push Notification en Desarrollo
- Apple Push Services: certificado agregado que corresponde al emisor de Push Notification en Producción
Ambos nuevos certificados deberán tener una flecha de despliegue al costado izquierdo
NOTA: si no aparecen estas flechas de despliegue, vuelve a seguir los pasos anteriores, probablemente olvidaste algún paso.
DEL P12 AL PEM
Ahora continuaremos generando los archivos .p12 y .pem, para ello debemos desplegar los certificados que recién agregamos, los identificaremos por que tendrán un símbolo de llave en su lado izquierdo. Lo seleccionamos y daremos clic derecho para desplegar el Menu Contextual, seleccionando la opción “Exportar…” abriendo la pantalla de almacenar archivo con extensión .p12, ubicamos la carpeta destino y guardamos. Antes de almacenar, el Sistema Operativo nos arroja un mensaje en la que nos solicita una contraseña para relacionarlo con el archivo al utilizarlo. Este campo es opcional por lo que es posible dejarlo en blanco o bien asignarle la contraseña. El mismo proceso se deberá realizar para el certificado de producción, por lo que se deberán obtener dos archivos .p12.
Una vez generado, procederemos a generar los archivos .pem, por lo que necesitaremos abrir Terminal y ubicarnos en el directorio donde están almacenados los archivos generados anteriormente. Dentro de la consola escribiremos el siguiente comando
openssl pkcs12 -in archivo_ingreso.p12 -out archivo_expedido.pem
donde archivo_ingreso es el nombre del archivo que vas a convertir y archivo_expedido es el nombre del archivo que vas a generar. En caso de que los archivos .p12 los hayas almacenado con contraseña, entonces escribirás en la Terminal
openssl pkcs12 -in archivo_ingreso.p12 -out archivo_expedido.pem -clcerts -nokeys -passin ‘pass:P@s5w0rD’
donde P@s5w0rD es la contraseña que ingresarás.
Hasta aquí ya habremos generado los archivos que se necesitan colocar en herramientas que permitan el envío de Push Notification, por ejemplo en backend. Para poder validar el funcionamiento de manera rápida se usará Knuff. Abrimos la herramienta y visualizaremos su interfaz. Seleccionamos la sección de “Custom” y seleccionamos el botón “Choose…” para elegir el certificado que se desea verificar. Una vez elegido se añade el Device Push Key desde la app y presionamos “Push” para enviar la notificación. Con esto podremos corroborar que todo está bien y solo quedará labor desde backend.
CONSIDERACIONES
- Para validar la recepción de Push Notification es forzoso el uso de un dispositivo físico y no un emulador, debido a que en el segundo no se generan Devices Push Key
- En este documento está orientado para la validación de recepción de Push Notification con el de servicio APNs. No se garantiza que el proceso de validación de esta tarea funciona exactamente igual que en Firebase
- El funcionamiento de Push Notifications con los certificados de producción se realiza a partir de un IPA, después de ser liberado a AppStore o a TestFlight. Se debe obtener el Device Push Key desde el teléfono fisicamente y no desde una ejecución.