Compartir a través de


Habilitación de notificaciones de inserción en la aplicación de chat

En este artículo se describe cómo crear notificaciones push en la aplicación iOS mediante el SDK de chat de Azure Communication Services.

Las notificaciones push alertan a los usuarios de mensajes nuevos en un hilo de chat cuando la aplicación móvil no se ejecuta en primer plano. Azure Communication Services admite dos versiones de notificaciones push:

  • Versión básica: aparece un número de distintivo en el icono de la aplicación, el dispositivo reproduce un sonido de notificación y aparece un banner de alerta emergente.

    Captura de pantalla de la versión básica de una notificación emergente.

  • Versión avanzada: además de las características admitidas en la versión básica, puede personalizar el título y la vista previa del mensaje en el banner de alerta.

    Captura de pantalla de la versión avanzada de una notificación de inserción.

En este tutorial, hizo lo siguiente:

  • Configurar un certificado de Apple Push Notification Service (APN).
  • Configurar Xcode para notificaciones de inserción.
  • Implementar una versión básica o avanzada de notificaciones push.
  • Probar las notificaciones en la aplicación.
  • Configurar la renovación automática del registro para las notificaciones push.

Descarga de código

Descargue el código de ejemplo en GitHub Azure Samples Add Chat to your app (Agregar chat a la aplicación).

Requisitos previos

Crear un certificado de APNs .p12 y establecerlo en el centro de notificaciones

Si no es un cliente interno de Microsoft, complete los pasos descritos en el procedimiento siguiente para crear un certificado de Apple Push Notification Service (APNs).

Si es un cliente interno de Microsoft, envíe una incidencia y proporcione el identificador de lote de la aplicación para obtener un certificado .p12. Luego, pase al último paso del procedimiento siguiente.

  1. Inicie sesión en el Portal para desarrolladores de Apple.

  2. Vaya a Certificados, Identificadores y Perfiles>Identificadores>IDs de App, y luego seleccione el ID de la app asociado a su aplicación.

    Captura de pantalla en la que se muestran las selecciones para elegir un id. de la aplicación.

  3. En la página del identificador de aplicación, seleccione Funcionalidades>Notificaciones de inserción y, después, seleccione Guardar.

    Captura de pantalla en la que se muestran las opciones para editar una configuración de identificador de aplicación.

  4. En el cuadro de diálogo Modificar funcionalidades de la aplicación que aparece, seleccione Confirmar.

    Captura de pantalla en la que se muestra el botón Confirmar para modificar las funcionalidades de la aplicación.

  5. En la página del identificador de la aplicación, seleccione Funcionalidades>Notificaciones push>Configurar y, a continuación, seleccione una de las siguientes opciones:

    • Para probar las notificaciones push durante el desarrollo de una aplicación iOS, seleccione el botón Crear certificado en Certificado SSL de desarrollo.
    • Para enviar notificaciones push en producción, seleccione el botón Crear certificado bajo Certificado SSL de Producción.

    Captura de pantalla en la que se muestran las opciones para crear un certificado de desarrollo o un certificado de producción.

  6. El área Crear un nuevo certificado aparece en la página Certificados, identificadores y perfiles.

    Captura de pantalla en la que se muestra la opción para cargar una solicitud de firma de certificado.

    En este área, cargará una solicitud de firma de certificado (CSR):

    1. En una pestaña nueva del explorador, siga esta página de ayuda de Apple para crear una CSR y guardar el archivo como Nombre de la aplicación.cer. Las instrucciones incluyen el uso del Asistente para certificados para solicitar un certificado y rellenar la información del certificado.

      Captura de pantalla en la que se muestran las selecciones para solicitar un certificado a una entidad de certificación.

      Captura de pantalla en la que se muestra un ejemplo de cómo rellenar la información del certificado.

    2. Arrastre el archivo .cer al área Elegir archivo. Después, seleccione Continuar en la esquina superior derecha.

      Captura de pantalla del área para elegir un archivo de certificado.

  7. Seleccione Descargar.

    Captura de pantalla del botón para descargar un certificado.

  8. Guarde el archivo localmente en .p12 formato.

    Captura de pantalla en la que se muestra el área para guardar un archivo de certificado.

  9. Abra el .cer archivo que descargó. En Acceso a cadena de claves, seleccione el certificado, haga clic con el botón derecho en él y, a continuación, exporte el certificado en .p12 formato.

  10. Vaya al centro de notificaciones. En Configuración, seleccione Apple (APNS). Después, rellene los detalles del certificado:

    • En Modo de autenticación, seleccione Certificado.
    • Para Cargar certificado, cargue el archivo .p12 que creó.
    • En Modo de aplicación, seleccione el modo según lo que necesite.

    Cuando termine de escribir toda la información, seleccione Guardar.

    Captura de pantalla en la que se muestra la configuración de la aplicación y el certificado para un centro de notificaciones.

