Configuración Apple Push Notifications Service (APNs) y envío de notificaciones push móviles en Connectif

Para el envío y recepción de push mediante el Mobile SDK de iOS necesitarás tener configurado Apple Push Notifications Service (APNs). En este artículo se explican los pasos necesarios para realizar la configuración.

 

1. Crear y configurar la Key de APNs

Es posible que ya tengas disponible una Key, en ese caso no necesitarás realizar estos pasos y podrás pasar a configurar la integración.

Desde tu cuenta de Apple Developer, accede al apartado Keys y haz clic en el símbolo + para añadir una.

listKeysApn.png

 

Al crearla, tendrás que marcar la capacidad de Apple Push Notification Service (APNs) y haz clic en Continue.

newKeyWithAPNs.png

 

El siguiente paso te pedirá una confirmación antes de registrar la clave.

registerKey.png

 

Una vez creada, descarga el fichero ".p8", que necesitarás más adelante para configurar las Notificaciones Push de iOS en Connectif.

Recuerda que solo podrás descargar este fichero una única vez.

downloadKey.png

 

2. Configurar la integración en Connectif

Dentro de la configuración del canal de App Móvil en Connectif, accede al apartado iOS Push. Ahí sube el fichero ".p8" descargado en el paso 1.

uploadKeyConnectif.png

 

Una vez subido el fichero, la interfaz del apartado se verá así: 

configuracionInicialApnConnectif.png

 

Selecciona entre los dos tipos de Host, Production o Development y configúralos según tu propósito.

Los parámetros Team ID y Key ID los podrás obtener en tu página de Apple Developer en la sección de Key:

  • En la parte superior derecha encontrarás tu Team ID y, junto a la Key, el Key ID.

teamDevAndKeyId.png

 

Después, configura el Bundle identifier, que encontrarás en la información general de tu proyecto en xCode en el target principal.

BundleIdentifier.png

 

Una vez realizada la configuración de esos parámetros en Connectif, la integración con toda la configuración debería de tener este aspecto:

integracionPushIosTerminada.png

 

3. Añadir capacidad de Push Notification

En caso de que tu  proyecto no tenga la capacidad de manejo de Notificaciones Push, tendrás que añadirla.

Haz clic en tu proyecto, en el Target principal del mismo y, en la sección Signing & Capabilities,  haz clic sobre + Capability

addCapabilitiesiOS.png

 

En esa sección aparecerá el diálogo para poder buscar y añadir la capacidad de manejo de Notificaciones Push.

Captura de pantalla 2024-10-21 a las 15.18.28.png

 

4. Añadir capacidad de Background Modes con Remote Notifications.

Con el mismo proceso que has usado para añadir la capacidad de Push Notification, añade la capacidad Background Modes.

Una vez añadida, dirígete de nuevo a la configuración de la misma para asegurarte que está marcada la opción Remote Notifications.

 

5. Añadir Notification Service Extension

Para poder enriquecer correctamente y hacer tracking de tus Notificaciones Push, será necesario crear un Notification Service Extension.



 

Haz clic sobre el botón de añadir target y busca Notification Service Extension. Un posible nombre para na extensión puede ser ConnectifNotificationServiceExtension.



 

Recuerda que, si tu proyecto principal tiene un "Minimum Deployments" concreto, para esta extensión debería ser el mismo.

2024-10-21_13-03.png

 

6. Añadir App Group

La capacidad de App Group te permitirá tener acceso a los datos entre tu target principal y tu extensión para notificaciones.

Del mismo modo que has añadido la capacidad de Push Notification y Background Modes, añade un App Group al target principal de tu app.

Captura de pantalla 2024-10-21 a las 13.09.57.png

 

Una vez añadida la capacidad App Groups, en la configuración del mismo añadiremos un contenerdor. Mantendremos el formato de group + identificador de bundle + connectif. Quedará como en este ejemplo:

Captura de pantalla 2024-10-21 a las 13.12.44.png

 

Repite este proceso y añádelo al Notification Service Extension creado anteriormente, respetando el mismo nombre del contenedor.

 

