Firebase y Notificaciones Push en iOS

En este art铆culo utilizaremos Firebase para lanzar notificaciones en una aplicaci贸n iOS.

Brevemente los pasos que seguiremos son: generar un certificado desde el portal de desarrollo de Apple,聽 crear un proyecto de Firebase, configurar nuestra aplicaci贸n y configurar el servidor de Firebase para lanzar nuestra primera notificaci贸n.

Generaci贸n del certificado.

Creaci贸n del certificado push desde cero.

Lo primero que debemos hacer es crear un archivo CSR. Para ello entramos en nuestra cuenta de desarrollo de Apple.

Apple Developer Menu

Entramos en Certificates, IDs & Profiles. Una vez dentro, en Identifiers seleccionamos App IDs.

Creamos un nuevo App ID usando el bot贸n +.

new App ID

En el description name pondremos el nombre de nuestra app:

Register App ID

Y en el campo App ID Suffix 聽se debe incluir el Bundle ID de nuestra aplicaci贸n (por ejemplo com.solidgeargroup.FirebaseDemoApp)

Recordemos que nos interesa activar las notificaciones push as铆 que tenemos que habilitar el servicio seleccionando Push Notifications.

Si ya ten铆amos un App ID para nuestra aplicaci贸n deber铆amos editarlo para activar las notificaciones push. Le seleccionaremos de la lista de App IDs y pulsaremos el bot贸n que aparece en la parte de abajo 鈥淓dit鈥.


Una vez seleccionado pulsamos el bot贸n 鈥淒one鈥

Una vez tengamos nuestro App ID crearemos el certificado SSL, para ello le seleccionamos y pulsamos el anteriormente mencionado bot贸n 鈥淓ditar鈥. Ahora en el apartado que ya tenemos habilitado creamos el certificado.

Push notifications certificate
Al pulsar en Create Certificate veremos que es necesario un Certificate Signing Request (fichero CSR). Para ello Apple nos indica c贸mo debemos hacerlo en la p谩gina que aparece:

Creating CSR

Generaci贸n de CSR

Siguiendo las instrucciones:

keychain CSR

Incluimos el mail y elegimos la opci贸n “Saved to disk”.

Certificate Assistant
Ahora subiremos el fichero CSR. Volvemos al Apple Developer center donde nos hab铆amos quedado y pulsamos 鈥淐ontinue鈥

En la nueva pantalla subiremos nuestro fichero CSR.

Subimos nuestro fichero usando el bot贸n 鈥淐hoose File…鈥 y ya tenemos el certificado listo para descargar.

Creaci贸n del certificado APN

Crearemos ahora el certificado para las push notifications, APN (Apple Push Notifications). Abrimos el certificado que nos descargamos en el paso anterior usando Keychain Access.

My certificatesElegimos nuestro certificado y lo exportamos usando el men煤 que se despliega al usar el bot贸n derecho.

Export Apple Development iOS

Lo almacenamos como un fichero con extensi贸n .p12聽 al que debemos introducir una contrase帽a.

password
Ya est谩, tenemos nuestro certificado para usar en Firebase.

Configuraci贸n de Firebase.

Creaci贸n del proyecto en Firebase y configuraci贸n necesaria en nuestra aplicaci贸n.

Entramos en https://firebase.google.com/ vamos a la consola en el bot贸n de arriba a la derecha

go to console
y a帽adimos un nuevo proyecto:

add project

add project

Dentro de nuestro nuevo proyecto pulsamos 鈥淐onfiguraci贸n del proyecto鈥

project configuration

Vemos como Firebase nos informa de que no tenemos ninguna aplicaci贸n a煤n en el proyecto. Pulsamos en el bot贸n iOS

Aparecer谩:

Add iOS app to Firebase

En el primer campo deber铆amos incluir el identificador de nuestra aplicaci贸n (Bundle ID) y pulsamos el bot贸n 鈥淩egistrar aplicaci贸n鈥. Ahora seguimos las instrucciones. Descargaremos el fichero .plist, que ser谩 necesario para nuestro proyecto en Xcode.

download plist

Debemos incluir este fichero en nuestro proyecto Xcode tal como se indica en la imagen superior. Ahora seguimos las instrucciones para a帽adir la librer铆a de Firebase a nuestro proyecto. Ya que nos encontramos en este punto vamos a a帽adir 鈥淔irebase/Messaging鈥 adem谩s de 鈥淔irebase/Core鈥. Para ello en el Podfile a帽adiremos la l铆nea:

pod 'Firebase/Messaging'

En el siguiente paso a帽adiremos el siguiente c贸digo a la clase AppDelegate de nuestra aplicaci贸n. Debemos importar Firebase en esta clase y a帽adir la l铆nea que se indica el m茅todo application.

adding firebase code

Ahora ejecutamos la aplicaci贸n para que Firebase compruebe que se est谩 comunicando con sus servidores. Es posible que el procedimiento de error, por lo tanto se puede saltar d谩ndole 鈥淪altar este paso鈥

Volvemos configuraci贸n y navegamos a mensajer铆a en la nube:

clow messaging

Para subir el certificado APNs, pulsamos 鈥淪ubir鈥 en la secci贸n Certificados APNs que corresponda, en nuestro caso en el primero, que es el de desarrollo. Para enviar la aplicaci贸n al App Store el certificado que deber铆amos subir es el de producci贸n.

app certificate

y subimos el certificado:

upload certificate

Ya hemos a帽adido el certificado, ahora en nuestra aplicaci贸n activamos las notificaciones push.

enable capabilities

A帽adimos el c贸digo para las notificaciones push. En la clase AppDelegate.swift incluiremos adem谩s del anterior import de Firebase los siguientes:

import UserNotifications
import FirebaseInstanceID
import FirebaseMessaging

Y a帽adimos los siguientes protocolos:

UNUserNotificationCenterDelegate, MessagingDelegate

Incluimos el siguiente m茅todo, requerido por el protocolo FIRMessagingDelegate:

  func applicationReceivedRemoteMessage(_ remoteMessage: MessagingRemoteMessage) {
    print(remoteMessage.appData)
}

Tras este m茅todo a帽adimos el siguiente, que nos servir谩 para obtener el identificador que usaremos para mandar nuestra notificaci贸n:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  InstanceID.instanceID().instanceID { (result, error) in
    if let error = error {
      print("Error: \(error)")
    } else if let result = result {
      print("Instance ID token: \(result.token)")
    }
  }
}

La 煤ltima modificaci贸n que debemos hacer es en el m茅todo :application(_:didFinishLaunchingWithOptions:):

if #available(iOS 10.0, *) {
    // For iOS 10 display notification (sent via APNS)
    UNUserNotificationCenter.current().delegate = self
    let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
    UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: {_, _ in })
    // For iOS 10 data message (sent via FCM)
    Messaging.messaging().delegate = self
} else {
    let settings: UIUserNotificationSettings =
    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
      application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
FirebaseApp.configure()

Al lanzar la aplicaci贸n nos pedir谩 permiso para habilitar las聽 notificaciones. Una vez lo permitamos podremos hacer la primera prueba.

Lanzando nuestra primera notificaci贸n.

Configuraci贸n del servidor de Firebase para lanzar nuestra primera notificaci贸n.

En Firebase y seleccionamos nuestro proyecto. En la parte de abajo pulsamos en 鈥淐loud Messaging鈥:

una vez en esta pantalla pulsamos en 鈥淪end your first message鈥:

cloud messaging

En la siguiente pantalla introducimos el texto que queremos que aparezca en la notificaci贸n:

notification 1

Y enviamos un mensaje de prueba:


Nos aparecer谩 un mensaje que nos indica que debemos agregar un token de registro FCM. El token aparecer谩 en la consola mientras ejecutemos la aplicaci贸n,聽 debido al segundo m茅todo en la clase AppDelegate. Incluimos nuestro token Instance ID token: e85TayizrJM:ADA91bEg3i30鈥 en el campo de texto 鈥淎帽ade un token de registro FCM鈥

pulsamos el bot贸n de a帽adir:

add button
y 鈥淭estar鈥:

test button

隆Listo! La notificaci贸n deber铆a aparecer en nuestro dispositivo. Otra opci贸n existente para el env铆o de notificaciones push a trav茅s de Firebase en iOS es usar APN Auth key en vez del certificado APN. Pero esto es algo que trataremos en otro art铆culo.

Deja un comentario

Responsable 禄 Solidgear.
Finalidad 禄 Gestionar los comentarios.
Legitimaci贸n 禄 Tu consentimiento.
Destinatarios 禄 Los datos que me facilitas estar谩n ubicados en los servidores SolidgearGroup dentro de la UE.
Derechos 禄 Podr谩s ejercer tus derechos, entre otros, a acceder, rectificar, limitar y suprimir tus datos.

驴Necesitas una estimaci贸n?

Calcula ahora