Configuración de Xcode

  1. En Xcode, dirígete a Signing & Capabilities.

  2. Para agregar una capacidad, seleccione + Capability (+ Capacidad) y después seleccione Push Notifications (Notificaciones push).

  3. Para agregar otra funcionalidad, seleccione + Capability (+ Funcionalidad) y, a continuación, seleccione Background Modes (Modos en segundo plano).

  4. En Modos en segundo plano, seleccione Notificaciones remotas.

    Captura de pantalla en la que se muestra la adición de notificaciones push y modos de operación en segundo plano en Xcode.

  5. En Destino de pod: AzureCore, establezca Requerir solo la API App-Extension-Safe como No.

Implementar notificaciones push

Versión básica

Si quieres implementar una versión básica de las notificaciones push, debes registrarte para recibir notificaciones remotas con APNs. Para la implementación relacionada en AppDelegate.swift, consulte "App delegate Swift code" en GitHub Azure Samples.

Versión avanzada

Si quieres implementar una versión avanzada de las notificaciones push, debes incluir los siguientes elementos en tu aplicación. El motivo es que cifrar el contenido del cliente (por ejemplo, el contenido del mensaje de chat y el nombre para mostrar del remitente) en las cargas de notificaciones push requiere algunas soluciones alternativas.

Almacenamiento de datos para claves de cifrado

Crear almacenamiento de datos persistente en dispositivos iOS. Este almacenamiento de datos debe compartir datos entre la aplicación principal y las extensiones de aplicación.

En el código de ejemplo de este tutorial, elija App Groups como almacenamiento de datos como se indica a continuación:

  1. Agregue la funcionalidad Grupos de aplicaciones a los destinos de la aplicación (aplicación principal y extensiones de aplicación) mediante los pasos del artículo de Apple Adición de funcionalidades a la aplicación.

  2. Configure los grupos de aplicaciones mediante los pasos descritos en el artículo de Apple Configuración de grupos de aplicaciones. Asegúrese de que la aplicación principal y las extensiones de aplicación tienen el mismo nombre de contenedor.

Extensión de servicio de notificaciones

Implemente la extensión del servicio de notificaciones agrupada con la aplicación principal. Esta extensión de la aplicación descifra la carga de la notificación push cuando el dispositivo la recibe.

  1. Consulte Incorporación de una extensión de aplicación de servicio al proyecto en la documentación de Apple y siga los pasos.

  2. Consulte Implementación de los métodos de controlador de la extensión en la documentación de Apple.

Apple proporciona el código predeterminado para descifrar datos y puede seguir la estructura general de este tutorial. Pero como va usar el SDK de Chat para el descifrado, debe reemplazar la parte que empieza por // Try to decode the encrypted message data por lógica personalizada.

Para obtener la implementación relacionada en NotificationService.swift, consulte los ejemplos de Azure de GitHub Servicio de Notificaciones para Swift.

Implementación del protocolo PushNotificationKeyStorage

El protocolo PushNotificationKeyStorage es necesario para la versión avanzada de las notificaciones push. Puede usar la clase predeterminada AppGroupPushNotificationKeyStorage que proporciona el SDK de Chat. Si no usa Grupos de aplicaciones como almacenamiento de claves, o bien si quiere personalizar los métodos de almacenamiento de claves, cree una clase propia que se ajuste al protocolo PushNotificationKeyStorage.

PushNotificationKeyStorage define dos métodos:

  • onPersistKey(encryptionKey:expiryTime): este método conserva la clave de cifrado en el almacenamiento del dispositivo iOS del usuario. El SDK de chat establece 45 minutos como el tiempo de expiración de la clave de cifrado. Si quiere que las notificaciones push surtan efecto durante más de 45 minutos, tiene que programar la llamada chatClient.startPushNotifications(deviceToken:) con mayor frecuencia (por ejemplo, cada 15 minutos) para que se pueda registrar una nueva clave de cifrado antes de que expire la clave anterior.

  • onRetrieveKeys() -> [String]: este método recupera las claves válidas almacenadas anteriormente. Tiene la flexibilidad de proporcionar la personalización en función del almacenamiento de datos que haya elegido antes.

En la extensión del protocolo, el SDK de Chat proporciona una implementación del método decryptPayload(notification:) -> PushNotificationEvent que usted puede usar. Para obtener la implementación relacionada en NotificationService.swift, consulte GitHub Azure Samples: Notification Service for Swift.

Prueba de las notificaciones

  1. Cree una conversación de chat con el usuario A y el usuario B.

  2. Descargue el repositorio de GitHub de aplicaciones de ejemplo.

  3. Coloque los valores de <ACCESS_TOKEN> y <ACS_RESOURCE_ENDPOINT> del usuario A en AppSettings.plist.

  4. Ponga Habilitar Bitcode en No para dos objetivos de Pod: AzureCommunicationChat y Trouter.

  5. Conecte el dispositivo iOS al equipo Mac y ejecute el programa. Cuando se le pida que autorice las notificaciones push en el dispositivo, seleccione Permitir.

  6. Como Usuario B, envíe un mensaje de chat. Confirme que el usuario A recibe una notificación push en el dispositivo iOS.

Implementación de la renovación del registro

Para que Microsoft proporcione un servicio de chat seguro, el registro de notificaciones push en dispositivos iOS permanece válido durante solo 45 minutos. Para mantener la funcionalidad de las notificaciones push, debe implementar la renovación de registros en la aplicación cliente.

