digitalDot diseño webLogo Diseño Web digitalDot

Cómo incluir Notificaciones Push en iOS

10/01/2019

Cómo incluir Notificaciones Push en iOSPara la fidelización de los clientes, podemos incluir en nuestras aplicaciones móviles notificaciones Push que muestren información relevante para quien se haya instalado la app de nuestra empresa.

Si estáis desarrollando una aplicación móvil para iOS, ahora es el momento de que incluyáis esta opción.

Desde digitalDot os vamos a contar cómo podéis hacerlo de una forma muy sencilla. ¿Preparados?, pues adelante.

Implantación de APN en iOS (Push Notifications)

Las notificaciones Push en iOS son enviadas desde un servidor y con estos 6 pasos las podéis tener en vuestra app.

Paso Uno. Certificado CSR

En primer lugar, se debe generar el certificado CSR o Certificate Signing Request. ¿Desde dónde lo hacemos?, desde:

Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority

Una vez completados todos los campos lo guardamos en nuestro disco.

En la sección Keys, aparecerán dos claves: una privada y otra pública.

Sobre la clave privada hacemos clic derecho y elegimos la opción “Export ...” y se guarda con una contraseña compleja.

Paso Dos. Certificados en la cuenta de Apple

Ahora vamos a crear los certificados en la cuenta de desarrollador de Apple.

Para ello tenemos que acceder a la web oficial de Apple en el apartado Identifiers se crea o edita el App ID de la aplicación en el que se debe habilitar la opción de “Push Notificaciones” del proyecto.

En la lista de servicios que aparece se crea el certificado SSL de Producción.

Después, nos pedirá el certificado CSR que hemos creado en el paso uno, por lo tanto, simplemente tendremos que importarlo.

Por último, descargamos este certificado y crearemos un certificado conocido como “Provisional Profile” que es de tipo Development y que descargaremos también.

Notificaciones push en app. digitalDot

Paso Tres. Crear archivo PEM

Una vez hemos acabado con los “papeleos” de los certificados vamos a crear el archivo PEM. Para que resulte más sencillo utilizaremos los siguientes nombres de los certificados obtenidos:

aps_development.cer: certificado SSL de producción.

pushcert.p12: la clave privada.

Para este paso es necesario usar el terminal y situarnos en la carpeta con los certificados.

3.1

Abrir aps_development_cer en “Acceso a llaveros”

3.2

Exportar la clave privada y se guarda con una contraseña compleja que aparece dentro del certificado tal y como aparece en la siguiente imagen:


acceso key. digitalDot

3.3

Ejecutar el comando siguiente desde el terminal

>>openssl pkcs12 -in pushcert.p12 -out pushcert.pem -nodes -clcerts

Paso Cuatro. Conexión segura

Comprobamos que estamos conectados al servidor estableciendo una conexión segura.

> openssl s_client -connect gateway.push.apple.com:2195 -cert PushDevCert.pem -key PushDevKey.pem

Se introduce la contraseña de la clave privada.

Si todo ha salido lo bien que esperábamos devolverá el siguiente mensaje: Verify return code: 0 (ok)

Paso Cinco. Configuración

Ahora toca configurar las notificaciones en Xcode. Para ello iremos a la pestaña Capabilities del proyecto y una vez allí se habilitará “Push Notificaciones”.

En AppDelegate.swift se añade la siguiente funcionalidad en la cabecera y en la función didFinishLaunchingWithOptions

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate{

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

        completionHandler(UIBackgroundFetchResult.newData)   

    }

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

       let center = UNUserNotificationCenter.current()

        center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in

        if granted == true{

               DispatchQueue.main.async {

                     UIApplication.shared.registerForRemoteNotifications()

                     UNUserNotificationCenter.current().delegate = self

             }

                   

       }

          }

          return true

}

Esta función obtiene un token único del dispositivo y que servirá al app para identificar dónde mandar la notificación.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

        let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})

    }   

Si surgiera algún problema con el token la siguiente función nos indicará qué ocurre:

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {

        NSLog(error.localizedDescription)

    }

Paso sexto. APN en PHP

Descargamos la librería ApnsPHP.

En el archivo sample_push debemos modificar:

6.1. ENVIRONMENT_SANDBOX por ENVIRONMENT_PRODUCTION
6.2. El nombre del certificado PEM.
6.3. El token de nuestro dispositivo en la siguiente función

$message = new ApnsPHP_Message(‘tokenDevice’);

El archivo .pem se debe situar en la misma carpeta de la librería junto al archivo sample_push

Y ya lo tenemos todo hecho. Sencillo, ¿verdad?

Recordad que en digitalDot trabajamos a diario en el diseño, desarrollo y mantenimiento de aplicaciones móviles. Si queréis crear una para vuestro negocio o la que tenéis no funciona como querríais, podéis contactar con nuestro servicio de aplicaciones móviles en Murcia y nos encantará colaborar con vosotros.

Notificaciones en app iOS. digitalDot


También puede interesarte:

crossmenuchevron-down
×

Te resolvemos las dudas

Horario de atención al cliente:
L-V 8.00-14.00
L-J 14.00-18.00

× ¿Cómo puedo ayudarte?