7. Modificaciones en el código

7.1. Inicio del SDK

Al arrancar el SDK, añade el parámetro appGroup indicando el nombre del contenedor que has creado en el paso anterior.

Connectif.initialize(apiKey: "YOUR_API_KEY",
    appGroup: "YOUR_CONTAINER_APPGROUP_NAME")


7.2. Modificaciones en AppDelegate

Si quieres usar  directamente nuestra extensión de AppDelegate, podrás extender ConnectifAppDelegate, sin olvidar llamar a super.application.

class AppDelegate: ConnectifAppDelegate {

    override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        super.application(
           application,
           didFinishLaunchingWithOptions: launchOptions
        )

         Connectif.initialize(apiKey: "YOUR_API_KEY",
             appGroup: "YOUR_CONTAINER_APPGROUP_NAME")

        return true
    }
}

Si quieres modificar las funciones en tu AppDelegate directamente, añade en:

Nota importante sobre los permisos: Al invocar el método Connectif.addPushToken(token), el SDK de Connectif enviará automáticamente, junto con el nuevo token, el estado actual de los permisos de notificaciones push del usuario en el dispositivo. Esto garantiza que Connectif tenga siempre información actualizada sobre la capacidad del usuario para recibir notificaciones en tiempo real.

  • didRegisterForRemoteNotificationsWithDeviceToken

Connectif.addPushToken(deviceToken: deviceToken)
  •  didFinishLaunchingWithOptions

UNUserNotificationCenter.current().delegate = self
  • didReceiveRemoteNotification

completionHandler(.newData)
  • userNotificationCenter(_: UNUserNotificationCenter, willPresent ...
completionHandler([.alert, .sound, .badge])
  • userNotificationCenter( _: UNUserNotificationCenter, didReceive ...

Connectif.handleNotificationUserAction devolverá un booleano indicando si la push fue manejada por Connectif, para poder realizar el manejo de push procedentes de otro proveedor.

Connectif.handleNotificationUserAction(
            actionIdentifier: response.actionIdentifier,
            userInfo: response.notification.request.content.userInfo)
completionHandler()


7.3. Modificaciones en Notification Service Extension

override func didReceive(
    _ request: UNNotificationRequest,
    withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void
  ) {
    self.contentHandler = contentHandler
    guard
      Connectif.handleNotification(
        appGroup: "YOUR_APP_GROUP", request: request,
        contentHandler: contentHandler)
    else {
      //Notification not handled by Connectif, handle other notifications here
      contentHandler(request.content)
      return

    }

  }

 

8. Permiso de Notificaciones

Recuerda que es un requisito para poder recibir push el pedir al contacto los permisos para recibir push y que este los acepte. Una vez concedidos, podrás registrar el dispositivo para Notificaciones Push y se enviará el token a Connectif.

Aquí tienes un ejemplo de peticiones de permisos y de registros del dispositivo para obtener el token.

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
    if granted {
        DispatchQueue.main.async {
            application.registerForRemoteNotifications()
        }
     }
}

 

9. Configuración adicional

1- Actualización del estado de los permisos de notificaciones

 Si necesitas forzar la actualización del estado de los permisos de notificaciones push del usuario (por ejemplo, si el usuario ha modificado los permisos desde la configuración del sistema de iOS y deseas reflejar ese cambio inmediatamente en Connectif), puedes utilizar el método updatePushPermissionStatus().

Este método permite enviar al SDK el estado actual de los permisos de notificación del dispositivo en cualquier momento.

Connectif.updatePushPermissionStatus()

 

¡Enhorabuena!
Has llegado al final de la lección.

  

¿Te han quedado dudas sin resolver?
Recuerda que tienes a tu disposición a nuestros especialistas en Connectif. Para contactar con ellos, tan solo tendrás que abrir ticket a Soporte haciendo clic en el botón azul de “Ayuda” de tu dashboard.


¡Sigue aprendiendo!

Para aprovechar todo el potencial de tu cuenta en Connectif, te recomendamos continuar con los siguientes artículos: