AppboyKit (también conocido como SDK Objective-C) ya no recibe soporte y ha sido sustituido por el SDK Swift. Ya no recibirá nuevas características, correcciones de errores, actualizaciones de seguridad ni soporte técnico; sin embargo, la mensajería y los análisis seguirán funcionando con normalidad. Para obtener más información, consulta Presentación del nuevo SDK Swift de Braze.
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.
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.
Si has implementado una solicitud push personalizada como se describe en nuestras mejores prácticas push, asegúrate de que llamas al código siguiente cada vez que se ejecuta la aplicación después de que concedan permisos push a tu aplicación. Las aplicaciones tienen que volver a registrarse con los APN, ya que los token de los dispositivos pueden cambiar arbitrariamente.
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.
El siguiente ejemplo de código incluye la integración para la autenticación push provisional (líneas 5 y 6). Si no piensas utilizar la autorización provisional en tu aplicación, puedes eliminar las líneas de código que añaden UNAuthorizationOptionProvisional
a las opciones de requestAuthorization
.
Visita las opciones de notificación de iOS para saber más sobre la autenticación provisional push.
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()
}
Debes asignar tu objeto delegado utilizando center.delegate = self
de forma sincrónica antes de que tu aplicación termine de ejecutarse, preferiblemente en application:didFinishLaunchingWithOptions:
. Si no lo haces, puede que tu aplicación no reciba notificaciones push. Visita la documentación UNUserNotificationCenterDelegate
de Apple para obtener más información.
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)
Se llama al método delegado application:didRegisterForRemoteNotificationsWithDeviceToken:
cada vez que se llama a [[UIApplication sharedApplication] registerForRemoteNotifications]
. Si estás migrando a Braze desde otro servicio push y el dispositivo de tu usuario ya se ha registrado con APN, este método recogerá tokens de los registros existentes la próxima vez que se llame al método, y los usuarios no tendrán que volver a abrirse al push.
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.