Envía tu primer mensaje a una app en segundo plano

Para comenzar a usar FCM, crea el caso de uso más sencillo: enviar un mensaje de notificación desde el compositor de Notifications al dispositivo de un usuario específico cuando la app se encuentra en segundo plano en el dispositivo. En esta página se indican todos los pasos necesarios para lograrlo, desde la configuración hasta la verificación. Es posible que ya hayas realizado algunos de los pasos si configuraste una app cliente en iOS para FCM.

Agrega Firebase a tu proyecto de iOS

Es posible que hayas completado tareas que aparecen en esta sección si ya habilitaste otras funciones de Firebase para tu app. Para el compositor de Notifications específicamente, deberás subir tu certificado APNS y registrarte para las notificaciones remotas.

Requisitos previos

Antes de comenzar, debes configurar algunos elementos en tu entorno:

  • Xcode
    • 7.0 o una versión más reciente para Objective-C
    • 8.0 o una versión más reciente para Swift
  • un proyecto de Xcode orientado a iOS 7 o una versión más reciente
  • los proyectos Swift deben usar la versión 3.0 o una más reciente
  • el identificador del paquete de la app
  • CocoaPods 1.0.0 o una versión más reciente
  • Para Cloud Messaging:
    • un dispositivo iOS
    • una clave de autenticación de notificaciones push de Apple para tu cuenta de programador de Apple
    • en Xcode, habilita las notificaciones push en App > Capabilities

Si aún no tienes un proyecto de Xcode, puedes descargar uno de nuestros ejemplos de inicio rápido si solo quieres probar una función de Firebase. Si usas un inicio rápido, recuerda obtener el identificador de paquete en la configuración del proyecto, ya que lo necesitarás en el próximo paso.

Agrega Firebase a tu app

Es hora de agregar Firebase a tu app. Primero, necesitarás un proyecto y un archivo de configuración de Firebase para la app.

  1. Crea un proyecto en Firebase console si no lo hiciste antes. Si ya tienes un proyecto de Google existente asociado con tu app para dispositivos móviles, haz clic en Importar proyecto de Google. De lo contrario, haz clic en Crear proyecto nuevo.
  2. Haz clic en Agrega Firebase a tu app para iOS y sigue los pasos de configuración. Si estás importando un proyecto de Google existente, es posible que esto suceda en forma automática y solo tengas que descargar el archivo de configuración.
  3. Ingresa el ID del paquete de la app cuando se te solicite. Es importante que ingreses el ID del paquete que usa tu app. Esto solo se puede configurar cuando agregas una app a tu proyecto de Firebase.
  4. Para finalizar el proceso, descargarás un archivo GoogleService-Info.plist. Puedes volver a descargar este archivo en cualquier momento.
  5. Si aún no lo hiciste, copia esto en la raíz de tu proyecto de Xcode.

Agrega el SDK

Si estás configurando un proyecto nuevo, debes instalar el SDK. Es posible que ya hayas hecho esto como parte de la creación de un proyecto de Firebase.

Te recomendamos que uses CocoaPods para instalar las bibliotecas. Para instalar CocoaPods, sigue las instrucciones de instalación. Si prefieres no usar CocoaPods, puedes seguir las instrucciones que se proporcionan a continuación para integrar los marcos de trabajo del SDK directamente.

Si vas a descargar y ejecutar una de las muestras de inicio rápido, estas ya contienen el proyecto de Xcode y el Podfile, pero de todas formas deberás instalar los pods y descargar el archivo GoogleService-Info.plist. Si quieres integrar las bibliotecas de Firebase a uno de tus proyectos, debes agregar los pods para las bibliotecas que quieras usar.

  1. Si aún no tienes un proyecto de Xcode, crea uno ahora.

  2. Crea un Podfile si aún no tienes uno:

    $ cd your-project directory
    $ pod init
    
  3. Agrega los pods que quieras instalar. Puedes incluir un Pod en tu Podfile, de la siguiente forma:

    pod 'Firebase/Core'
    pod 'Firebase/Messaging'
    

    Esto agregará las bibliotecas que son necesarias para comenzar a usar Firebase en tu app de iOS junto con Google Analytics para Firebase. A continuación, podrás encontrar una lista de las subespecificaciones y los pods que están disponibles. Esto también se aborda en las guías de configuración específicas para las funciones.

  4. Instala los pods y abre el archivo .xcworkspace para ver el proyecto en Xcode.

    $ pod install
    $ open your-project.xcworkspace
    
  5. Descarga un archivo GoogleService-Info.plist de Firebase console y agrégalo a tu app.

Sube la clave de autenticación del APNS

