Skip to content


Integración push

Paso 1: Sube tu token de APNs

%} developer_guide/swift/apns_token.md

Paso 2: Habilitar las capacidades push

En la configuración de tu proyecto, asegúrate de que, en la pestaña Capacidades, está alternada la opción Notificaciones push.

Si tienes certificados push de desarrollo y producción separados, asegúrate de desmarcar la casilla Gestionar automáticamente la firma en la pestaña General. Esto te permitirá elegir distintos perfiles de aprovisionamiento para cada configuración de compilación, ya que la característica de firma automática de código de Xcode sólo realiza la firma de desarrollador.

Configuración del proyecto Xcode mostrando la pestaña "general". En esta pestaña, la opción "Gestionar automáticamente la firma" está desmarcada.

Paso 3: Registro para notificaciones push

Para que el dispositivo de tus usuarios se registre en APN, debes incluir el código de ejemplo adecuado en el método delegado application:didFinishLaunchingWithOptions: de tu aplicación. Asegúrate de que llamas 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 el soporte del botón de acción push, que deben añadirse manualmente a tu código de registro push. Consulta los botones de acción para notificación push para conocer los pasos adicionales de la integración.

Utilizar el marco UserNotification (iOS 10+)

Si utilizas 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 marco UserNotifications

Si no utilizas 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 completado el registro de APN, hay que modificar el siguiente método para pasar el deviceToken resultante a Braze, de modo que el usuario quede habilitado para las 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 push

El siguiente código pasa las notificaciones push recibidas a Braze y es necesario para registrar los análisis 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+

Cuando construyas para 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];

Manejo del 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 push de iOS 10 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:, y Braze registrará un evento de clic 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)

Manejo del 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 push de iOS 10 userNotificationCenter(_:didReceive:withCompletionHandler:), y Braze registrará un evento de clic push.

Antes de iOS 10

iOS 10 actualizó el comportamiento de forma que ya no llama a application:didReceiveRemoteNotification:fetchCompletionHandler: cuando se hace clic en un push. Por esta razón, si no actualizas a la construcción en la versión 10 de iOS y posteriores y utilizas el framework UserNotifications, tendrás que llamar a Braze desde ambos delegados antiguos, lo que supone una ruptura con nuestra integración anterior.

Para aplicaciones que se construyen con versiones del SDK anteriores a la versión 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 soportar los análisis 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 soportar los análisis 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: Vínculos profundos

Los vínculos profundos desde un push a la aplicación se gestionan 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 concretas de tu aplicación, consulta nuestros casos de uso avanzado.

Paso 7: Pruebas unitarias (opcional)

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

¿QUÉ TAN ÚTIL FUE ESTA PÁGINA?
New Stuff!