En este artículo se describen dos soluciones que están alineadas con las directrices oficiales de Apple. Se recomienda implementar ambas soluciones conjuntamente para aumentar su eficacia.

Nota:

Muchos factores pueden influir en la eficacia de cualquiera de las soluciones. Por ejemplo, el estado de la batería del dispositivo, las condiciones de red y las restricciones específicas de iOS podrían afectar a la capacidad de la aplicación para ejecutar tareas en segundo plano. Para más información, vea el vídeo Avances en la ejecución en segundo plano de la aplicación y el artículo de Apple Inserción de actualizaciones en segundo plano de la aplicación.

Solución 1: Tareas en segundo plano

Las tareas en segundo plano ofrecen una manera de realizar actividades incluso cuando la aplicación no está en primer plano. Al implementar una tarea en segundo plano, tu aplicación puede solicitar tiempo adicional para completar una tarea específica, como renovar el registro de notificaciones push.

En las secciones siguientes se describe cómo puede usar tareas en segundo plano para la renovación del registro.

Configuración de la actualización automática de tokens de acceso de usuario

Para garantizar el acceso ininterrumpido a los servicios de chat, debe mantener tokens de acceso de usuario válidos. Los tokens suelen tener un período de validez predeterminado de 24 horas, después del cual expiran y necesitan ser renovados. La implementación de un mecanismo de actualización automática garantiza que el token sea válido cada vez que se activa la aplicación de chat.

El SDK de chat simplifica la administración de tokens mediante la automatización del proceso de actualización cuando se implementa un actualizador de tokens de acceso personalizado. Complete los pasos siguientes a fin de configurar la aplicación de chat para admitir la actualización automática de tokens:

  1. Para ayudar a garantizar que la aplicación de chat mantiene el acceso de usuario continuo y seguro, debe implementar un nivel de servicio dedicado a emitir tokens. Una opción consiste en usar Azure Functions para este propósito.

    Para crear una función de Azure, vea el artículo Creación de un servicio de acceso de usuarios de confianza mediante Azure Functions. Describe cómo configurar la aplicación de funciones e implementar el código necesario para emitir tokens.

  2. Después de configurar la función de Azure:

    1. Obtenga la dirección URL del emisor de tokens desde Azure Portal. La aplicación de chat usa esta dirección URL para solicitar nuevos tokens.

    2. Cree e integre el actualizador de tokens en la aplicación de chat. Este componente solicita tokens nuevos e inicializa el cliente de chat para la renovación automática de tokens sin problemas.

      El código de ejemplo para el actualizador de tokens y su integración con el cliente de chat está disponible en el repositorio de GitHub de aplicaciones de ejemplo.

Habilitación y programación de tareas en segundo plano

Para activar y programar tareas en segundo plano en la aplicación de iOS, siga los pasos del artículo de Apple Uso de tareas en segundo plano para actualizar la aplicación.

Para obtener una implementación práctica, consulte GitHub Azure Samples Add Chat to your app (Agregar chat a la aplicación). En el ejemplo proporcionado se usa BGProcessingTask configurado para iniciarse en el plazo de un minuto, lo que muestra cómo capturar datos de forma eficaz en segundo plano.

Solución 2: Notificación remota

Una notificación remota es el mecanismo para que las aplicaciones iOS ejecuten tareas en segundo plano en respuesta a desencadenadores externos. Puede usar las notificaciones remotas para tareas como actualizar registros sin intervención del usuario.

Para usar las notificaciones remotas para ejecutar una tarea en segundo plano:

  1. Implemente un mecanismo de desencadenamiento.

    Por ejemplo, puede usar una aplicación de Azure Functions como mecanismo de desencadenamiento. Le permite ejecutar código en respuesta a varios desencadenantes, incluidas solicitudes HTTP, lo que hace que sea ideal para iniciar notificaciones push silenciosas. Recuerde implementar el registro de dispositivos al final para que la aplicación de funciones sepa dónde entregar las notificaciones.

  2. Configurar un centro de notificaciones.

    El servicio Azure Notification Hubs ofrece una infraestructura de notificaciones push escalable que permite enviar notificaciones a cualquier plataforma (iOS, Android, Windows, etc.) desde cualquier backend (en la nube o localmente).

    Puede reutilizar el mismo centro de notificaciones que usa para las notificaciones push normales. Si quiere configurar uno nuevo, vea la documentación de Azure Notification Hubs.

  3. Configuración de la aplicación de Azure Functions para notificaciones normales.

    Ajuste la aplicación de funciones para enviar notificaciones remotas periódicamente mediante el centro de notificaciones. Estas notificaciones se reenvían a APNs y se dirigen al dispositivo especificado. Para obtener más instrucciones, vea Enlace de salida de Notification Hubs para Azure Functions.

  4. Control de las notificaciones en la aplicación.

    En la aplicación iOS, implemente el método de instancia de aplicación para desencadenar una actualización automática del registro al recibir una notificación silenciosa.

Para más información, vea el artículo de Apple Configuración de un servidor de notificaciones remotas.