Sube la clave de autenticación del APNS a Firebase. Si aún no tienes una clave de autenticación del APNS, consulta cómo configurar el APNS con FCM.

  1. Dentro de tu proyecto en Firebase console, selecciona el ícono de ajustes, selecciona Configuración del proyecto y, luego, la pestaña Cloud Messaging.

  2. En Clave de autenticación del APNS, bajo configuración de app de iOS, haz clic en el botón Subir.

  3. Busca la ubicación donde guardaste la clave, selecciónala y haz clic en Abrir. Agrega el ID de clave correspondiente (disponible en Certificados, identificadores y perfiles en el Centro de miembros programadores de Apple) y haz clic en Subir.

Inicializa Firebase en tu app

Debes agregar el código de inicialización de Firebase a tu aplicación. Importa el módulo de Firebase y configura una instancia compartida de la siguiente manera:

  1. Importa el módulo de Firebase en tu subclase UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de tu aplicación:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    

Regístrate para habilitar las notificaciones remotas

Durante el inicio o en el punto que desees del flujo de tu aplicación, registra tu app para habilitar las notificaciones remotas. Llama a registerForRemoteNotifications de la siguiente manera:

Swift

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 })
} else {
  let settings: UIUserNotificationSettings =
  UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

Objective-C

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9_x_Max) {
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
} else {
  // iOS 10 or later
  #if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions =
      UNAuthorizationOptionAlert
      | UNAuthorizationOptionSound
      | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) {
      }];
  #endif
}

[[UIApplication sharedApplication] registerForRemoteNotifications];

Accede al token de registro

Para enviar mensajes a un dispositivo específico, es necesario conocer el token de registro del dispositivo. Dado que debes ingresar el token en el compositor de Notifications para completar este instructivo, asegúrate de copiar el token o almacenarlo de forma segura cuando lo recuperes.

De forma predeterminada, el SDK de FCM genera un token de registro para la instancia de app del cliente en el arranque inicial de tu app. Al igual que el token de dispositivo de APN, este token te permite orientar mensajes de notificación a esta instancia de la app en particular.

Esta sección describe cómo recuperar el token y cómo supervisar los cambios que lo afectan. Debido a que el token se podría rotar después del primer inicio, se recomienda que recuperes el token de registro más reciente.

El token de registro puede cambiar en las siguientes situaciones:

  • La app se restablece en un dispositivo nuevo.
  • El usuario desinstala y vuelve a instalar la app.
  • El usuario borra los datos de la app.

Recupera el token de registro actual

Cuando necesites el token actual, recupéralo. Esto puede dar como resultado el valor nulo si el token no se genera aún.

Swift

let token = Messaging.messaging().fcmToken
print("FCM token: \(token ?? "")")

Objective-C

NSString *fcmToken = [FIRMessaging messaging].FCMToken;
NSLog(@"FCM registration token: %@", fcmToken);

Supervisa la generación de tokens

Para recibir notificaciones cada vez que el token se actualice, proporciona un delegado conforme al protocolo "FIRMessagingDelegate". El siguiente ejemplo registra el delegado y agrega el método de delegado apropiado:

Swift

func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
  print("Firebase registration token: \(fcmToken)")
}

Objective-C

- (void)messaging:(nonnull FIRMessaging *)messaging didRefreshRegistrationToken:(nonnull NSString *)fcmToken {
  // Note that this callback will be fired everytime a new token is generated, including the first
  // time. So if you need to retrieve the token as soon as it is available this is where that
  // should be done.
  NSLog(@"FCM registration token: %@", fcmToken);

  // TODO: If necessary send token to application server.
}

De manera alternativa, puedes escuchar para detectar una NSNotification llamada kFIRMessagingRegistrationTokenRefreshNotification en lugar de proporcionar un método de delegado. La propiedad [FIRMessaging messaging]. FCMToken siempre tiene el valor del token actual.

Envía un mensaje de notificación

  1. Instala y ejecuta la app en el dispositivo de destino. Tendrás que aceptar la solicitud de permiso para recibir notificaciones remotas.

  2. Asegúrate de que la app se encuentre en segundo plano en el dispositivo.

  3. Abre el compositor de Notifications y selecciona Nuevo mensaje.

  4. Ingresa el texto del mensaje.

  5. Selecciona Dispositivo único como destinatario del mensaje.

  6. En el campo Token de registro de FCM, ingresa el token de registro que obtuviste en una sección anterior de esta guía.

Después de hacer clic en Enviar mensaje, los dispositivos cliente de destino que tienen la app en segundo plano recibirán la notificación en el centro de notificaciones.

Próximos pasos

Para dejar atrás las notificaciones y agregar otros comportamientos más avanzados a la app, consulta:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.