IBM Cloud Docs
Creación y envío de notificaciones push a móviles iOS mediante Event Notifications

Creación y envío de notificaciones push a móviles iOS mediante Event Notifications

Cree un servicio Event Notifications, añada un destino de envío push para el servicio Apple Push Notification (APN) y envíe mensajes a dispositivos iOS.

¿Qué es Event Notifications?

Event Notifications es un servicio de enrutamiento de notificaciones de eventos que le notifica los eventos críticos que se producen en su cuenta IBM Cloud o desencadena acciones automatizadas mediante el uso de webhooks. Puede filtrar y enrutar notificaciones de eventos desde servicios IBM Cloud como Availability Monitoring, a correo electrónico, SMS, notificaciones push (FCM o APNs) y webhooks.

¿Cómo utilizan los clientes las notificaciones de envío push de iOS?

El diagrama siguiente muestra cómo los clientes utilizan las notificaciones de envío push de iOS.

utilizan los clientes las
push*

Objetivos

Esta guía de aprendizaje muestra cómo enviar notificaciones de envío push de la siguiente manera:

  • Cree una aplicación móvil con Event Notifications.
  • Obtenga credenciales de APNs.
  • Descargue el código y complete la configuración de las notificaciones.
  • Configure y envíe notificaciones de envío push de iOS a un dispositivo móvil.

Antes de empezar

Debe tener los requisitos previos siguientes aplicados:

  • Una cuenta de IBM Cloud. Si no tiene una, cree una cuenta de IBM Cloud.
  • Una instancia Event Notifications.
  • Una clave de API de IAM para permitir que el SDK acceda a su cuenta. Cree una aquí.
  • Xcode 9.3+
  • Swift 4.2+
  • iOS 10.0+

Crear una instancia de servicio de Event Notifications

  • Inicie sesión en su cuenta deIBM Cloud.
  • En el catálogoIBM Cloud, busca ' Event Notifications > Event Notifications.
  • Seleccione un Region de la lista de regiones soportadas y seleccione un pricing plan.
  • Proporcione un Service name.
  • Seleccione un resource group.
  • Acepte los acuerdos de licencia y los términos pulsando el recuadro de selección.
  • Pulse Create.

Obtener credenciales de APNs

Para dispositivos y aplicaciones iOS, el servicio de notificaciones push de Apple (APNs) permite a los desarrolladores de aplicaciones enviar notificaciones remotas desde la instancia del servicio Event Notifications de IBM Cloud (el proveedor) a dispositivos y aplicaciones de iOS. Los mensajes se envían a una aplicación de destino del dispositivo.

Debe obtener y configurar las credenciales de APNs. Los certificados de APNs se gestionan de forma segura mediante el servicio Event Notifications y se utilizan para conectarse al servidor APNs como proveedor.

Registro de un ID de aplicación

El ID de app (el identificador de paquete) es un identificador exclusivo que identifica una aplicación específica. Cada aplicación requiere un ID de app. Los servicios como el servicio de notificaciones de envío push se configuran en el ID de Aplicación.

  • Vaya al portal para desarrolladores de Apple y seleccione Certificados, identificadores y perfiles.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Vaya a Identifiers > Add identifier button.

    ![Botón](images/en-apns-identifier-button.png "" caption-side="bottom"}"){: caption="

  • Haga clic en añadir un nuevo botón ' Identifier.

    Añadir nuevo botón
    nuevo
    Identificador*

  • Seleccione la opción de ID de aplicación.

    App IDs
    IDs

  • Seleccione un tipo y pulse Continue.

    App ID type
    App ID type

  • Proporcione una cadena de caracteres para el prefijo de ID de app. Introduzca el nombre de la aplicación en el campo " Description ". Por ejemplo, la aplicación Event Notifications iOS.

  • Para el ' Bundle ID' , elija Explicit y proporcione un valor Bundle ID. Se recomienda que proporcione una cadena de estilo de dominio inverso. Por ejemplo, com.ibm.cloud.en.app.

    Create new App ID details
    Create new App ID details

  • Seleccione el recuadro Push Notifications desde Capacidades y pulse Continue.

    Activar las notificaciones
    las notificaciones

  • Vaya a través de los valores y pulse Register > Done.

Se ha registrado el ID de la app.

App ID
Newly created App ID

Crear un certificado SSL de APNs de desarrollo y distribución

Para poder obtener un certificado de APNs, debe generar en primer lugar una solicitud de firma de certificado (CSR) y enviarla a Apple, la entidad emisora de certificados (CA). La CSR contiene información que identifica a la empresa y a la clave pública y privada que utilice para firmar las notificaciones push de Apple. A continuación, genere el certificado SSL en el Portal de desarrollador de iOS. El certificado, junto con su clave pública y privada, se almacena en el Acceso de cadena de claves.

Puede utilizar APNs de dos maneras:

  • La modalidad de recinto de seguridad (sandbox) durante el desarrollo y pruebas.
  • La modalidad de producción al distribuir aplicaciones mediante App Store (u otros mecanismos de distribución de empresa).

Debe obtener certificados independientes para los entornos de desarrollo y de distribución. Los certificados están asociados con un ID de App para la app que es el destinatario de las notificaciones remotas. Para producción, puede crear hasta dos certificados. IBM Cloud utiliza los certificados para establecer una conexión SSL con APN.

Cree un certificado p12 de APN

  • Vaya al Portal de desarrolladores de Apple y seleccione Certificados, identificadores y perfiles.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • En Identifiers area, seleccione el ID de aplicación.

    Identifiers tab
    Identifiers tab

  • Seleccione el recuadro Push Notifications O BIEN seleccione la opción Edit.

    ![](images/en-apns-p12-push-notifications.png "de verificación de las notificaciones pushCasilla de verificación de las notificaciones pushCasilla " caption-side="bottom"} verificación de las notificaciones "){: caption="

    • En el panel de certificados SSL de desarrollo, pulse Crear certificado...
    • En el panel de certificados SSL de producción, pulse Crear certificado...

    ![Tipo de](images/en-apns-p12-certificate-type.png "de certificado*Tipo " caption-side="bottom"}"){: caption="

  • Utilice la aplicación Keychain Access en su Mac para crear una solicitud de firma de certificado (CSR).

  • En el menú, seleccione " Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority….

    Solicitar nuevo
    nuevo
    de certificado*

  • En Información de certificado, especifique la dirección de correo electrónico que está asociada con la cuenta de desarrollador de aplicaciones y un nombre común. Proporcione un nombre significativo que le ayude a identificar si es un certificado para el desarrollo (sandbox) o la distribución (producción); por ejemplo, sandbox-apns-certificado o production-apns-certificate.

  • Seleccione Saved to disk para descargar el archivo .certSigningRequest en el Mac y, a continuación, pulse Continue.

    ![Detalles del](images/en-apns-p12-certificate-details.png "del " caption-side="bottom"} del "){: caption="

  • En la opción de menú Save As, asigne un nombre al archivo .certSigningRequest, seleccione la ubicación donde se debe guardar el archivo y pulse Save.

    caption-side=bottom"
    Guardar archivo
    CSR*

  • Pulse Done. Ahora tiene una CSR.

    caption-side=bottom"
    CSR

  • Vuelva al portal para desarrolladores de Apple, en la opción Cargar archivo CSR, haga clic en Elegir archivo y seleccione el archivo " CertificateSigningRequest.certSigningRequest. Pulse Continue.

    caption-side=bottom"
    CSR*

  • Pulse Download. Se descarga el archivo aps_development.cer.

    caption-side=bottom"
    Descargar

  • Localice el certificado recién instalado. Efectúe una doble pulsación en el certificado para instalarlo en el Acceso de cadena de claves.

  • En su Mac, vaya a Keychain Access > My Certificates.

  • Seleccione el certificado y la clave privada y, a continuación, seleccione Export para convertir el certificado en el formato de intercambio de información personal (formato .p12).

    caption-side=bottom"
    Exportar

  • En el campo Save As, asigne al certificado un nombre significativo Por ejemplo, sandbox-apns.p12 o production-apns.p12, y pulse Save.

    caption-side=bottom"
    Guardar

  • En el campo Enter a password, especifique una contraseña para proteger los elementos exportados y, a continuación, pulse OK. Puede utilizar esta contraseña para configurar los valores de APNs en la consola del servicio Event Notifications.

    caption-side=bottom"
    Proteger

  • La aplicación Key Access le solicita que exporte la clave desde la pantalla de la cadena de claves. Introduzca su contraseña administrativa para que su Mac permita al sistema exportar estos elementos, y luego seleccione la opción Permitir siempre. Se genera un certificado .p12 en la ubicación seleccionada.

Cree una señal p8 de APN

  • Vaya al portal para desarrolladores de Apple y seleccione " Certificates, Identifiers & Profiles.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Vaya a la pestaña ' Keys.

    Keys tab
    Keys tab

  • Especifique Key Name y habilite los APN, pulse continue.

    P8 token details
    P8 token details

  • Pulse Register.

    Registrar p8
    p8

  • Asegúrese de descargar las claves en la nueva página redirigida tras el registro, ya que se trata de una actividad que se realiza una sola vez.

'KeyID ' es visible como parte del archivo y se muestra en la interfaz de usuario, este ' KeyID se utiliza para registrar el certificado APNS. TeamID es proporcionado por apple para la cuenta de desarrollador, se puede ver junto al nombre del equipo. el TeamID se utiliza para registrar el certificado APNS. el BundleID se puede registrar igual que el certificado P12.

