Skip to content


Integración push

Paso 1: Sube tu token de APN

Antes de que puedas enviar una notificación push de iOS utilizando Braze, tienes que cargar tu archivo de notificación push .p8, como se describe en la documentación para desarrolladores de Apple:

  1. En tu cuenta de desarrollador de Apple, ve a Certificates, Identifiers & Profiles.
  2. En Keys, selecciona All y haz clic en el botón de añadir (+) en la parte superior de la página.
  3. En Key Description, introduce un nombre único para la clave de firma.
  4. En Key Services, selecciona la casilla Apple Push Notification service (APNs) y, a continuación, haz clic en Continue. Haz clic en Confirm.
  5. Anota el ID de la clave. Haz clic en Download para generar y descargar la clave. Asegúrate de guardar el archivo descargado en un lugar seguro, ya que no puedes descargarlo más de una vez.
  6. En Braze, ve a Configuración > Configuración de la aplicación y carga el archivo .p8 en Apple Push Certificate. Puedes cargar tu certificado push de desarrollo o de producción. Para probar las notificaciones push después de que tu aplicación esté en vivo en la App Store, se recomienda configurar un espacio de trabajo separado para la versión de desarrollo de tu aplicación.
  7. Cuando se te solicite, introduce el ID del paquete, el ID de la clave y el ID del equipo de tu aplicación. También tendrás que especificar si quieres enviar notificaciones al entorno de desarrollo o de producción de tu aplicación, que se define por su perfil de aprovisionamiento.
  8. Cuando hayas terminado, selecciona Guardar.

Paso 2: Habilitar las capacidades de push

En la configuración de tu proyecto, asegúrate de que en la pestaña Capabilities, la capacidad Push Notifications esté activada.

En la configuración de tu proyecto, asegúrate de que en la pestaña Capabilities, la capacidad Push Notifications esté activada.

Si tienes certificados push de desarrollo y producción separados, asegúrate de desmarcar la casilla Automatically manage signing en la pestaña General. Esto te permitirá elegir diferentes perfiles de aprovisionamiento para cada configuración de compilación, ya que la función de firma automática de código de Xcode solo realiza la firma de desarrollo.

Configuración del proyecto Xcode mostrando la pestaña "General". En esta pestaña, la opción "Automatically manage signing" está desmarcada.

Paso 3: Registrarse para notificaciones push

El ejemplo de código apropiado debe incluirse dentro del método delegado application:didFinishLaunchingWithOptions: de tu aplicación para que los dispositivos de tus usuarios se registren con APN. Asegúrate de llamar a todo el código de integración push en el hilo principal de tu aplicación.

Braze también proporciona categorías push predeterminadas para la compatibilidad con botones de acción para notificación push, que deben añadirse manualmente a tu código de registro push. Consulta botones de acción para notificación push para conocer los pasos de integración adicionales.

Uso del framework UserNotification (iOS 10+)

Si estás utilizando el framework UserNotifications (recomendado) introducido en iOS 10, añade el siguiente código al método application:didFinishLaunchingWithOptions: del delegado de tu aplicación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max) {
  UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
  center.delegate = self;
  UNAuthorizationOptions options = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  if (@available(iOS 12.0, *)) {
  options = options | UNAuthorizationOptionProvisional;
  }
  [center requestAuthorizationWithOptions:options
                        completionHandler:^(BOOL granted, NSError * _Nullable error) {
                          [[Appboy sharedInstance] pushAuthorizationFromUserNotificationCenter:granted];
  }];
  [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
  UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
  [[UIApplication sharedApplication] registerForRemoteNotifications];
  [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if #available(iOS 10, *) {
  let center = UNUserNotificationCenter.current()
  center.delegate = self as? UNUserNotificationCenterDelegate
  var options: UNAuthorizationOptions = [.alert, .sound, .badge]
  if #available(iOS 12.0, *) {
    options = UNAuthorizationOptions(rawValue: options.rawValue | UNAuthorizationOptions.provisional.rawValue)
  }
  center.requestAuthorization(options: options) { (granted, error) in
    Appboy.sharedInstance()?.pushAuthorization(fromUserNotificationCenter: granted)
  }
  UIApplication.shared.registerForRemoteNotifications()
} else {
  let types : UIUserNotificationType = [.alert, .badge, .sound]
  let setting : UIUserNotificationSettings = UIUserNotificationSettings(types:types, categories:nil)
  UIApplication.shared.registerUserNotificationSettings(setting)
  UIApplication.shared.registerForRemoteNotifications()
}

Sin el framework UserNotifications

Si no estás utilizando el framework UserNotifications, añade el siguiente código al método application:didFinishLaunchingWithOptions: del delegado de tu aplicación:

1
2
3
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerForRemoteNotifications];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
1
2
3
4
let types : UIUserNotificationType = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert
var setting : UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil)
UIApplication.shared.registerUserNotificationSettings(setting)
UIApplication.shared.registerForRemoteNotifications()

Paso 4: Registrar tokens de notificaciones push con Braze

Una vez que se complete el registro en APN, se debe modificar el siguiente método para pasar el deviceToken resultante a Braze, de modo que el usuario quede habilitado para recibir notificaciones push:

Añade el siguiente código a tu método application:didRegisterForRemoteNotificationsWithDeviceToken::

1
[[Appboy sharedInstance] registerDeviceToken:deviceToken];

Añade el siguiente código al método application(_:didRegisterForRemoteNotificationsWithDeviceToken:) de tu aplicación:

1
Appboy.sharedInstance()?.registerDeviceToken(deviceToken)

Paso 5: Habilitar la gestión de push

El siguiente código pasa las notificaciones push recibidas a Braze y es necesario para registrar los análisis de push y la gestión de enlaces. Asegúrate de llamar a todo el código de integración push en el hilo principal de tu aplicación.

iOS 10+

Al compilar con iOS 10+, te recomendamos que integres el framework UserNotifications y hagas lo siguiente:

Añade el siguiente código al método application:didReceiveRemoteNotification:fetchCompletionHandler: de tu aplicación:

1
2
3
[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo
                      fetchCompletionHandler:completionHandler];

A continuación, añade el siguiente código al método (void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: de tu aplicación:

1
2
3
[[Appboy sharedInstance] userNotificationCenter:center
                 didReceiveNotificationResponse:response
                          withCompletionHandler:completionHandler];

Gestión de push en primer plano

Para mostrar una notificación push mientras la aplicación está en primer plano, implementa userNotificationCenter:willPresentNotification:withCompletionHandler::

1
2
3
4
5
6
7
8
9
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
       willPresentNotification:(UNNotification *)notification
         withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
  if (@available(iOS 14.0, *)) {
    completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
  } else {
    completionHandler(UNNotificationPresentationOptionAlert);
  }
}

Si se hace clic en la notificación en primer plano, se llamará al delegado de push de iOS 10 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:, y Braze registrará un evento de clic de push.

Añade el siguiente código al método application(_:didReceiveRemoteNotification:fetchCompletionHandler:) de tu aplicación:

1
2
3
Appboy.sharedInstance()?.register(application,
                                            didReceiveRemoteNotification: userInfo,
                                            fetchCompletionHandler: completionHandler)

A continuación, añade el siguiente código al método userNotificationCenter(_:didReceive:withCompletionHandler:) de tu aplicación:

1
2
3
Appboy.sharedInstance()?.userNotificationCenter(center,
                                               didReceive: response,
                                               withCompletionHandler: completionHandler)

Gestión de push en primer plano

Para mostrar una notificación push mientras la aplicación está en primer plano, implementa userNotificationCenter(_:willPresent:withCompletionHandler:):

1
2
3
4
5
6
7
8
9
func userNotificationCenter(_ center: UNUserNotificationCenter,
                              willPresent notification: UNNotification,
                              withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
  if #available(iOS 14.0, *) {
    completionHandler([.list, .banner]);
  } else {
    completionHandler([.alert]);
  }
}

Si se hace clic en la notificación en primer plano, se llamará al delegado de push de iOS 10 userNotificationCenter(_:didReceive:withCompletionHandler:), y Braze registrará un evento de clic de push.

Anterior a iOS 10

iOS 10 actualizó el comportamiento de modo que ya no llama a application:didReceiveRemoteNotification:fetchCompletionHandler: cuando se hace clic en un push. Por esta razón, si no actualizas a compilar con iOS 10+ y usas el framework UserNotifications, tienes que llamar a Braze desde ambos delegados de estilo antiguo, lo que supone un cambio respecto a nuestra integración anterior.

Para aplicaciones que compilen con SDK < iOS 10, utiliza las siguientes instrucciones:

Para habilitar el seguimiento de aperturas en las notificaciones push, añade el siguiente código al método application:didReceiveRemoteNotification:fetchCompletionHandler: de tu aplicación:

1
2
3
[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo
                      fetchCompletionHandler:completionHandler];

Para admitir los análisis de push en iOS 10, también debes añadir el siguiente código al método delegado application:didReceiveRemoteNotification: de tu aplicación:

1
2
[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo];

Para habilitar el seguimiento de aperturas en las notificaciones push, añade el siguiente código al método application(_:didReceiveRemoteNotification:fetchCompletionHandler:) de tu aplicación:

1
2
3
Appboy.sharedInstance()?.register(application,
  didReceiveRemoteNotification: userInfo,
  fetchCompletionHandler: completionHandler)

Para admitir los análisis de push en iOS 10, también debes añadir el siguiente código al método delegado application(_:didReceiveRemoteNotification:) de tu aplicación:

1
2
Appboy.sharedInstance()?.register(application,
  didReceiveRemoteNotification: userInfo)

Paso 6: Vinculación en profundidad

La vinculación en profundidad desde una notificación push hacia la aplicación se gestiona automáticamente a través de nuestra documentación estándar de integración push. Si quieres saber más sobre cómo añadir vínculos profundos a ubicaciones específicas de tu aplicación, consulta nuestros ejemplos avanzados.

Paso 7: Pruebas unitarias (opcional)

Para añadir cobertura de pruebas a los pasos de integración que acabas de seguir, implementa pruebas unitarias de push.

New Stuff!