Añadir un origen de API genérico

Siga estos pasos:

  • Vaya a la sección Sources del panel de control de Event Notifications.
  • Pulse Add y seleccione un origen de API.
  • Escriba un nombre y una descripción opcional y pulse Add.

Crear un destino de Event Notifications

Pulse Destinations en la consola de Event Notifications y añada los siguientes detalles de destino:

  • Name: añada un nombre para el destino.
  • Description: añada una descripción opcional para el destino.
  • Type: seleccione el tipo ' iOS Push Notifications ' de la lista desplegable.
  • Seleccione un plan de destino: Destino de preproducción o Destino de producción.
    • Pre-production destination-seleccione este destino como destino de envío de bajo coste, para los entornos de desarrollo y prueba.
    • Production destination-utilizar la capacidad completa de este destino. Dispositivos ilimitados y mensajes salientes permitidos.
  • Actualice las Credenciales Push iOS con los detalles basados en ' Authentication Type y seleccione ' Environment.
    • si el tipo de certificado es p8, cargue el archivo .p8 y proporcione KeyID, TeamID y BundleID.
    • si el tipo de certificado es " p12, cargue el certificado p12 y proporcione el certificado " password.
  • Pulse Add.

Crear un tema Event Notifications

Seleccione Topics en la consola de Event Notifications y pulse Create. Especifique los siguientes detalles del tema:

  • Name: especifique un nombre para el tema.
  • Description: añada una descripción opcional para el tema.
  • Source: seleccione un origen de la lista desplegable.
  • Event type: seleccione el tipo de suceso en la lista desplegable.
  • Event sub type seleccione un subtipo de suceso en la lista desplegable de subtipos de sucesos.
  • Severity: seleccione la gravedad en la lista desplegable de gravedad.
  • Advanced conditions: escriba sus propias condiciones personalizadas, que deben seguir las especificaciones de jsonpath.

Crear una suscripción de Event Notifications

Pulse Subscriptions en la consola de Event Notifications. Especifique los siguientes detalles la suscripción:

  • Pulse Click para visualizar el asistente de suscripción.
  • Complete los siguientes detalles de suscripción:
    • Subscription name: nombre de la suscripción.
    • Subscription description: añada una descripción opcional.
  • En la sección Subscribe to a topic, seleccione un tema en la lista desplegable y seleccione un destino en la lista desplegable de destino.
  • Destination type: seleccione el tipo en Destination y pulse Add.

Configurar el SDK de iOS de Event Notifications

El SDK de iOS permite a las aplicaciones de iOS recibir notificaciones de envío push. Complete los pasos siguientes para instalar el SDK de iOS de Event Notifications, inicializar el SDK y registrarse para las notificaciones de su aplicación iOS.

Instalación

La versión actual de este SDK es: 0.0.1

Para utilizar el SDK de destino de iOS Event Notifications, defina una dependencia que contenga las coordenadas del artefacto (ID de grupo, ID de artefacto y versión) para el servicio, de esta forma:

CocoaPods

use_frameworks!

target 'MyApp' do
   pod 'ENPushDestination', '~> 0.0.1'
end

Carthage

Para instalar ENPushDestination utilizando Carthage, añada lo siguiente a su archivo Cartfile.

github "IBM/event-notifications-destination-ios-sdk" ~> 0.0.1

A continuación, ejecute el siguiente comando para compilar las dependencias y los frameworks:

carthage update --platform iOS

Swift Package Manager

Añada lo siguiente al archivo Package.swift para identificar ENPushDestination como una dependencia. El gestor de paquetes clona ENPushDestination cuando construyes tu proyecto con swift build.

dependencies: [
   .package(url: "https://github.com/IBM/event-notifications-destination-ios-sdk", from: "0.0.1")
]

Instalación - Inicializar SDK

Complete los pasos siguientes para habilitar las aplicaciones iOS para recibir notificaciones.

  1. Añada las sentencias import en el archivo .swift.

    import ENPushDestination
    
  2. Inicializar el SDK de ENPushDestination

    let instanceGUID = "<instance_guid>>";
    let destinationID = "<instance_destination_id>";
    let apiKey = "<instance_apikey>";
    
    let enPush = ENPush.sharedInstance
    enPush.setCloudRegion(region: .usSouth)
    enPush.initialize(instanceGUID, destinationID, apiKey)
    
    • region: Región de la instancia de Event Notifications. Por ejemplo, Region.usSouth.

Registro de notificaciones

Utiliza la API ' ENPush.registerDevice() ' para registrar el dispositivo con destino iOS en el servicio Event Notifications.

Se admiten las siguientes opciones:

  • Regístrese sin ID de usuario:

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>") { response, statusCode, error in
       print(response?.id ?? "")
    }
    
  • Regístrese con ID de usuario: Para las notificaciones basadas en " userId ", el método de registro acepta un parámetro más: " userId.

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>", withUserId: "userId") { response, statusCode, error in
    
       print(response?.id ?? "")
    
    }
    

    El ' userId ' se utiliza para pasar el valor único ' userId ' para registrarse en Event Notifications.

Anulación del registro de notificaciones

Utilice los siguientes fragmentos de código para darse de baja de Event Notifications.

enPush.unregisterDevice { response, statusCode, error in
   /**.....*/
}

Para anular el registro del registro basado en UserId, debe llamar al método de registro. Consulte Register without userId option en Registro para notificaciones.

Event Notifications suscripciones de etiquetas de destino

Suscribirse a etiquetas

La API ' subscribe ' suscribe el dispositivo para una etiqueta determinada. Después de que el dispositivo esté suscrito a una etiqueta determinada, el dispositivo puede recibir notificaciones que se envían para dicho código.

Añada el siguiente fragmento de código a la aplicación móvil iOS para suscribirse a una lista de códigos.

// Subscribe to the given tag
enPush.subscribeToTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
});

Recuperar etiquetas suscritas

La API ' retrieveSubscriptionsWithCompletionHandler ' devuelve la lista de etiquetas a las que está suscrito el dispositivo. Utilice los siguientes fragmentos de código en la aplicación móvil para obtener la lista de suscripción.

// Get a list of tags that to which the device is subscribed.
enPush.retrieveSubscriptionsWithCompletionHandler { response, statusCode, error in
   /**.....*/
}

Anular suscripción de etiquetas

La API de unsubscribeFromTags elimina la suscripción de dispositivo de las etiquetas de lista. Utilice los siguientes fragmentos de código para permitir que sus dispositivos se den de baja de una etiqueta.

// unsubscibe from the given tag ,that to which the device is subscribed.
enPush.unsubscribeFromTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
}

Recepción de notificaciones push en dispositivos iOS

Para recibir notificaciones push en dispositivos iOS, añade el siguiente método Swift al ' appDelegate.swift de tu aplicación:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

   //UserInfo dictionary will contain data sent from the server
}

Opciones de notificación

Se da soporte a las siguientes opciones de notificación.

Notificaciones interactivas

  1. Para habilitar las notificaciones de envío push interactivas, los parámetros de acción de notificación deben pasarse como parte del objeto de notificación. A continuación se muestra un código de ejemplo para habilitar las notificaciones interactivas:
let actionOne = ENPushNotificationAction(identifierName: "FIRST", buttonTitle: "Accept", isAuthenticationRequired: false, defineActivationMode: .foreground)

let actionTwo = ENPushNotificationAction(identifierName: "SECOND", buttonTitle: "Reject", isAuthenticationRequired: false, defineActivationMode: .destructive)

let category = ENPushNotificationActionCategory(identifierName: "category", buttonActions: [actionOne, actionTwo])

let notificationOptions = ENPushClientOptions()
notificationOptions.setInteractiveNotificationCategories(categoryName: [category])
enPush.initialize(instanceGUID, destinationID, apiKey, notificationOptions)
  1. Implemente el método de devolución de llamada en AppDelegate.swift:

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
       switch response.actionIdentifier {
          case "Accept":
          print("Clicked Accept")
          case "Reject":
          print("Clicked Reject")
          default:
       }
       completionHandler()
    }
    

Este método de devolución de llamada se invoca cuando el usuario pulsa el botón de acción. La implementación de este método debe realizar las tareas que están asociadas con el identificador especificado y ejecutar el bloque en el parámetro completionHandler.

Adición del ID de dispositivo personalizado para el registro

Para enviar DeviceId utilice el método setDeviceId de la clase ENPushClientOptions.

let options = ENPushClientOptions();
options.setDeviceId(deviceId: "YOUR_DEVICE_ID");

Recuerde mantener el DeviceId personalizado ' unique ' para cada dispositivo.

Habilitación de notificaciones de medios enriquecidos

Las notificaciones de medios enriquecidos están soportadas en iOS 10 o posterior. Para recibir notificaciones de medios enriquecidos, implemente UNNotificationServiceExtension. La extensión interceptará y manejará la notificación de medios enriquecidos.

En el método didReceive() de la extensión de servicio, añada el código siguiente para recuperar el contenido de notificación de envío push enriquecido.

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
   self.contentHandler = contentHandler
   bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
   ENPushRichPushNotificationOptions.didReceive(request, withContentHandler: contentHandler)
}

Enviar notificaciones al dispositivo iOS

Utilice API de notificación de envío para enviar la notificación de envío push para el dispositivo iOS. Puede utilizar el SDK de administración de Nodo o Go en lugar de llamar directamente a la API.

caption-side=bottom"
Enviar

caption-side=bottom"
Recibir