Notificaciones push
Las notificaciones push te permiten enviar notificaciones desde tu aplicación cuando se producen eventos importantes. Puedes enviar una notificación push cuando tengas nuevos mensajes instantáneos que entregar, alertas de noticias de última hora que enviar o el último episodio del programa de TV favorito de tu usuario listo para que lo descargue para verlo sin conexión. También son más eficientes que la obtención en segundo plano, ya que la aplicación solo se inicia cuando es necesario.

Si Redirect to web URL con Open web URL inside app no está seleccionado, pero el enlace aún se abre dentro de la aplicación, es posible que la aplicación esté gestionando la URL (por ejemplo, con enlaces universales en iOS o App Links en Android). Para abrir el enlace en el navegador, confirma que tu aplicación delega la URL al navegador del sistema cuando el usuario toca la notificación, o ajusta la gestión de URL de tu aplicación para que la acción de clic coincida con la configuración del panel de Braze. Consulta la documentación push de tu plataforma para saber cómo se configuran las acciones de clic y la gestión de URL.

Esta guía utiliza ejemplos de código del SDK Web de Braze 4.0.0+. Para actualizar a la última versión del SDK Web, consulta la Guía de actualización del SDK.
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK Web de Braze.
Protocolos de push
Las notificaciones push web se implementan utilizando el estándar push del W3C, compatible con la mayoría de los navegadores principales. Para más información sobre los estándares específicos del protocolo push y la compatibilidad de los navegadores, puedes consultar los recursos de Apple, Mozilla y Microsoft.
Configurar las notificaciones push
Paso 1: Configura tu prestador de servicios
En el archivo service-worker.js de tu proyecto, añade el siguiente fragmento de código y establece la opción de inicialización manageServiceWorkerExternally en true al inicializar el SDK Web.

Tu servidor web debe devolver Content-Type: application/javascript al servir el archivo de tu prestador de servicios. Además, si el archivo de tu prestador de servicios no se llama service-worker.js, tendrás que utilizar la opción de inicialización serviceWorkerLocation.
Paso 2: Registra el navegador
Para solicitar inmediatamente permisos push a un usuario para que su navegador pueda recibir notificaciones push, llama a braze.requestPushPermission(). Para comprobar primero si push es compatible con su navegador, llama a braze.isPushSupported().
También puedes enviar una solicitud push suave al usuario antes de solicitar el permiso push para mostrar tu propia interfaz de usuario relacionada con push.

En macOS, tanto Google Chrome como Google Chrome Helper (Alerts) deben estar habilitados por el usuario final en Configuración del sistema > Notificaciones antes de que se puedan mostrar las notificaciones push—incluso si se han concedido los permisos.
Paso 3: Desactiva skipWaiting (opcional)
El archivo del prestador de servicios de Braze llamará automáticamente a skipWaiting durante la instalación. Si deseas desactivar esta funcionalidad, añade el siguiente código a tu archivo del prestador de servicios, después de importar Braze:
Cancelar la suscripción de un usuario
Para cancelar la suscripción de un usuario, llama a braze.unregisterPush().

Las versiones recientes de Safari y Firefox requieren que llames a este método desde un controlador de eventos de corta duración (como un controlador de clic de botón o una solicitud push suave). Esto es coherente con las prácticas recomendadas de experiencia de usuario de Chrome para el registro de notificaciones push.
Dominios alternativos
Para integrar notificaciones push web, tu dominio debe ser seguro, lo que generalmente significa https, localhost y otras excepciones definidas en el estándar W3C de push. También necesitarás poder registrar un prestador de servicios en la raíz de tu dominio, o al menos poder controlar las cabeceras HTTP de ese archivo. Este artículo explica cómo integrar las notificaciones push web de Braze en un dominio alternativo.
Ejemplos
Si no puedes cumplir todos los criterios descritos en el estándar W3C de push, puedes usar este método para añadir un diálogo de solicitud push a tu sitio web. Esto puede ser útil si deseas permitir que tus usuarios realicen la adhesión voluntaria desde un sitio web http o una ventana emergente de extensión de navegador que impide que se muestre tu solicitud push.
Consideraciones
Ten en cuenta que, como muchas soluciones alternativas en la web, los navegadores evolucionan continuamente y este método puede no ser viable en el futuro. Antes de continuar, asegúrate de que:
- Posees un dominio seguro independiente (
https://) y tienes permisos para registrar un prestador de servicios en ese dominio. - Los usuarios han iniciado sesión en tu sitio web, lo que garantiza que los tokens de notificaciones push coincidan con el perfil correcto.

No puedes usar este método para implementar notificaciones push para Shopify. Shopify eliminará automáticamente las cabeceras necesarias para entregar push de esta manera.
Configurar un dominio push alternativo
Para que el siguiente ejemplo sea claro, usaremos http://insecure.com y https://secure.com como nuestros dos dominios con el objetivo de que los visitantes se registren para push en http://insecure.com. Este ejemplo también podría aplicarse a un esquema chrome-extension:// para la página emergente de una extensión de navegador.
Paso 1: Iniciar el flujo de solicitud
En insecure.com, abre una nueva ventana hacia tu dominio seguro usando un parámetro de URL para pasar el ID externo de Braze del usuario actualmente conectado.
http://insecure.com
<button id="opt-in">Opt-In For Push</button>
<script>
// the same ID you would use with `braze.changeUser`:
const user_id = getUserIdSomehow();
// pass the user ID into the secure domain URL:
const secure_url = `https://secure.com/push-registration.html?external_id=${user_id}`;
// when the user takes some action, open the secure URL in a new window
document.getElementById("opt-in").onclick = function(){
if (!window.open(secure_url, 'Opt-In to Push', 'height=500,width=600,left=150,top=150')) {
window.alert('The popup was blocked by your browser');
} else {
// user is shown a popup window
// and you can now prompt for push in this window
}
}
</script>
Paso 2: Registrarse para push
En este punto, secure.com abrirá una ventana emergente en la que puedes inicializar el SDK web de Braze para el mismo ID de usuario y solicitar el permiso del usuario para push web.
https://secure.com/push-registration.html
Paso 3: Comunicación entre dominios (opcional)
Ahora que los usuarios pueden realizar la adhesión voluntaria desde este flujo de trabajo que se origina en insecure.com, puede que desees modificar tu sitio en función de si el usuario ya ha dado su consentimiento o no. No tiene sentido pedirle al usuario que se registre para push si ya lo ha hecho.
Puedes usar iFrames y la API postMessage para comunicarte entre tus dos dominios.
insecure.com
En nuestro dominio insecure.com, le pediremos al dominio seguro (donde push está realmente registrado) información sobre el registro push del usuario actual:
<!-- Create an iframe to the secure domain and run getPushStatus onload-->
<iframe id="push-status" src="https://secure.com/push-status.html" onload="getPushStatus()" style="display:none;"></iframe>
<script>
function getPushStatus(event){
// send a message to the iframe asking for push status
event.target.contentWindow.postMessage({type: 'get_push_status'}, 'https://secure.com');
// listen for a response from the iframe's domain
window.addEventListener("message", (event) => {
if (event.origin === "http://insecure.com" && event.data.type === 'set_push_status') {
// update the page based on the push permission we're told
window.alert(`Is user registered for push? ${event.data.isPushPermissionGranted}`);
}
}
}
</script>
secure.com/push-status.html
Preguntas frecuentes (FAQ)
Prestadores de servicios
¿Qué pasa si no puedo registrar un prestador de servicios en el directorio raíz?
De forma predeterminada, un prestador de servicios solo puede utilizarse dentro del mismo directorio en el que está registrado. Por ejemplo, si tu archivo de prestador de servicios existe en /assets/service-worker.js, solo sería posible registrarlo dentro de example.com/assets/* o un subdirectorio de la carpeta assets, pero no en tu página de inicio (example.com/). Por esta razón, se recomienda alojar y registrar el prestador de servicios en el directorio raíz (como https://example.com/service-worker.js).
Si no puedes registrar un prestador de servicios en tu dominio raíz, un enfoque alternativo es utilizar el encabezado HTTP Service-Worker-Allowed al servir tu archivo de prestador de servicios. Al configurar tu servidor para que devuelva Service-Worker-Allowed: / en la respuesta del prestador de servicios, esto indicará al navegador que amplíe el alcance y permita su uso desde un directorio diferente.
¿Puedo crear un prestador de servicios utilizando un Tag Manager?
No, los prestadores de servicios deben alojarse en el servidor de tu sitio web y no pueden cargarse a través de Tag Manager.
Seguridad del sitio
¿Se requiere HTTPS?
Sí. Los estándares web requieren que el dominio que solicita permiso para notificaciones push sea seguro.
¿Cuándo se considera un sitio “seguro”?
Un sitio se considera seguro si coincide con uno de los siguientes patrones de origen seguro. Las notificaciones push web de Braze se basan en este estándar abierto, por lo que se previenen los ataques de intermediario (man-in-the-middle).
(https, , *)(wss, *, *)(, localhost, )(, .localhost, *)(, 127/8, )(, ::1/128, *)(file, *, —)(chrome-extension, *, —)
¿Qué pasa si no se dispone de un sitio seguro?
Aunque la mejor práctica del sector es hacer que todo tu sitio sea seguro, los clientes que no puedan asegurar el dominio de su sitio pueden solucionar el requisito utilizando un modal seguro. Consulta más información en nuestra guía sobre el uso de dominio push alternativo o mira una demostración funcional.
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK de Braze para Android.
Características integradas
Las siguientes características están integradas en el SDK de Braze para Android. Para utilizar cualquier otra característica de notificaciones push, necesitarás configurar las notificaciones push en tu aplicación.
| Característica | Descripción |
|---|---|
| Push Stories | Las Push Stories de Android están integradas en el SDK de Braze para Android de forma predeterminada. Para saber más, consulta Push Stories. |
| Push Primers | Las campañas de push primer animan a tus usuarios a habilitar las notificaciones push en su dispositivo para tu aplicación. Esto se puede hacer sin personalización del SDK utilizando nuestro push primer sin código. |
Acerca del ciclo de vida de las notificaciones push
El siguiente diagrama de flujo muestra cómo Braze gestiona el ciclo de vida de las notificaciones push, como las solicitudes de permiso, la generación de tokens y la entrega de mensajes.
---
config:
theme: neutral
---
flowchart TD
%% Permission flow
subgraph Permission[Push Permissions]
B{Android version of the device?}
B -->|Android 13+| C["requestPushPermissionPrompt() called"]
B -->|Android 12 and earlier| D[No permissions required]
%% Connect Android 12 path to Braze state
D --> H3[Braze: user subscription state]
H3 --> J3[Defaults to 'subscribed' when user profile created]
C --> E{Did the user grant push permission?}
E -->|Yes| F[POST_NOTIFICATIONS permission granted]
E -->|No| G[POST_NOTIFICATIONS permission denied]
%% Braze subscription state updates
F --> H1[Braze: user subscription state]
G --> H2[Braze: user subscription state]
H1 --> I1{Automatically opt in after permission granted?}
I1 -->|true| J1[Set to 'opted-in']
I1 -->|false| J2[Remains 'subscribed']
H2 --> K1[Remains 'subscribed'<br/>or 'unsubscribed']
%% Subscription state legend
subgraph BrazeStates[Braze subscription states]
L1['Subscribed' - default state<br/>when user profile created]
L2['Opted-in' - user explicitly<br/>wants push notifications]
L3['Unsubscribed' - user explicitly<br/>opted out of push]
end
%% Note about user-level states
note1[Note: These states are user-level<br/>and apply across all devices for the user]
%% Connect states to legend
J1 -.-> L2
J2 -.-> L1
J3 -.-> L1
K1 -.-> L3
note1 -.-> BrazeStates
end
%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px
class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass
---
config:
theme: neutral
---
flowchart TD
%% Token generation flow
subgraph Token[Token Generation]
H["Braze SDK initialized"] --> Q{Is FCM auto-registration enabled?}
Q -->|Yes| L{Is required configuration present?}
Q -->|No| M[No FCM token generated]
L -->|Yes| I[Generate FCM token]
L -->|No| M
I --> K[Register token with Braze]
%% Configuration requirements
subgraph Config[Required configuration]
N['google-services.json' file is present]
O['com.google.firebase:firebase-messaging' in gradle]
P['com.google.gms.google-services' plugin in gradle]
end
%% Connect config to check
N -.-> L
O -.-> L
P -.-> L
end
%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px
class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass
---
config:
theme: neutral
fontSize: 10
---
flowchart TD
subgraph Display[Push Display]
%% Push delivery flow
W[Push sent to FCM servers] --> X{Did FCM receive push?}
X -->|App is terminated| Y[FCM cannot deliver push to the app]
X -->|Delivery conditions met| X1[App receives push from FCM]
X1 --> X2[Braze SDK receives push]
X2 --> R[Push type?]
%% Push Display Flow
R -->|Standard push| S{Is push permission required?}
R -->|Silent push| T[Braze SDK processes silent push]
S -->|Yes| S1{Did the user grant push permission?}
S -->|No| V[Notification is shown to the user]
S1 -->|Yes| V
S1 -->|No| U[Notification is not shown to the user]
end
%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px
class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass
Configurar las notificaciones push

Para ver una aplicación de ejemplo que usa FCM con el SDK de Braze para Android, consulta Braze: Firebase Push Sample App.
Límites de velocidad
La API de Firebase Cloud Messaging (FCM) tiene un límite de velocidad predeterminado de 600 000 solicitudes por minuto. Si alcanzas este límite, Braze lo intentará de nuevo automáticamente en unos minutos. Para solicitar un aumento, ponte en contacto con el soporte de Firebase.
Paso 1: Añadir Firebase a tu proyecto
Primero, añade Firebase a tu proyecto Android. Para obtener instrucciones paso a paso, consulta la guía de configuración de Firebase de Google.
Paso 2: Añadir Cloud Messaging a tus dependencias
A continuación, añade la biblioteca Cloud Messaging a las dependencias de tu proyecto. En tu proyecto Android, abre build.gradle y luego añade la siguiente línea a tu bloque dependencies.
implementation "google.firebase:firebase-messaging:+"
Tus dependencias deberían tener un aspecto similar al siguiente:
dependencies {
implementation project(':android-sdk-ui')
implementation "com.google.firebase:firebase-messaging:+"
}
Paso 3: Habilitar la API de Firebase Cloud Messaging
En Google Cloud, selecciona el proyecto que usa tu aplicación Android y luego habilita la API de Firebase Cloud Messaging.

Paso 4: Crear una cuenta de servicio
A continuación, crea una nueva cuenta de servicio para que Braze pueda realizar llamadas autorizadas a la API al registrar tokens de FCM. En Google Cloud, ve a Service Accounts y luego selecciona tu proyecto. En la página Service Accounts, selecciona Create Service Account.

Introduce un nombre, un ID y una descripción para la cuenta de servicio, y luego selecciona Create and continue.
En el campo Role, busca y selecciona Firebase Cloud Messaging API Admin en la lista de roles. Para un acceso más restrictivo, crea un rol personalizado con el permiso cloudmessaging.messages.create y selecciónalo de la lista en su lugar. Cuando hayas terminado, selecciona Done.

Asegúrate de seleccionar Firebase Cloud Messaging API Admin, no Firebase Cloud Messaging Admin.

Paso 5: Generar credenciales JSON
A continuación, genera credenciales JSON para tu cuenta de servicio de FCM. En Google Cloud IAM & Admin, ve a Service Accounts y luego selecciona tu proyecto. Localiza la cuenta de servicio de FCM que creaste anteriormente y selecciona Actions > Manage Keys.

Selecciona Add Key > Create new key.

Elige JSON y luego selecciona Create. Si creaste tu cuenta de servicio usando un ID de proyecto de Google Cloud diferente al ID de tu proyecto de FCM, tendrás que actualizar manualmente el valor asignado a project_id en tu archivo JSON.
Asegúrate de recordar dónde descargaste la clave—la necesitarás en el siguiente paso.


Las claves privadas podrían suponer un riesgo de seguridad si se ven comprometidas. Almacena tus credenciales JSON en un lugar seguro por ahora—eliminarás tu clave después de subirla a Braze.
Paso 6: Subir tus credenciales JSON a Braze
A continuación, sube tus credenciales JSON a tu panel de Braze. En Braze, selecciona Configuración > Configuración de la aplicación.

En la sección Push Notification Settings de tu aplicación Android, elige Firebase, luego selecciona Upload JSON File y sube las credenciales que generaste anteriormente. Cuando hayas terminado, selecciona Save.


Las claves privadas podrían suponer un riesgo de seguridad si se ven comprometidas. Ahora que tu clave se ha subido a Braze, elimina el archivo que generaste anteriormente.
Paso 7: Configurar el registro automático de tokens
Cuando uno de tus usuarios acepta las notificaciones push, tu aplicación necesita generar un token de FCM en su dispositivo antes de que puedas enviarle notificaciones push. Con el SDK de Braze, puedes habilitar el registro automático de tokens de FCM para el dispositivo de cada usuario en los archivos de configuración de Braze de tu proyecto.
Primero, ve a Firebase Console, abre tu proyecto y selecciona Settings > Project settings.

Selecciona Cloud Messaging y luego, en Firebase Cloud Messaging API (V1), copia el número del campo Sender ID.

A continuación, abre tu proyecto de Android Studio y usa tu Firebase Sender ID para habilitar el registro automático de tokens de FCM dentro de tu braze.xml o BrazeConfig.
Para configurar el registro automático de tokens de FCM, añade las siguientes líneas a tu archivo braze.xml:
<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>
Sustituye FIREBASE_SENDER_ID por el valor que copiaste de la configuración de tu proyecto de Firebase. Tu braze.xml debería tener un aspecto similar al siguiente:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">12345ABC-6789-DEFG-0123-HIJK456789LM</string>
<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">603679405392</string>
</resources>
Para configurar el registro automático de tokens de FCM, añade las siguientes líneas a tu BrazeConfig:
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("FIREBASE_SENDER_ID")
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("FIREBASE_SENDER_ID")
Sustituye FIREBASE_SENDER_ID por el valor que copiaste de la configuración de tu proyecto de Firebase. Tu BrazeConfig debería tener un aspecto similar al siguiente:
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setApiKey("12345ABC-6789-DEFG-0123-HIJK456789LM")
.setCustomEndpoint("sdk.iad-01.braze.com")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("603679405392")
.build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
.setApiKey("12345ABC-6789-DEFG-0123-HIJK456789LM")
.setCustomEndpoint("sdk.iad-01.braze.com")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("603679405392")
.build()
Braze.configure(this, brazeConfig)

Si prefieres registrar los tokens de FCM manualmente, establece la propiedad registeredPushToken en la instancia de Braze dentro del método onCreate() de tu aplicación.
// Kotlin
Braze.getInstance(context).registeredPushToken = "FCM_TOKEN"
// Java
Braze.getInstance(context).setRegisteredPushToken("FCM_TOKEN");
Usar múltiples proyectos de Firebase
Si tu aplicación usa múltiples proyectos de Firebase, sigue estos pasos:
- Mantén el push de Braze en el proyecto de Firebase predeterminado inicializado desde el archivo
google-services.jsonde tu aplicación. - Si usas un servicio de mensajería de Firebase personalizado, completa Registrar ID de instalación en servicios de mensajería de Firebase personalizados.
- Si tu aplicación obtiene un token de push de otra forma, establece manualmente
registeredPushTokencomo se muestra en el consejo anterior.

Firebase Cloud Messaging no tiene una API compatible para obtener un token de un FirebaseApp que inicialices manualmente. Las devoluciones de llamada de FirebaseMessagingService como onNewToken y onRegistered solo se activan para el proyecto predeterminado. Para más información, consulta Configurar múltiples proyectos en la documentación de Firebase.
Para obtener detalles sobre versiones, consulta el Registro de cambios del SDK.
Paso 8: Eliminar las solicitudes automáticas en tu clase de aplicación
Para evitar que Braze desencadene solicitudes de red innecesarias cada vez que envíes notificaciones push silenciosas, elimina cualquier solicitud de red automática configurada en el método onCreate() de tu clase Application. Para más información, consulta Referencia para desarrolladores Android: Application.
Mostrar notificaciones
Paso 1: Registrar el servicio de mensajería Firebase de Braze
Puedes crear un servicio de mensajería Firebase nuevo, existente o que no sea de Braze. Elige el que mejor se adapte a tus necesidades específicas.
Braze incluye un servicio para gestionar la recepción de push y las intenciones de apertura. Nuestra clase BrazeFirebaseMessagingService deberá registrarse en tu AndroidManifest.xml:
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Nuestro código de notificación también utiliza BrazeFirebaseMessagingService para gestionar el seguimiento de apertura y acción de clic. Este servicio debe registrarse en el AndroidManifest.xml para funcionar correctamente. Además, recuerda que Braze añade un prefijo con una clave única a las notificaciones de nuestro sistema, de modo que solo se renderizan las notificaciones enviadas desde nuestros sistemas. Puedes registrar servicios adicionales por separado para renderizar notificaciones enviadas desde otros servicios de FCM. Consulta AndroidManifest.xml en la aplicación de ejemplo de push con Firebase.

Antes del SDK de Braze 3.1.1, se utilizaba AppboyFcmReceiver para gestionar el push de FCM. La clase AppboyFcmReceiver debe eliminarse de tu manifiesto y sustituirse por la integración anterior.
Si ya tienes un servicio de mensajería Firebase registrado, puedes pasar objetos RemoteMessage a Braze a través de BrazeFirebaseMessagingService.handleBrazeRemoteMessage(). Este método solo mostrará una notificación si el objeto RemoteMessage se originó en Braze y lo ignorará de forma segura en caso contrario.
Registrar los ID de instalación en servicios de mensajería Firebase personalizados
Si utilizas firebase-messaging v25.1.0 o posterior, el registro de Firebase utiliza el ID de instalación de Firebase. En tu servicio de mensajería Firebase personalizado, sobrescribe onRegistered y configura registeredPushToken.
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onRegistered(String installationId) {
super.onRegistered(installationId);
Braze.getInstance(this).setRegisteredPushToken(installationId);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
// This Remote Message originated from Braze and a push notification was displayed.
// No further action is needed.
} else {
// This Remote Message did not originate from Braze.
// No action was taken and you can safely pass this Remote Message to other handlers.
}
}
}
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onRegistered(installationId: String) {
super.onRegistered(installationId)
Braze.getInstance(this).registeredPushToken = installationId
}
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
super.onMessageReceived(remoteMessage)
if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
// This Remote Message originated from Braze and a push notification was displayed.
// No further action is needed.
} else {
// This Remote Message did not originate from Braze.
// No action was taken and you can safely pass this Remote Message to other handlers.
}
}
}
Si tienes otro servicio de mensajería Firebase que también quieras utilizar, puedes especificar un servicio de mensajería Firebase alternativo al que llamar si tu aplicación recibe un push que no sea de Braze.
En tu braze.xml, especifica:
<bool name="com_braze_fallback_firebase_cloud_messaging_service_enabled">true</bool>
<string name="com_braze_fallback_firebase_cloud_messaging_service_classpath">com.company.OurFirebaseMessagingService</string>
o configúralo mediante configuración en tiempo de ejecución:
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setFallbackFirebaseMessagingServiceEnabled(true)
.setFallbackFirebaseMessagingServiceClasspath("com.company.OurFirebaseMessagingService")
.build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
.setFallbackFirebaseMessagingServiceEnabled(true)
.setFallbackFirebaseMessagingServiceClasspath("com.company.OurFirebaseMessagingService")
.build()
Braze.configure(this, brazeConfig)
Paso 2: Adaptar los iconos pequeños a las directrices de diseño
Para información general sobre los iconos de notificación de Android, consulta la Descripción general de las notificaciones.
A partir de Android N, debes actualizar o eliminar los activos de iconos pequeños de notificación que incluyan color. El sistema Android (no el SDK de Braze) ignora todos los canales no alfa y de transparencia en los iconos de acción y el icono pequeño de notificación. En otras palabras, Android convertirá todas las partes de tu icono pequeño de notificación a monocromo, excepto las regiones transparentes.
Para crear un activo de icono pequeño de notificación que se muestre correctamente:
- Elimina todos los colores de la imagen excepto el blanco.
- Todas las demás regiones no blancas del activo deben ser transparentes.

Un síntoma común de un activo incorrecto es que el icono pequeño de notificación se renderice como un cuadrado monocromo sólido. Esto se debe a que el sistema Android no puede encontrar ninguna región transparente en el activo del icono pequeño de notificación.
Los siguientes iconos grande y pequeño son ejemplos de iconos diseñados correctamente:
![]()
Paso 3: Configurar los iconos de notificación
Especificar iconos en braze.xml
Braze te permite configurar tus iconos de notificación especificando recursos drawable en tu braze.xml:
<drawable name="com_braze_push_small_notification_icon">REPLACE_WITH_YOUR_ICON</drawable>
<drawable name="com_braze_push_large_notification_icon">REPLACE_WITH_YOUR_ICON</drawable>
Es obligatorio establecer un icono pequeño de notificación. Si no lo configuras, Braze utilizará por defecto el icono de la aplicación como icono pequeño de notificación, lo que puede no verse de forma óptima.
Establecer un icono grande de notificación es opcional pero recomendable.
Especificar el color de acento del icono
El color de acento del icono de notificación puede sobrescribirse en tu braze.xml. Si no se especifica el color, el predeterminado es el mismo gris que Lollipop utiliza para las notificaciones del sistema.
<integer name="com_braze_default_notification_accent_color">0xFFf33e3e</integer>
También puedes utilizar opcionalmente una referencia de color:
<color name="com_braze_default_notification_accent_color">@color/my_color_here</color>
Paso 4: Añadir vínculos profundos
Habilitar la apertura automática de vínculos profundos
Para que Braze abra automáticamente tu aplicación y cualquier vínculo profundo cuando se pulse una notificación push, configura com_braze_handle_push_deep_links_automatically como true en tu braze.xml:
<bool name="com_braze_handle_push_deep_links_automatically">true</bool>
Este indicador también se puede configurar mediante configuración en tiempo de ejecución:
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setHandlePushDeepLinksAutomatically(true)
.build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
.setHandlePushDeepLinksAutomatically(true)
.build()
Braze.configure(this, brazeConfig)
Si deseas gestionar los vínculos profundos de forma personalizada, deberás crear una devolución de llamada push que escuche las intenciones de push recibido y abierto desde Braze. Para obtener más información, consulta Usar una devolución de llamada para eventos push.
Gestionar notificaciones en primer plano
De forma predeterminada, cuando una notificación push llega mientras tu aplicación está en primer plano en Android, el sistema la muestra automáticamente. Para que Braze procese la carga útil de la notificación push (para el seguimiento de análisis, la gestión de vínculos profundos y el procesamiento personalizado), enruta los datos push entrantes a Braze dentro de tu método FirebaseMessagingService.onMessageReceived.
Cómo funciona
Cuando llamas a BrazeFirebaseMessagingService.handleBrazeRemoteMessage, Braze determina si la carga útil es una notificación push de Braze y, de ser así, crea y muestra la notificación con el método NotificationManagerCompat. A diferencia de iOS, Android muestra las notificaciones independientemente de si la aplicación está en primer plano o en segundo plano.
package com.example.push;
import com.braze.push.BrazeFirebaseMessagingService;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
// Let Braze process the payload and display the notification
if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
// Braze successfully handled the push notification
} else {
// Handle non-Braze messages
}
}
}
package com.example.push
import com.braze.push.BrazeFirebaseMessagingService
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
// Let Braze process the payload and display the notification
if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
// Braze successfully handled the push notification
} else {
// Handle non-Braze messages
}
}
}
Para más información, consulta el ejemplo de integración de Firebase en el repositorio del SDK de Braze para Android.
Personalizar el comportamiento en primer plano
Si deseas un comportamiento personalizado en primer plano, como suprimir la notificación del sistema o mostrar una interfaz de usuario dentro de la aplicación, puedes:
- Usar
subscribeToPushNotificationEventspara reaccionar a eventos push y gestionar vínculos profundos con el métodoBrazeNotificationUtils.routeUserWithNotificationOpenedIntent. Para más información, consulta el ejemplo de push con Firebase. - Crear y publicar tu propia notificación usando un
IBrazeNotificationFactorypersonalizado, o suprimir la notificación al no llamar anotificationManager.notifyen tu flujo de gestión.
Para más información sobre la personalización de notificaciones, consulta Fábrica de notificaciones personalizada.
Crear vínculos profundos personalizados
Sigue las instrucciones que se encuentran en la documentación para desarrolladores de Android sobre vinculación en profundidad si aún no has añadido vínculos profundos a tu aplicación. Para aprender más sobre qué son los vínculos profundos, consulta nuestro artículo de preguntas frecuentes.
Añadir vínculos profundos
El panel de Braze permite configurar vínculos profundos o URLs web en Campaigns de notificaciones push y Canvas que se abrirán cuando se haga clic en la notificación.

Personalizar el comportamiento de la pila de retroceso
El SDK de Android, de forma predeterminada, colocará la actividad principal del lanzador de tu aplicación anfitriona en la pila de retroceso al seguir vínculos profundos push. Braze te permite configurar una actividad personalizada para abrir en la pila de retroceso en lugar de tu actividad principal del lanzador, o deshabilitar la pila de retroceso por completo.
Por ejemplo, para configurar una actividad llamada YourMainActivity como la actividad de la pila de retroceso usando la configuración en tiempo de ejecución:
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setPushDeepLinkBackStackActivityEnabled(true)
.setPushDeepLinkBackStackActivityClass(YourMainActivity.class)
.build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
.setPushDeepLinkBackStackActivityEnabled(true)
.setPushDeepLinkBackStackActivityClass(YourMainActivity.class)
.build()
Braze.configure(this, brazeConfig)
Consulta la configuración equivalente para tu braze.xml. Ten en cuenta que el nombre de la clase debe ser el mismo que devuelve Class.forName().
<bool name="com_braze_push_deep_link_back_stack_activity_enabled">true</bool>
<string name="com_braze_push_deep_link_back_stack_activity_class_name">your.package.name.YourMainActivity</string>
Paso 5: Definir canales de notificación
El SDK de Braze para Android es compatible con los canales de notificación de Android. Si una notificación de Braze no contiene el ID de un canal de notificación o si la notificación de Braze contiene un ID de canal no válido, Braze mostrará la notificación con el canal de notificación predeterminado definido en el SDK. Los usuarios de la empresa utilizan los canales de notificación de Android dentro de la plataforma para agrupar notificaciones.
Para configurar el nombre visible para el usuario del canal de notificación predeterminado de Braze, usa BrazeConfig.setDefaultNotificationChannelName().
Para configurar la descripción visible para el usuario del canal de notificación predeterminado de Braze, usa BrazeConfig.setDefaultNotificationChannelDescription().
Actualiza cualquier Campaign de API con el parámetro del objeto push de Android para incluir el campo notification_channel. Si este campo no se especifica, Braze enviará la carga útil de la notificación con el ID del canal alternativo del panel.
Aparte del canal de notificación predeterminado, Braze no creará ningún canal. Todos los demás canales deben ser definidos programáticamente por la aplicación anfitriona y luego ingresados en el panel de Braze.
El nombre y la descripción del canal predeterminado también pueden configurarse en braze.xml.
<string name="com_braze_default_notification_channel_name">Your channel name</string>
<string name="com_braze_default_notification_channel_description">Your channel description</string>
Paso 6: Probar la visualización y los análisis de las notificaciones
Probar la visualización
En este punto, deberías poder ver las notificaciones enviadas desde Braze. Para probarlo, ve a la página Campaigns en tu panel de Braze y crea una Campaign de notificaciones push. Elige Android Push y diseña tu mensaje. Luego haz clic en el ícono del ojo en el creador para acceder al remitente de prueba. Introduce el ID de usuario o la dirección de correo electrónico de tu usuario actual y haz clic en Send Test. Deberías ver la notificación push aparecer en tu dispositivo.

Para problemas relacionados con la visualización de push, consulta nuestra guía de solución de problemas.
Probar los análisis
En este punto, también deberías tener el registro de análisis para las aperturas de notificaciones push. Hacer clic en la notificación cuando llegue debería hacer que los Direct Opens en la página de resultados de tu Campaign aumenten en 1. Consulta nuestro artículo sobre informes push para un desglose de los análisis push.
Para problemas relacionados con los análisis push, consulta nuestra guía de solución de problemas.
Probar desde la línea de comandos
Si deseas probar In-App Messages y notificaciones push a través de la interfaz de línea de comandos, puedes enviar una sola notificación a través del terminal mediante cURL y la API de mensajería. Necesitarás reemplazar los siguientes campos con los valores correctos para tu caso de prueba:
YOUR_API_KEY(Ve a Configuración > Claves de API.)YOUR_EXTERNAL_USER_ID(Busca un perfil en la página Buscar usuarios.)YOUR_KEY1(opcional)YOUR_VALUE1(opcional)
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {YOUR_API_KEY}" -d '{
"external_user_ids":["YOUR_EXTERNAL_USER_ID"],
"messages": {
"android_push": {
"title":"Test push title",
"alert":"Test push",
"extra": {
"YOUR_KEY1":"YOUR_VALUE1"
}
}
}
}' https://rest.iad-01.braze.com/messages/send
Este ejemplo usa la instancia US-01. Si no estás en esta instancia, reemplaza el endpoint US-01 con tu endpoint.
Notificaciones push de conversación

La iniciativa de personas y conversaciones es una iniciativa plurianual de Android que tiene como objetivo destacar a las personas y las conversaciones en las superficies del sistema del teléfono. Esta prioridad se basa en el hecho de que la comunicación y la interacción con otras personas sigue siendo el área funcional más valorada e importante para la mayoría de los usuarios de Android en todos los grupos demográficos.
Requisitos de uso
- Este tipo de notificación requiere el SDK de Braze para Android v15.0.0+ y dispositivos con Android 11+.
- Los dispositivos o SDK no compatibles recurrirán a una notificación push estándar.
Esta característica solo está disponible a través de la REST API de Braze. Consulta el objeto push de Android para obtener más información.
Errores de cuota excedida de FCM
Cuando se excede tu límite de Firebase Cloud Messaging (FCM), Google devuelve errores de “cuota excedida”. El límite predeterminado para FCM es de 600 000 solicitudes por minuto. Braze reintenta el envío de acuerdo con las prácticas recomendadas de Google. Sin embargo, un gran volumen de estos errores puede prolongar el tiempo de envío varios minutos. Para mitigar el impacto potencial, Braze te enviará una alerta indicando que se está excediendo el límite de velocidad y los pasos que puedes seguir para prevenir los errores.
Para verificar tu límite actual, ve a Google Cloud Console > APIs & Services > Firebase Cloud Messaging API > Quotas & System Limits, o visita la página de cuotas de la API de FCM.
Prácticas recomendadas
Recomendamos estas prácticas para mantener bajo el volumen de estos errores.
Solicitar un aumento del límite de velocidad a FCM
Para solicitar un aumento del límite de velocidad a FCM, puedes contactar directamente con el soporte de Firebase o hacer lo siguiente:
- Ve a la página de cuotas de la API de FCM.
- Localiza la cuota Send requests per minute.
- Selecciona Edit Quota.
- Introduce un nuevo valor y envía tu solicitud.
Aplicar un límite de velocidad del espacio de trabajo
Puedes aplicar un límite de velocidad del espacio de trabajo para las notificaciones push de Android. Esto puede ayudar a regular la tasa de entrega de tus mensajes salientes. Para más detalles, consulta Límites de velocidad de mensajería del espacio de trabajo.
Límites de velocidad
Las notificaciones push tienen una tasa limitada, así que no temas enviar tantas como necesite tu aplicación. iOS y los servidores del servicio de notificaciones push de Apple (APN) controlarán la frecuencia con la que se entregan, y no te meterás en problemas por enviar demasiadas. Si tus notificaciones push están limitadas, podrían retrasarse hasta la próxima vez que el dispositivo envíe un paquete de mantenimiento de conexión o reciba otra notificación.
Configurar las notificaciones push
Paso 1: Sube tu token de APNs
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:
- En tu cuenta de desarrollador de Apple, ve a Certificates, Identifiers & Profiles.
- En Keys, selecciona All y haz clic en el botón de añadir (+) en la parte superior de la página.
- En Key Description, introduce un nombre único para la clave de firma.
- En Key Services, selecciona la casilla Apple Push Notification service (APNs) y, a continuación, haz clic en Continue. Haz clic en Confirm.
- 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.
- En Braze, ve a Configuración > Configuración de la aplicación y carga el archivo
.p8en 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. - 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.
- Cuando hayas terminado, selecciona Guardar.
Paso 2: Habilita las capacidades push
En Xcode, ve a la sección Signing & Capabilities del objetivo principal de la aplicación y añade la capacidad de notificaciones push.

Paso 3: Configura la gestión de push
Puedes utilizar el SDK de Swift para automatizar el procesamiento de las notificaciones remotas recibidas de Braze. Esta es la forma más sencilla de gestionar las notificaciones push y es el método de gestión recomendado.
Paso 3.1: Habilita la automatización en la propiedad push
Para habilitar la integración push automática, establece la propiedad automation de la configuración push en true:
let configuration = Braze.Configuration(apiKey: "{YOUR-BRAZE-API-KEY}", endpoint: "{YOUR-BRAZE-API-ENDPOINT}")
configuration.push.automation = true
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{YOUR-BRAZE-API-KEY}" endpoint:@"{YOUR-BRAZE-API-ENDPOINT}"];
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initEnablingAllAutomations:YES];
Esto indica al SDK que:
- Registre tu aplicación para notificaciones push en el sistema.
- Solicite la autorización/permiso de notificaciones push en la inicialización.
- Proporcione dinámicamente implementaciones para los métodos de delegado del sistema relacionados con las notificaciones push.

Los pasos de automatización realizados por el SDK son compatibles con las integraciones de gestión de notificaciones push preexistentes en tu código. El SDK solo automatiza el procesamiento de las notificaciones remotas recibidas de Braze. Cualquier controlador del sistema implementado para procesar las notificaciones remotas de tu propia aplicación o de otro SDK de terceros seguirá funcionando cuando automation esté habilitado.

El SDK debe inicializarse en el hilo principal para habilitar la automatización de notificaciones push. La inicialización del SDK debe ocurrir antes de que la aplicación haya terminado de lanzarse o en la implementación de tu AppDelegate application(_:didFinishLaunchingWithOptions:).
Si tu aplicación requiere configuración adicional antes de inicializar el SDK, consulta la página de documentación sobre inicialización diferida.
Paso 3.2: Anula configuraciones individuales (opcional)
Para un control más granular, cada paso de automatización puede habilitarse o deshabilitarse individualmente:
// Enable all automations and disable the automatic notification authorization request at launch.
configuration.push.automation = true
configuration.push.automation.requestAuthorizationAtLaunch = false
// Enable all automations and disable the automatic notification authorization request at launch.
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initEnablingAllAutomations:YES];
configuration.push.automation.requestAuthorizationAtLaunch = NO;
Consulta Braze.Configuration.Push.Automation para conocer todas las opciones disponibles y automation para obtener más información sobre el comportamiento de la automatización.

Si dependes de las notificaciones push para comportamientos adicionales específicos de tu aplicación, es posible que aún puedas utilizar la integración push automática en lugar de la integración manual de notificaciones push. El método subscribeToUpdates(_:) proporciona una forma de recibir avisos sobre las notificaciones remotas procesadas por Braze.
Paso 3.1: Regístrate para notificaciones push con APNs
Incluye el ejemplo de código apropiado dentro del método delegado application:didFinishLaunchingWithOptions: de tu aplicación para que los dispositivos de tus usuarios puedan registrarse con APNs. 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.
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 planeas 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 opciones de notificación de iOS para obtener más información sobre la autenticación push provisional.
application.registerForRemoteNotifications()
let center = UNUserNotificationCenter.current()
center.setNotificationCategories(Braze.Notifications.categories)
center.delegate = self
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
print("Notification authorization, granted: \(granted), error: \(String(describing: error))")
}
[application registerForRemoteNotifications];
UNUserNotificationCenter *center = UNUserNotificationCenter.currentNotificationCenter;
[center setNotificationCategories:BRZNotifications.categories];
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) {
NSLog(@"Notification authorization, granted: %d, "
@"error: %@)",
granted, error);
}];

Debes asignar tu objeto delegado usando center.delegate = self de forma síncrona antes de que tu aplicación termine de lanzarse, preferiblemente en application:didFinishLaunchingWithOptions:. No hacerlo puede provocar que tu aplicación pierda notificaciones push entrantes. Visita la documentación de Apple sobre UNUserNotificationCenterDelegate para obtener más información.
Si tu aplicación llama a wipeData() y posteriormente vuelve a habilitar el SDK de Braze en la misma ejecución de la aplicación, debes llamar a registerForRemoteNotifications() de nuevo para volver a rellenar el token del dispositivo utilizado por el SDK.
Paso 3.2: Registra tokens de notificaciones push con Braze
Una vez que el registro con APNs se haya completado, pasa el deviceToken resultante a Braze para habilitar las notificaciones push para el usuario.
Añade el siguiente código al método application(_:didRegisterForRemoteNotificationsWithDeviceToken:) de tu aplicación:
AppDelegate.braze?.notifications.register(deviceToken: deviceToken)
Añade el siguiente código al método application:didRegisterForRemoteNotificationsWithDeviceToken: de tu aplicación:
[AppDelegate.braze.notifications registerDeviceToken:deviceToken];

El método delegado application:didRegisterForRemoteNotificationsWithDeviceToken: se llama cada vez después de que se invoque application.registerForRemoteNotifications().
Si estás migrando a Braze desde otro servicio de push y el dispositivo de tu usuario ya se ha registrado con APNs, este método recogerá los tokens de los registros existentes la próxima vez que se llame al método, y los usuarios no tendrán que volver a dar su adhesión voluntaria a push.
Paso 3.3: Habilita la gestión de push
A continuación, pasa las notificaciones push recibidas a Braze. Este paso es necesario para registrar análisis push y gestionar vínculos. Asegúrate de llamar a todo el código de integración push en el hilo principal de tu aplicación.
Gestión push predeterminada
Para habilitar la gestión push predeterminada de Braze, añade el siguiente código al método application(_:didReceiveRemoteNotification:fetchCompletionHandler:) de tu aplicación:
if let braze = AppDelegate.braze, braze.notifications.handleBackgroundNotification(
userInfo: userInfo,
fetchCompletionHandler: completionHandler
) {
return
}
completionHandler(.noData)
A continuación, añade lo siguiente al método userNotificationCenter(_:didReceive:withCompletionHandler:) de tu aplicación:
if let braze = AppDelegate.braze, braze.notifications.handleUserNotification(
response: response,
withCompletionHandler: completionHandler
) {
return
}
completionHandler()
Para habilitar la gestión push predeterminada de Braze, añade el siguiente código al método application:didReceiveRemoteNotification:fetchCompletionHandler: de tu aplicación:
BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleBackgroundNotificationWithUserInfo:userInfo
fetchCompletionHandler:completionHandler];
if (processedByBraze) {
return;
}
completionHandler(UIBackgroundFetchResultNoData);
A continuación, añade el siguiente código al método (void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: de tu aplicación:
BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleUserNotificationWithResponse:response
withCompletionHandler:completionHandler];
if (processedByBraze) {
return;
}
completionHandler();
Gestión push en primer plano
Para habilitar las notificaciones push en primer plano y permitir que Braze las reconozca cuando se reciben, implementa UNUserNotificationCenter.userNotificationCenter(_:willPresent:withCompletionHandler:). Si un usuario toca tu notificación en primer plano, se llamará al delegado push userNotificationCenter(_:didReceive:withCompletionHandler:) y Braze registrará el evento de clic de push.
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions
) -> Void) {
if let braze = AppDelegate.braze {
// Forward notification payload to Braze for processing.
braze.notifications.handleForegroundNotification(notification: notification)
}
// Configure application's foreground notification display options.
if #available(iOS 14.0, *) {
completionHandler([.list, .banner])
} else {
completionHandler([.alert])
}
}
Para habilitar las notificaciones push en primer plano y permitir que Braze las reconozca cuando se reciben, implementa userNotificationCenter:willPresentNotification:withCompletionHandler:. Si un usuario toca tu notificación en primer plano, se llamará al delegado push userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: y Braze registrará el evento de clic de push.
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
if (AppDelegate.braze != nil) {
// Forward notification payload to Braze for processing.
[AppDelegate.braze.notifications handleForegroundNotificationWithNotification:notification];
}
// Configure application's foreground notification display options.
if (@available(iOS 14.0, *)) {
completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
} else {
completionHandler(UNNotificationPresentationOptionAlert);
}
}
Prueba de notificaciones
Si quieres probar las notificaciones dentro de la aplicación y las notificaciones push a través de la línea de comandos, puedes enviar una única notificación a través del terminal mediante CURL y la API de mensajería. Tendrás que sustituir los siguientes campos por los valores correctos para tu caso de prueba:
YOUR_API_KEY- disponible en Configuración > Claves de API.YOUR_EXTERNAL_USER_ID- disponible en la página Buscar usuarios. Para más información, consulta asignar ID de usuario.YOUR_KEY1(opcional)YOUR_VALUE1(opcional)
En el siguiente ejemplo, se utiliza la instancia US-01. Si no estás en esta instancia, consulta nuestra documentación de la API para ver a qué endpoint debes hacer solicitudes.
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {YOUR_API_KEY}" -d '{
"external_user_ids":["YOUR_EXTERNAL_USER_ID"],
"messages": {
"apple_push": {
"alert":"Test push",
"extra": {
"YOUR_KEY1":"YOUR_VALUE1"
}
}
}
}' https://rest.iad-01.braze.com/messages/send
Suscribirse a actualizaciones de notificaciones push
Para acceder a las cargas útiles de notificaciones push procesadas por Braze, utiliza el método Braze.Notifications.subscribeToUpdates(payloadTypes:_:).
Puedes usar el parámetro payloadTypes para especificar si deseas suscribirte a notificaciones que involucren eventos de apertura push, eventos de recepción push, o ambos.
// This subscription is maintained through a Braze cancellable, which will observe for changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
let cancellable = AppDelegate.braze?.notifications.subscribeToUpdates(payloadTypes: [.open, .received]) { payload in
print("Braze processed notification with title '\(payload.title)' and body '\(payload.body)'")
}

Ten en cuenta que los eventos de recepción push solo se activarán para las notificaciones en primer plano y las notificaciones en segundo plano con content-available. No se activarán para las notificaciones recibidas mientras la aplicación está terminada ni para las notificaciones en segundo plano sin el campo content-available.
NSInteger filtersValue = BRZNotificationsPayloadTypeFilter.opened.rawValue | BRZNotificationsPayloadTypeFilter.received.rawValue;
BRZNotificationsPayloadTypeFilter *filters = [[BRZNotificationsPayloadTypeFilter alloc] initWithRawValue: filtersValue];
BRZCancellable *cancellable = [notifications subscribeToUpdatesWithPayloadTypes:filters update:^(BRZNotificationsPayload * _Nonnull payload) {
NSLog(@"Braze processed notification with title '%@' and body '%@'", payload.title, payload.body);
}];

Ten en cuenta que los eventos de recepción push solo se activarán para las notificaciones en primer plano y las notificaciones en segundo plano con content-available. No se activarán para las notificaciones recibidas mientras la aplicación está terminada ni para las notificaciones en segundo plano sin el campo content-available.

Cuando utilizas la integración push automática, subscribeToUpdates(_:) es la única forma de recibir avisos sobre las notificaciones remotas procesadas por Braze. Los métodos del sistema UIAppDelegate y UNUserNotificationCenterDelegate no se invocan cuando la notificación es procesada automáticamente por Braze.

Crea tu suscripción a notificaciones push en application(_:didFinishLaunchingWithOptions:) para asegurarte de que tu suscripción se active después de que un usuario final toque una notificación mientras tu aplicación está en estado terminado.
Gestión de notificaciones en primer plano
De forma predeterminada, cuando una notificación push llega mientras tu aplicación está en primer plano, iOS no la muestra automáticamente. Para mostrar notificaciones push en primer plano y rastrearlas con los análisis de Braze, llama al método handleForegroundNotification(notification:) dentro de tu implementación de UNUserNotificationCenterDelegate.userNotificationCenter(_:willPresent:withCompletionHandler:).
Cómo funciona
Cuando llamas a handleForegroundNotification(notification:), Braze procesa la carga útil de la notificación para registrar análisis y gestionar vínculos profundos o acciones de botones. El comportamiento de visualización real se controla mediante las UNNotificationPresentationOptions que pasas al controlador de finalización.
import BrazeKit
import UserNotifications
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
) {
// Let Braze process the notification payload
if let braze = AppDelegate.braze {
braze.notifications.handleForegroundNotification(notification: notification)
}
// Control how the notification appears in the foreground
if #available(iOS 14.0, *) {
completionHandler([.banner, .list, .sound])
} else {
completionHandler([.alert, .sound])
}
}
}
Para ver un ejemplo completo, consulta el ejemplo de integración manual de notificaciones push en el repositorio del SDK Swift de Braze.
Push primers
Las campañas de push primer animan a tus usuarios a habilitar las notificaciones push de tu aplicación en sus dispositivos. Esto puede hacerse sin necesidad de personalizar el SDK utilizando nuestro push primer sin código.
Gestión dinámica de la gateway de APNs
La gestión dinámica de la gateway del servicio de notificaciones push de Apple (APNs) mejora la fiabilidad y eficiencia de las notificaciones push en iOS al detectar automáticamente el entorno APNs correcto. Anteriormente, tenías que seleccionar manualmente los entornos APNs (desarrollo o producción) para tus notificaciones push, lo que a veces provocaba configuraciones de gateway incorrectas, fallos en la entrega y errores BadDeviceToken.
Con la gestión dinámica de la gateway de APNs, tendrás:
- Mayor fiabilidad: las notificaciones siempre se entregan al entorno APNs correcto, lo que reduce los fallos en la entrega.
- Configuración simplificada: ya no necesitas gestionar manualmente la configuración de la gateway de APNs.
- Resiliencia ante errores: los valores de gateway no válidos o ausentes se gestionan de forma fluida, proporcionando un servicio ininterrumpido.
Requisitos previos
Braze es compatible con la gestión dinámica de la gateway de APNs para notificaciones push en iOS con el siguiente requisito de versión del SDK:
Cómo funciona
Cuando una aplicación iOS se integra con el SDK Swift de Braze, envía datos relacionados con el dispositivo, incluyendo aps-environment, a la API del SDK de Braze, si está disponible. El valor apns_gateway indica si la aplicación está utilizando el entorno APNs de desarrollo (dev) o de producción (prod).
Braze también almacena el valor de gateway reportado para cada dispositivo. Si se recibe un nuevo valor de gateway válido, Braze actualiza el valor almacenado automáticamente.
Cuando Braze envía una notificación push:
- Si hay un valor de gateway válido (dev o prod) almacenado para el dispositivo, Braze lo utiliza para determinar el entorno APNs correcto.
- Si no hay un valor de gateway almacenado, Braze utiliza de forma predeterminada el entorno APNs configurado en la página Configuración de la aplicación.
Preguntas frecuentes
¿Por qué se introdujo esta característica?
Con la gestión dinámica de la gateway de APNs, el entorno correcto se selecciona automáticamente. Anteriormente, tenías que configurar manualmente la gateway de APNs, lo que podía provocar errores BadDeviceToken, invalidación de tokens y posibles problemas de limitación de velocidad de APNs.
¿Cómo afecta esto al rendimiento de la entrega push?
Esta característica mejora las tasas de entrega al enrutar siempre los tokens de notificaciones push al entorno APNs correcto, evitando fallos causados por gateways mal configuradas.
¿Puedo desactivar esta característica?
La gestión dinámica de la gateway de APNs está activada de forma predeterminada y ofrece mejoras de fiabilidad. Si tienes ejemplos específicos que requieran la selección manual de la gateway, ponte en contacto con soporte de Braze.
Acerca de las notificaciones push para Android TV

Aunque no es una característica nativa, la integración de notificaciones push en Android TV es posible aprovechando el SDK de Braze para Android y Firebase Cloud Messaging para registrar un token push para Android TV. Sin embargo, debes crear una interfaz de usuario para mostrar la carga útil de la notificación una vez recibida.
Requisitos previos
Para utilizar esta característica, debes completar lo siguiente:
- Integrar el SDK de Braze para Android
- Configurar las notificaciones push para el SDK de Braze para Android
Configurar las notificaciones push
Para configurar las notificaciones push en Android TV:
- Crea una vista personalizada en tu aplicación para mostrar tus notificaciones.
- Crea una fábrica de notificaciones personalizada. Esto anula el comportamiento predeterminado del SDK y te permite mostrar las notificaciones manualmente. Al devolver
null, se evita que el SDK procese la notificación y se requiere código personalizado para mostrarla. Después de completar estos pasos, puedes empezar a enviar notificaciones push a Android TV. - (Opcional) Para realizar un seguimiento eficaz de los análisis de clics, configura el seguimiento de análisis de clics. Esto se puede lograr creando una devolución de llamada push para escuchar las intenciones de push abierto y recibido de Braze.

Estas notificaciones no persisten y solo son visibles para el usuario cuando el dispositivo las muestra. Esto se debe a que el centro de notificaciones de Android TV no admite notificaciones históricas.
Probar las notificaciones push de Android TV
Para comprobar si tu implementación de push es correcta, envía una notificación desde el panel de Braze como lo harías normalmente para un dispositivo Android.
- Si la aplicación está cerrada: El mensaje push muestra una notificación de tipo toast en la pantalla.
- Si la aplicación está abierta: Tienes la oportunidad de mostrar el mensaje en tu propia interfaz de usuario alojada. Sigue el estilo de interfaz de usuario de los mensajes dentro de la aplicación del SDK de Android para móviles.
Mejores prácticas
Para los especialistas en marketing que utilizan Braze, lanzar una campaña a Android TV es idéntico a lanzar una notificación push a aplicaciones móviles de Android. Para dirigirte exclusivamente a estos dispositivos, selecciona la aplicación de Android TV en la segmentación.
La respuesta de entrega y clic devuelta por FCM sigue la misma convención que un dispositivo Android móvil; por lo tanto, cualquier error es visible en Observabilidad de mensajería.
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK de Braze para Cordova. Después de integrar el SDK, la funcionalidad básica de notificaciones push se habilita de forma predeterminada. Para utilizar notificaciones push enriquecidas y Push Stories, tendrás que configurarlas individualmente. Para utilizar los mensajes push de iOS, también necesitas cargar un certificado push válido.

Cada vez que añadas, elimines o actualices tus complementos de Cordova, Cordova sobrescribirá el archivo de bibliotecas en el proyecto Xcode de tu aplicación para iOS. Esto significa que tendrás que volver a configurar estas características cada vez que modifiques tus complementos de Cordova.
Habilitar la vinculación en profundidad push
De forma predeterminada, el SDK de Braze para Cordova no gestiona automáticamente los vínculos profundos de las notificaciones push. Para habilitar la vinculación en profundidad push, sigue los pasos de configuración en Vinculación en profundidad. Para más detalles sobre estas y otras opciones de configuración push, consulta Configuraciones opcionales.
Desactivar las notificaciones push básicas (solo iOS)
Después de integrar el SDK de Braze para Cordova en iOS, la funcionalidad básica de notificaciones push está habilitada de forma predeterminada. Para desactivar esta funcionalidad en tu aplicación iOS, añade lo siguiente a tu archivo config.xml. Para más información, consulta Configuraciones opcionales.
<platform name="ios">
<preference name="com.braze.ios_disable_automatic_push_registration" value="NO" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK de Flutter de Braze.
Configurar notificaciones push
Paso 1: Completa la configuración inicial
Paso 1.1: Registrarse para push
Regístrate para push utilizando la API Firebase Cloud Messaging (FCM) de Google. Para un recorrido completo, consulta los siguientes pasos de la guía de integración push nativa de Android:
- Añadir Firebase a tu proyecto.
- Añadir Cloud Messaging a tus dependencias.
- Crear una cuenta de servicio.
- Generar credenciales JSON.
- Subir tus credenciales JSON a Braze.
Paso 1.2: Obtener tu ID de remitente de Google
Primero, ve a la consola de Firebase, abre tu proyecto y selecciona Settings > Project settings.

Selecciona Cloud Messaging y, en Firebase Cloud Messaging API (V1), copia el Sender ID en tu portapapeles.

Paso 1.3: Actualizar tu braze.xml
Añade lo siguiente a tu archivo braze.xml. Sustituye FIREBASE_SENDER_ID por el ID de remitente que copiaste anteriormente.
<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>
Paso 1.1: Subir certificados de APN
Genera un certificado del servicio de notificaciones push de Apple (APN) y súbelo al panel de Braze. Para un recorrido completo, consulta Subir tu certificado de APN.
Paso 1.2: Añadir soporte de notificaciones push a tu aplicación
Sigue la guía de integración nativa de iOS.
Paso 2: Escuchar eventos de notificaciones push (opcional)
Para escuchar los eventos de notificaciones push que Braze ha detectado y gestionado, llama a subscribeToPushNotificationEvents() y pasa un argumento para ejecutar.

Los eventos de notificaciones push de Braze están disponibles tanto en Android como en iOS. Debido a las diferencias de plataforma, iOS solo detectará eventos push de Braze cuando un usuario haya interactuado con una notificación.
// Create stream subscription
StreamSubscription pushEventsStreamSubscription;
pushEventsStreamSubscription = braze.subscribeToPushNotificationEvents((BrazePushEvent pushEvent) {
print("Push Notification event of type ${pushEvent.payloadType} seen. Title ${pushEvent.title}\n and deeplink ${pushEvent.url}");
// Handle push notification events
});
// Cancel stream subscription
pushEventsStreamSubscription.cancel();
Campos de eventos de notificaciones push

Debido a las limitaciones de la plataforma en iOS, el SDK de Braze solo puede procesar cargas útiles push mientras la aplicación está en primer plano. Los oyentes solo se activarán para el tipo de evento push_opened en iOS después de que un usuario haya interactuado con una notificación push.
Para obtener una lista completa de los campos de notificaciones push, consulta la siguiente tabla:
| Nombre del campo | Tipo | Descripción |
|---|---|---|
payloadType |
String | Especifica el tipo de carga útil de la notificación. Los dos valores que se envían desde el SDK Flutter de Braze son push_opened y push_received. Solo los eventos push_opened son compatibles en iOS. |
url |
String | Especifica la URL que fue abierta por la notificación. |
useWebview |
Boolean | Si es true, la URL se abre dentro de la aplicación en un webview modal. Si es false, la URL se abre en el navegador del dispositivo. |
title |
String | Representa el título de la notificación. |
body |
String | Representa el cuerpo o texto de contenido de la notificación. |
summaryText |
String | Representa el texto de resumen de la notificación. Se mapea desde subtitle en iOS. |
badgeCount |
Number | Representa el recuento de señales de la notificación. |
timestamp |
Number | Representa el momento en que la aplicación recibió la carga útil. |
isSilent |
Boolean | Si es true, la carga útil se recibe de forma silenciosa. Para más información sobre el envío de notificaciones push silenciosas en Android, consulta Notificaciones push silenciosas en Android. Para más información sobre el envío de notificaciones push silenciosas en iOS, consulta Notificaciones push silenciosas en iOS. |
isBrazeInternal |
Boolean | Es true si la carga útil de la notificación fue enviada para una característica interna del SDK, como la sincronización de conmutadores de características o Uninstall Tracking. La carga útil se recibe de forma silenciosa para el usuario. |
imageUrl |
String | Especifica la URL asociada con la imagen de la notificación. |
brazeProperties |
Object | Representa las propiedades de Braze asociadas con la Campaign (pares clave-valor). |
ios |
Object | Representa los campos específicos de iOS. |
android |
Object | Representa los campos específicos de Android. |
Paso 3: Probar la visualización de notificaciones push
Para probar tu integración después de configurar las notificaciones push en la capa nativa:
- Establece un usuario activo en la aplicación Flutter. Para ello, inicializa tu plugin llamando a
braze.changeUser('your-user-id'). - Ve a Campaigns y crea una nueva Campaign de notificación push. Elige las plataformas que quieras probar.
- Compón tu notificación de prueba y ve a la pestaña Test. Añade el mismo
user-idcomo usuario de prueba y haz clic en Send Test. - Deberías recibir la notificación en tu dispositivo en breve. Es posible que necesites comprobar el centro de notificaciones o actualizar la configuración si no se muestra.

A partir de Xcode 14, puedes probar notificaciones push remotas en un simulador de iOS.
Paso 4: Añadir vínculos profundos (Android)

En Android, com_braze_handle_push_deep_links_automatically tiene el valor predeterminado false. Con el valor predeterminado, tocar una notificación push sigue enviando un evento push_opened a tu oyente de Dart, pero el SDK nativo no trae tu aplicación al primer plano ni abre el destino del vínculo profundo automáticamente. Si tu aplicación no se inicia al tocar una notificación, este indicador es la causa más probable.
Para permitir que Braze abra automáticamente tu aplicación y cualquier vínculo profundo cuando se toca una notificación push, establece com_braze_handle_push_deep_links_automatically en true en tu braze.xml:
<bool name="com_braze_handle_push_deep_links_automatically">true</bool>
Este indicador también se puede establecer mediante la configuración en tiempo de ejecución en tu código nativo de Android:
val brazeConfig = BrazeConfig.Builder()
.setHandlePushDeepLinksAutomatically(true)
.build()
Braze.configure(this, brazeConfig)
Si quieres gestionar los vínculos profundos de forma personalizada, utiliza el oyente subscribeToPushNotificationEvents() descrito en el paso 2 para enrutar tú mismo el campo url del evento push_opened. Para más información, consulta Vinculación en profundidad.
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK de Braze para Android.
Configurar las notificaciones push
Los teléfonos más recientes fabricados por Huawei vienen equipados con Huawei Mobile Services (HMS), un servicio utilizado para entregar notificaciones push en lugar de Firebase Cloud Messaging (FCM) de Google.
Paso 1: Registrar una cuenta de desarrollador de Huawei
Antes de empezar, tendrás que registrarte y configurar una cuenta de desarrollador de Huawei. En tu cuenta de Huawei, ve a My Projects > Project Settings > App Information y toma nota del App ID y del App secret.

Paso 2: Crear una nueva aplicación Huawei en el panel de Braze
En el panel de Braze, ve a Configuración de la aplicación, que aparece en la navegación de Configuración.
Haz clic en + Add App, proporciona un nombre (como Mi aplicación Huawei) y selecciona Android como plataforma.

Una vez creada tu nueva aplicación de Braze, localiza la configuración de notificaciones push y selecciona Huawei como proveedor de push. A continuación, proporciona tu Huawei Client Secret y tu Huawei App ID.

Paso 3: Integrar el SDK de mensajería de Huawei en tu aplicación
Huawei ha proporcionado un codelab de integración para Android que detalla cómo integrar el servicio de mensajería de Huawei en tu aplicación. Sigue esos pasos para empezar.
Después de completar el codelab, tendrás que crear un servicio de mensajes de Huawei personalizado para obtener tokens de notificaciones push y reenviar mensajes al SDK de Braze.
public class CustomPushService extends HmsMessageService {
@Override
public void onNewToken(String token) {
super.onNewToken(token);
Braze.getInstance(this.getApplicationContext()).setRegisteredPushToken(token);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (BrazeHuaweiPushHandler.handleHmsRemoteMessageData(this.getApplicationContext(), remoteMessage.getDataOfMap())) {
// Braze has handled the Huawei push notification
}
}
}
class CustomPushService: HmsMessageService() {
override fun onNewToken(token: String?) {
super.onNewToken(token)
Braze.getInstance(applicationContext).setRegisteredPushToken(token!!)
}
override fun onMessageReceived(hmsRemoteMessage: RemoteMessage?) {
super.onMessageReceived(hmsRemoteMessage)
if (BrazeHuaweiPushHandler.handleHmsRemoteMessageData(applicationContext, hmsRemoteMessage?.dataOfMap)) {
// Braze has handled the Huawei push notification
}
}
}
Después de añadir tu servicio push personalizado, añade lo siguiente a tu AndroidManifest.xml:
<service
android:name="package.of.your.CustomPushService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
Paso 4: Gestionar las notificaciones en primer plano
De forma predeterminada, cuando llega una notificación push mientras tu aplicación está en primer plano, Huawei la muestra automáticamente. Para que Braze procese la carga útil de la notificación push (para seguimiento de análisis, gestión de vínculos profundos y procesamiento personalizado), dirige los datos push entrantes a Braze dentro de tu método HmsMessageService.onMessageReceived.
Cuando llamas a BrazeHuaweiPushHandler.handleHmsRemoteMessageData, Braze determina si la carga útil es una notificación push de Braze y, de ser así, crea y muestra la notificación. Para más información, consulta Gestionar las notificaciones en primer plano en la documentación de notificaciones push de Android.
Para ver un ejemplo completo, consulta la referencia del controlador de Huawei en la documentación del SDK de Braze para Android.
Paso 5: Probar tus notificaciones push (opcional)
En este punto, has creado una nueva aplicación Android Huawei en el panel de Braze, la has configurado con tus credenciales de desarrollador de Huawei y has integrado los SDK de Braze y Huawei en tu aplicación.
A continuación, podemos probar la integración realizando una prueba con una nueva Campaign push en Braze.
Paso 5.1: Crear una nueva Campaign de notificación push
En la página Campaigns, crea una nueva Campaign y elige Push Notification como tipo de mensaje.
Después de nombrar tu Campaign, elige Android Push como plataforma push.

A continuación, redacta tu Campaign push con un título y un mensaje.
Paso 5.2: Enviar una notificación push de prueba
En la pestaña Test, introduce tu ID de usuario, que has configurado en tu aplicación usando el método changeUser(USER_ID_STRING), y haz clic en Send Test para enviar una notificación push de prueba.

En este punto, deberías recibir una notificación push de prueba en tu dispositivo Huawei (HMS) desde Braze.
Paso 5.3: Configurar la segmentación de Huawei (opcional)
Dado que tu aplicación Huawei en el panel de Braze está basada en la plataforma push de Android, tienes la flexibilidad de enviar notificaciones push a todos los usuarios de Android (Firebase Cloud Messaging y Huawei Mobile Services), o puedes optar por segmentar la audiencia de tu Campaign para aplicaciones específicas.
Para enviar notificaciones push solo a aplicaciones Huawei, crea un nuevo Segment y selecciona tu aplicación Huawei dentro de la sección Apps.

Por supuesto, si quieres enviar la misma notificación push a todos los proveedores push de Android, puedes optar por no especificar la aplicación, lo que enviará a todas las aplicaciones Android configuradas dentro del espacio de trabajo actual.
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK de React Native de Braze.
Configuración de notificaciones push
Paso 1: Completa la configuración inicial
Requisitos previos
Antes de poder utilizar Expo para las notificaciones push, deberás configurar el complemento Braze Expo.
Paso 1.1: Actualiza tu archivo app.json
A continuación, actualiza tu archivo app.json para Android e iOS:
- Android: Añade la opción
enableFirebaseCloudMessaging. - iOS: Añade la opción
enableBrazeIosPush.
Paso 1.2: Añade tu ID de remitente de Google
Primero, ve a la consola de Firebase, abre tu proyecto y selecciona Settings > Project settings.

Selecciona Cloud Messaging y, a continuación, en Firebase Cloud Messaging API (V1), copia el Sender ID en el portapapeles.

A continuación, abre el archivo app.json de tu proyecto y establece la propiedad firebaseCloudMessagingSenderId en el Sender ID de tu portapapeles. Por ejemplo:
"firebaseCloudMessagingSenderId": "693679403398"
Paso 1.3: Añade la ruta a tu JSON de Google Services
En el archivo app.json de tu proyecto, añade la ruta a tu archivo google-services.json. Este archivo es necesario para establecer enableFirebaseCloudMessaging: true en tu configuración.
{
"expo": {
"android": {
"googleServicesFile": "PATH_TO_GOOGLE_SERVICES"
},
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"enableBrazeIosPush": true,
"enableFirebaseCloudMessaging": true,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true
}
],
]
}
}
Ten en cuenta que tendrás que utilizar esta configuración en lugar de las instrucciones de configuración nativas si dependes de bibliotecas de notificaciones push adicionales como Expo Notifications.
Si no utilizas el complemento Braze Expo o prefieres configurar estos ajustes de forma nativa, realiza el registro para recibir notificaciones push consultando la guía de integración de notificaciones push nativas de Android.
Si no utilizas el complemento Braze Expo o prefieres configurar estos ajustes de forma nativa, realiza el registro para recibir notificaciones push siguiendo los pasos que se indican en la guía de integración nativa de notificaciones push para iOS:
Paso 1.1: Solicitud de permisos push
Si no tienes pensado solicitar permisos push cuando se inicie la aplicación, omite la llamada requestAuthorizationWithOptions:completionHandler: en tu AppDelegate. A continuación, pasa al paso 2. Si no, sigue la guía de integración nativa de iOS.
Paso 1.2 (Opcional): Migra tu clave push
Si antes utilizabas expo-notifications para administrar tu clave push, ejecuta expo fetch:ios:certs desde la carpeta raíz de tu aplicación. Esto descargará tu clave push (un archivo .p8), que luego podrás cargar en el panel de Braze.
Paso 2: Solicitar permiso para notificaciones push
Utiliza el método Braze.requestPushPermission() (disponible a partir de la v1.38.0) para solicitar permiso para notificaciones push al usuario en iOS y Android 13+. Para Android 12 e inferiores, este método no tiene efecto.
Este método recibe un parámetro obligatorio que especifica qué permisos debe solicitar el SDK al usuario en iOS. Estas opciones no tienen efecto en Android.
const permissionOptions = {
alert: true,
sound: true,
badge: true,
provisional: false
};
Braze.requestPushPermission(permissionOptions);
Paso 2.1: Escuchar notificaciones push (opcional)
Además, puedes suscribirte a eventos en los que Braze haya detectado y gestionado una notificación push entrante. Utiliza la clave de escucha Braze.Events.PUSH_NOTIFICATION_EVENT.

Los eventos push recibidos en iOS solo se desencadenarán para las notificaciones en primer plano y las notificaciones en segundo plano con content-available. No se desencadenarán para las notificaciones recibidas mientras la aplicación está terminada ni para las notificaciones en segundo plano sin el campo content-available.
Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, data => {
console.log(`Push Notification event of type ${data.payload_type} seen. Title ${data.title}\n and deeplink ${data.url}`);
console.log(JSON.stringify(data, undefined, 2));
});
Campos de evento de notificación push
Para obtener una lista completa de los campos de notificación push, consulta la tabla siguiente:
| Nombre del campo | Tipo | Descripción |
|---|---|---|
payload_type |
Cadena | Especifica el tipo de carga útil de la notificación. Los dos valores que se envían desde el SDK de Braze para React Native son push_opened y push_received. |
url |
Cadena | Especifica la URL abierta por la notificación. |
use_webview |
Booleano | Si es true, la URL se abrirá dentro de la aplicación en una vista web modal. Si es false, la URL se abrirá en el navegador del dispositivo. |
title |
Cadena | Representa el título de la notificación. |
body |
Cadena | Representa el cuerpo o texto del contenido de la notificación. |
summary_text |
Cadena | Representa el texto resumido de la notificación. Está mapeado desde subtitle en iOS. |
badge_count |
Número | Representa el recuento de señales de la notificación. |
timestamp |
Número | Representa la hora a la que la aplicación recibió la carga útil. |
is_silent |
Booleano | Si es true, la carga útil se recibe en silencio. Para más detalles sobre el envío de notificaciones push silenciosas en Android, consulta Notificaciones push silenciosas en Android. Para más detalles sobre el envío de notificaciones push silenciosas en iOS, consulta Notificaciones push silenciosas en iOS. |
is_braze_internal |
Booleano | Será true si se envió una carga útil de notificación para una característica interna del SDK, como la sincronización de conmutadores de características o Uninstall Tracking. La carga útil se recibe de forma silenciosa para el usuario. |
image_url |
Cadena | Especifica la URL asociada a la imagen de notificación. |
braze_properties |
Objeto | Representa las propiedades de Braze asociadas a la Campaign (pares clave-valor). |
ios |
Objeto | Representa campos específicos de iOS. |
android |
Objeto | Representa campos específicos de Android. |
Paso 3: Habilitar la vinculación en profundidad (opcional)
Para habilitar que Braze pueda gestionar vínculos profundos dentro de los componentes React cuando se hace clic en una notificación push, primero implementa los pasos descritos en la biblioteca React Native Linking o con la solución que prefieras. A continuación, sigue los pasos adicionales.
Para saber más sobre qué son los vínculos profundos, consulta nuestro artículo de preguntas frecuentes.

Si estás migrando una integración push existente de React Native, vuelve a probar la vinculación en profundidad después de actualizar el SDK de Braze, React Native, Expo o bibliotecas relacionadas. Confirma que:
- React Native Linking sigue configurado y gestionando tus URL de vínculos profundos.
- Tu gestión de la carga útil push inicial en iOS (consulta el paso 3.1: Almacenar la carga útil de la notificación push al iniciar la aplicación) está implementada y se sigue llamando al iniciar la aplicación.
- Cualquier método nativo de delegado o escucha que utilices para gestionar eventos de clic en push sigue registrado y se invoca como se espera.
Si utilizas el complemento Braze Expo, puedes gestionar automáticamente los vínculos profundos de las notificaciones push configurando androidHandlePushDeepLinksAutomatically en true en tu app.json.
Para gestionar los vínculos profundos manualmente, consulta la documentación nativa de Android: Añadir vínculos profundos.
Paso 3.1: Almacenar la carga útil de la notificación push al iniciar la aplicación

Esto es compatible a partir del SDK de React Native 19.1.0.
Añade populateInitialPushPayloadFromIntent al método onCreate() de tu actividad principal. Esto debe llamarse antes de que React Native se inicialice para capturar los datos iniciales de intención. Por ejemplo:
override fun onCreate(savedInstanceState: Bundle?) {
BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
super.onCreate(savedInstanceState)
}
Paso 3.2: Gestionar vínculos profundos desde un estado cerrado
Además de los escenarios básicos que maneja React Native Linking, implementa el método Braze.getInitialPushPayload y recupera el valor url para tener en cuenta los vínculos profundos de las notificaciones push que abren tu aplicación cuando no está en ejecución. Por ejemplo:
// Handles deep links when an app is launched from a hard close via push click.
Braze.getInitialPushPayload(pushPayload => {
if (pushPayload) {
console.log('Braze.getInitialPushPayload is ' + pushPayload);
showToast('Initial URL is ' + pushPayload.url);
handleOpenUrl({ pushPayload.url });
}
});

Este método requiere la configuración nativa del paso 3.1 para tu plataforma. Si utilizas el complemento Braze Expo, es posible que esto se gestione automáticamente.

Para gestionar vínculos profundos desde notificaciones push en iOS, también debes configurar la gestión de enlaces en tu capa nativa de iOS.
Esto incluye registrar un esquema de URL personalizado e implementar un controlador de URL en tu AppDelegate. Para obtener instrucciones completas de configuración, consulta Gestión de vínculos profundos en la documentación nativa de iOS.
Paso 3.1: Almacenar la carga útil de la notificación push al iniciar la aplicación

Omite el paso 3.1 si utilizas el complemento Braze Expo, ya que esta función se gestiona automáticamente.
Para iOS, añade populateInitialPayloadFromLaunchOptions al método didFinishLaunchingWithOptions de tu AppDelegate. Por ejemplo:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ... Perform regular React Native setup
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:apiKey endpoint:endpoint];
configuration.triggerMinimumTimeInterval = 1;
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
[self registerForPushNotifications];
[[BrazeReactUtils sharedInstance] populateInitialPayloadFromLaunchOptions:launchOptions];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
// ... Perform regular React Native setup
let configuration = Braze.Configuration(apiKey: apiKey, endpoint: endpoint)
configuration.triggerMinimumTimeInterval = 1
configuration.logger.level = .info
let braze = BrazeReactBridge.initBraze(configuration)
AppDelegate.braze = braze
registerForPushNotifications()
BrazeReactUtils.shared().populateInitialPayload(fromLaunchOptions: launchOptions)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
Paso 3.2: Gestionar vínculos profundos desde un estado cerrado
Además de los escenarios básicos que maneja React Native Linking, implementa el método Braze.getInitialPushPayload y recupera el valor url para tener en cuenta los vínculos profundos de las notificaciones push que abren tu aplicación cuando no está en ejecución. Por ejemplo:
// Handles deep links when an app is launched from a hard close via push click.
Braze.getInitialPushPayload(pushPayload => {
if (pushPayload) {
console.log('Braze.getInitialPushPayload is ' + pushPayload);
showToast('Initial URL is ' + pushPayload.url);
handleOpenUrl({ pushPayload.url });
}
});

Este método requiere la configuración nativa del paso 3.1 para tu plataforma. Si utilizas el complemento Braze Expo, es posible que esto se gestione automáticamente.
Paso 3.3: Habilitar enlaces universales (opcional)
Para habilitar la compatibilidad con enlaces universales, implementa un delegado de Braze que determine si se debe abrir una URL determinada y, a continuación, regístralo en tu instancia de Braze.
Crea un archivo BrazeReactDelegate.swift en tu directorio iOS y añade lo siguiente. Reemplaza YOUR_DOMAIN_HOST por tu dominio real.
import Foundation
import BrazeKit
import UIKit
class BrazeReactDelegate: NSObject, BrazeDelegate {
/// This delegate method determines whether to open a given URL.
/// Reference the context to get additional details about the URL payload.
func braze(_ braze: Braze, shouldOpenURL context: Braze.URLContext) -> Bool {
if let host = context.url.host,
host.caseInsensitiveCompare("YOUR_DOMAIN_HOST") == .orderedSame {
// Sample custom handling of universal links
let application = UIApplication.shared
let userActivity = NSUserActivity(activityType: NSUserActivityTypeBrowsingWeb)
userActivity.webpageURL = context.url
// Routes to the `continueUserActivity` method, which should be handled in your AppDelegate.
application.delegate?.application?(
application,
continue: userActivity,
restorationHandler: { _ in }
)
return false
}
// Let Braze handle links otherwise
return true
}
}
A continuación, crea y registra tu BrazeReactDelegate en didFinishLaunchingWithOptions del archivo AppDelegate.swift de tu proyecto.
import BrazeKit
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze?
// Keep a strong reference to the BrazeDelegate so it is not deallocated.
private var brazeDelegate: BrazeReactDelegate?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
// Other setup code (e.g., Braze initialization)
brazeDelegate = BrazeReactDelegate()
AppDelegate.braze?.delegate = brazeDelegate
return true
}
}
Crea un archivo BrazeReactDelegate.h en tu directorio iOS y, a continuación, añade el siguiente fragmento de código.
#import <Foundation/Foundation.h>
#import <BrazeKit/BrazeKit-Swift.h>
@interface BrazeReactDelegate: NSObject<BrazeDelegate>
@end
A continuación, crea un archivo BrazeReactDelegate.m y añade el siguiente fragmento de código. Reemplaza YOUR_DOMAIN_HOST por tu dominio real.
#import "BrazeReactDelegate.h"
#import <UIKit/UIKit.h>
@implementation BrazeReactDelegate
/// This delegate method determines whether to open a given URL.
///
/// Reference the `BRZURLContext` object to get additional details about the URL payload.
- (BOOL)braze:(Braze *)braze shouldOpenURL:(BRZURLContext *)context {
if ([[context.url.host lowercaseString] isEqualToString:@"YOUR_DOMAIN_HOST"]) {
// Sample custom handling of universal links
UIApplication *application = UIApplication.sharedApplication;
NSUserActivity* userActivity = [[NSUserActivity alloc] initWithActivityType:NSUserActivityTypeBrowsingWeb];
userActivity.webpageURL = context.url;
// Routes to the `continueUserActivity` method, which should be handled in your `AppDelegate`.
[application.delegate application:application
continueUserActivity:userActivity restorationHandler:^(NSArray<id<UIUserActivityRestoring>> * _Nullable restorableObjects) {}];
return NO;
}
// Let Braze handle links otherwise
return YES;
}
@end
A continuación, crea y registra tu BrazeReactDelegate en didFinishLaunchingWithOptions del archivo AppDelegate.m de tu proyecto.
#import "BrazeReactUtils.h"
#import "BrazeReactDelegate.h"
@interface AppDelegate ()
// Keep a strong reference to the BrazeDelegate to ensure it is not deallocated.
@property (nonatomic, strong) BrazeReactDelegate *brazeDelegate;
@end
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Other setup code
self.brazeDelegate = [[BrazeReactDelegate alloc] init];
braze.delegate = self.brazeDelegate;
}
Para ver un ejemplo de integración, consulta nuestra aplicación de muestra en este ejemplo de AppDelegate.
Paso 4: Gestionar las notificaciones en primer plano
La gestión de las notificaciones en primer plano funciona de manera diferente según la plataforma y la configuración. Elige el enfoque que mejor se adapte a tu integración:
En iOS, la gestión de las notificaciones en primer plano es igual que en la integración nativa de Swift. Llama a handleForegroundNotification(notification:) dentro de tu implementación de UNUserNotificationCenterDelegate.userNotificationCenter(_:willPresent:withCompletionHandler:).
Para obtener información detallada y ejemplos de código, consulta Gestión de notificaciones en primer plano en la documentación sobre notificaciones push de Swift.
En Android, la gestión de las notificaciones en primer plano es igual que en la integración nativa de Android. Llama a BrazeFirebaseMessagingService.handleBrazeRemoteMessage dentro de tu método FirebaseMessagingService.onMessageReceived.
Para obtener información detallada y ejemplos de código, consulta Gestión de notificaciones en primer plano en la documentación sobre notificaciones push de Android.
En el flujo de trabajo gestionado por Expo, no se llama directamente a los controladores de notificaciones nativos. En su lugar, utiliza la API de notificaciones de Expo para controlar la presentación en primer plano, mientras que el complemento Braze Expo se encarga automáticamente del procesamiento nativo.
import * as Notifications from 'expo-notifications';
import Braze from '@braze/react-native-sdk';
// Control foreground presentation in Expo
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowAlert: true, // Show alert while in foreground
shouldPlaySound: false,
shouldSetBadge: false,
}),
});
// React to Braze push events
const subscription = Braze.addListener('pushNotificationEvent', (event) => {
console.log('Braze push event', {
type: event.payload_type, // "push_received" | "push_opened"
title: event.title,
url: event.url,
is_silent: event.is_silent,
});
// Handle deep links, custom behavior, etc.
});
// Handle initial payload when app launches via push
Braze.getInitialPushPayload((payload) => {
if (payload) {
console.log('Initial push payload', payload);
}
});

En el flujo de trabajo gestionado por Expo, el complemento Braze Expo se encarga automáticamente del procesamiento push nativo. Puedes controlar la interfaz de usuario en primer plano a través de las opciones de presentación de notificaciones de Expo que se muestran arriba.
Para integraciones con flujo de trabajo básico, sigue los enfoques nativos de iOS y Android.
Paso 5: Enviar una notificación push de prueba
En este punto, deberías poder enviar notificaciones a los dispositivos. Sigue los pasos siguientes para probar tu integración push.

A partir de macOS 13, en determinados dispositivos, puedes probar las notificaciones push de iOS en un simulador de iOS 16+ que se ejecute en Xcode 14 o superior. Para más detalles, consulta las Notas de la versión de Xcode 14.
- Establece un usuario activo en la aplicación React Native llamando al método
Braze.changeUserId('your-user-id'). - Ve a Campaigns y crea una nueva Campaign de notificación push. Elige las plataformas que deseas probar.
- Redacta tu notificación de prueba y dirígete a la pestaña Test. Añade el mismo
user-idque el usuario de prueba y haz clic en Send Test. En breve recibirás la notificación en tu dispositivo.

Uso del plugin de Expo
Después de configurar las notificaciones push para Expo, puedes usarlo para gestionar los siguientes comportamientos de notificaciones push, sin necesidad de escribir código en las capas nativas de Android o iOS.
Reenviar push de Android a un FMS adicional
Si deseas utilizar un Firebase Messaging Service (FMS) adicional, puedes especificar un FMS alternativo al que llamar si tu aplicación recibe un push que no proviene de Braze. Por ejemplo:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
...
"androidFirebaseMessagingFallbackServiceEnabled": true,
"androidFirebaseMessagingFallbackServiceClasspath": "com.company.OurFirebaseMessagingService"
}
]
]
}
}
Uso de extensiones de aplicación con Expo Application Services
Si utilizas Expo Application Services (EAS) y has habilitado enableBrazeIosRichPush o enableBrazeIosPushStories, tendrás que declarar los identificadores de paquete correspondientes para cada extensión de aplicación en tu proyecto. Hay varias formas de abordar este paso, dependiendo de cómo tu proyecto esté configurado para gestionar la firma de código con EAS.
Un enfoque es utilizar la configuración appExtensions en tu archivo app.json siguiendo la documentación de extensiones de aplicación de Expo. Alternativamente, puedes configurar el ajuste multitarget en tu archivo credentials.json siguiendo la documentación de credenciales locales de Expo.
Solución de problemas
Estos son pasos comunes de solución de problemas para integraciones de notificaciones push con el SDK de Braze para React Native y el plugin de Expo.
Las notificaciones push dejaron de funcionar
Si las notificaciones push a través del plugin de Expo dejaron de funcionar:
- Comprueba que el SDK de Braze sigue rastreando sesiones.
- Comprueba que el SDK no fue deshabilitado por una llamada explícita o implícita a
wipeData. - Revisa las actualizaciones recientes de Expo o sus bibliotecas relacionadas, ya que puede haber conflictos con tu configuración de Braze.
- Revisa las dependencias del proyecto añadidas recientemente y comprueba si están sobrescribiendo manualmente tus métodos delegados de notificaciones push existentes.

Para integraciones en iOS, también puedes consultar nuestro tutorial de configuración de notificaciones push para ayudarte a identificar posibles conflictos con las dependencias de tu proyecto.
El token del dispositivo no se registra con Braze
Si el token de tu dispositivo no se registra con Braze, primero revisa Las notificaciones push dejaron de funcionar.
Si el problema persiste, puede haber una dependencia independiente que interfiere con tu configuración de notificaciones push de Braze. Puedes intentar eliminarla o llamar manualmente a Braze.registerPushToken en su lugar.
Los vínculos profundos desde las notificaciones push no se abren
Si los vínculos profundos desde las notificaciones push dejan de abrirse después de una migración, comprueba lo siguiente:
- Verifica que tu configuración de React Native Linking sigue siendo válida en tu aplicación actualizada.
- Para integraciones nativas de iOS, confirma que implementaste
populateInitialPayloadFromLaunchOptionsyBraze.getInitialPushPayloadde modo que, cuando la aplicación se inicia desde un estado terminado, pueda recuperar la carga útil push inicial y pasar suurla tu controlador de vínculos profundos. - Si estás usando el plugin de Braze para Expo, verifica que
androidHandlePushDeepLinksAutomaticallyesté configurado correctamente para tu implementación. - Revisa las dependencias añadidas recientemente en busca de sobrescrituras en el manejo de notificaciones o el comportamiento del delegado de la aplicación.
Si completaste estas verificaciones y el problema persiste, abre un ticket de soporte e incluye los registros del SDK y los pasos de reproducción.
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK Web de Braze. También tendrás que configurar las notificaciones push para el SDK Web. Ten en cuenta que solo puedes enviar notificaciones push a usuarios de iOS y iPadOS que utilicen Safari v16.4 o posterior.
Configurar push de Safari para móvil
Paso 1: Crear un archivo de manifiesto
Un manifiesto de aplicación web es un archivo JSON que controla cómo se presenta tu sitio web cuando se instala en la pantalla de inicio de un usuario.
Por ejemplo, puedes configurar el color del tema de fondo y el icono que utiliza el selector de aplicaciones, si se renderiza a pantalla completa para parecerse a una aplicación nativa, o si la aplicación debe abrirse en modo horizontal o vertical.
Crea un nuevo archivo manifest.json en el directorio raíz de tu sitio web, con los siguientes campos obligatorios.
{
"name": "your app name",
"short_name": "your app name",
"display": "fullscreen",
"icons": [{
"src": "favicon.ico",
"sizes": "128x128",
}]
}
La lista completa de campos compatibles se encuentra en la documentación de manifiesto de aplicación web de MDN.
Paso 2: Enlazar el archivo de manifiesto
Añade la siguiente etiqueta <link> al elemento <head> de tu sitio web, apuntando a la ubicación donde está alojado tu archivo de manifiesto.
<link rel="manifest" href="/manifest.json" />
Paso 3: Añadir un prestador de servicios
Tu sitio web debe tener un archivo de prestador de servicios que importe la biblioteca de prestador de servicios de Braze, como se describe en nuestra guía de integración de notificaciones push web.
Paso 4: Añadir a la pantalla de inicio
Los navegadores más populares (como Safari, Chrome, FireFox y Edge) son compatibles con las notificaciones push web en sus versiones más recientes. Para solicitar permiso de push en iOS o iPadOS, tu sitio web debe añadirse a la pantalla de inicio del usuario seleccionando Compartir > Añadir a la pantalla de inicio. Añadir a la pantalla de inicio permite a los usuarios guardar tu sitio web como marcador, añadiendo tu icono a su valiosa pantalla de inicio.

Paso 5: Mostrar el aviso nativo de push
Después de que la aplicación se haya añadido a tu pantalla de inicio, puedes solicitar permiso de push cuando el usuario realice una acción (como hacer clic en un botón). Esto se puede hacer utilizando el método requestPushPermission, o con un mensaje dentro de la aplicación de preparación push sin código.

Después de aceptar o rechazar el aviso, necesitas eliminar y reinstalar el sitio web en tu pantalla de inicio para poder mostrar el aviso de nuevo.

Por ejemplo:
import { requestPushPermission } from "@braze/web-sdk";
button.onclick = function(){
requestPushPermission(() => {
console.log(`User accepted push prompt`);
}, (temporary) => {
console.log(`User ${temporary ? "temporarily dismissed" : "permanently denied"} push prompt`);
});
};
Próximos pasos
A continuación, envíate un mensaje de prueba para validar la integración. Una vez completada la integración, puedes usar nuestros mensajes push primer sin código para optimizar tus tasas de adhesión voluntaria push.
Requisitos previos
Antes de poder utilizar esta característica, tendrás que integrar el SDK de Unity de Braze.
Configurar notificaciones push
Paso 1: Configurar la plataforma
Paso 1.1: Habilitar Firebase
Para empezar, sigue la documentación de configuración de Firebase Unity.

Integrar el SDK de Firebase Unity puede provocar que se sobrescriba tu AndroidManifest.xml. Si eso ocurre, asegúrate de revertirlo al original.
Paso 1.2: Configurar tus credenciales de Firebase
Debes introducir tu clave de servidor de Firebase y el ID de remitente en el panel de Braze. Para ello, inicia sesión en la consola de desarrolladores de Firebase y selecciona tu proyecto de Firebase. A continuación, selecciona Cloud Messaging en Settings y copia la clave de servidor y el ID de remitente:
En Braze, selecciona tu aplicación Android en la página App Settings dentro de Manage Settings. A continuación, introduce tu clave de servidor de Firebase en el campo Firebase Cloud Messaging Server Key y el ID de remitente de Firebase en el campo Firebase Cloud Messaging Sender ID.

Paso 1.1: Verificar el método de integración
Braze proporciona una solución nativa de Unity para automatizar las integraciones push en iOS. Si prefieres configurar y gestionar tu integración manualmente, consulta Swift: Notificaciones push.
De lo contrario, continúa con el siguiente paso.

Nuestra solución automática de notificaciones push aprovecha la característica de autorización provisional de iOS 12 y no está disponible para usarse con la ventana emergente nativa de solicitud push.
Paso 1.1: Habilitar ADM
- Crea una cuenta en el portal de desarrolladores de Amazon Apps & Games si aún no lo has hecho.
- Obtén las credenciales OAuth (ID de cliente y secreto de cliente) y una clave de API de ADM.
- Habilita Automatic ADM Registration Enabled en la ventana de configuración de Unity Braze.
- Alternativamente, puedes añadir la siguiente línea a tu archivo
res/values/braze.xmlpara habilitar el registro de ADM:
- Alternativamente, puedes añadir la siguiente línea a tu archivo
<bool name="com_braze_push_adm_messaging_registration_enabled">true</bool>
Paso 2: Configurar notificaciones push
Paso 2.1: Configurar los ajustes push
El SDK de Braze puede gestionar automáticamente el registro push con los servidores de Firebase Cloud Messaging para que los dispositivos reciban notificaciones push. En Unity, habilita Automate Unity Android Integration y luego configura los siguientes ajustes de Push Notification.
| Ajuste | Descripción |
|---|---|
| Automatic Firebase Cloud Messaging Registration Enabled | Indica al SDK de Braze que obtenga y envíe automáticamente un token push de FCM para un dispositivo. |
| Firebase Cloud Messaging Sender ID | El ID de remitente de tu consola de Firebase. |
| Handle Push Deeplinks Automatically | Si el SDK debe gestionar la apertura de vínculos profundos o de la aplicación cuando se hace clic en las notificaciones push. |
| Small Notification Icon Drawable | Referencia del recurso drawable de Android para el icono pequeño que se muestra cuando llega una notificación push. Introduce la referencia completa incluyendo el prefijo @drawable/ (por ejemplo, @drawable/hourglass_icon). La integración automatizada escribe este valor en braze.xml tal como se introduce. Si dejas este campo vacío, la notificación usa el icono de la aplicación como icono pequeño. |
| Large Notification Icon Drawable | Icono grande opcional para las notificaciones. Usa el mismo formato @drawable/ que el icono pequeño (por ejemplo, @drawable/my_large_icon). |

Small Notification Icon Drawable y Large Notification Icon Drawable aparecen en Push Configuration dentro de Braze > Braze Configuration. Ambos valores se escriben en braze.xml tal como los introduces. Incluye tú mismo el prefijo @drawable/; la integración de Braze Unity no lo añade por ti (por ejemplo, <drawable name="com_braze_push_small_notification_icon">@drawable/hourglass_icon</drawable>).
Paso 2.1: Cargar tu token de APNs
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:
- En tu cuenta de desarrollador de Apple, ve a Certificates, Identifiers & Profiles.
- En Keys, selecciona All y haz clic en el botón de añadir (+) en la parte superior de la página.
- En Key Description, introduce un nombre único para la clave de firma.
- En Key Services, selecciona la casilla Apple Push Notification service (APNs) y, a continuación, haz clic en Continue. Haz clic en Confirm.
- 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.
- En Braze, ve a Configuración > Configuración de la aplicación y carga el archivo
.p8en 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. - 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.
- Cuando hayas terminado, selecciona Guardar.
Paso 2.2: Habilitar push automático
Abre los ajustes de configuración de Braze en el editor de Unity navegando a Braze > Braze Configuration.
Marca Integrate Push With Braze para registrar automáticamente a los usuarios en las notificaciones push, pasar tokens push a Braze, hacer seguimiento de análisis de aperturas push y aprovechar nuestra gestión predeterminada de notificaciones push.
Paso 2.3: Habilitar push en segundo plano (opcional)
Marca Enable Background Push si quieres habilitar el background mode para las notificaciones push. Esto permite que el sistema despierte tu aplicación del estado suspended cuando llega una notificación push, permitiendo que tu aplicación descargue contenido en respuesta a las notificaciones push. Marcar esta opción es necesario para nuestra funcionalidad de Uninstall Tracking.

Paso 2.4: Desactivar el registro automático (opcional)
Los usuarios que aún no hayan dado su consentimiento para las notificaciones push serán autorizados automáticamente al abrir tu aplicación. Para desactivar esta característica y registrar manualmente a los usuarios para push, marca Disable Automatic Push Registration.
- Si Disable Provisional Authorization no está marcada en iOS 12 o posterior, el usuario será autorizado provisionalmente (silenciosamente) para recibir notificaciones push silenciosas. Si está marcada, se mostrará al usuario la solicitud push nativa.
- Si necesitas configurar exactamente cuándo se muestra la solicitud en tiempo de ejecución, desactiva el registro automático desde el editor de configuración de Braze y usa
AppboyBinding.PromptUserForPushPermissions()en su lugar.

Paso 2.1: Actualizar AndroidManifest.xml
Si tu aplicación no tiene un AndroidManifest.xml, puedes usar el siguiente como plantilla. De lo contrario, si ya tienes un AndroidManifest.xml, asegúrate de que cualquiera de las secciones faltantes a continuación se añada a tu AndroidManifest.xml existente.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="REPLACE_WITH_YOUR_PACKAGE_NAME">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<permission
android:name="REPLACE_WITH_YOUR_PACKAGE_NAME.permission.RECEIVE_ADM_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="REPLACE_WITH_YOUR_PACKAGE_NAME.permission.RECEIVE_ADM_MESSAGE" />
<uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE" />
<application android:icon="@drawable/app_icon"
android:label="@string/app_name">
<!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
<activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:screenOrientation="sensor">
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.braze.push.BrazeAmazonDeviceMessagingReceiver" android:permission="com.amazon.device.messaging.permission.SEND">
<intent-filter>
<action android:name="com.amazon.device.messaging.intent.RECEIVE" />
<action android:name="com.amazon.device.messaging.intent.REGISTRATION" />
<category android:name="REPLACE_WITH_YOUR_PACKAGE_NAME" />
</intent-filter>
</receiver>
</application>
</manifest>
Paso 2.2: Almacenar tu clave de API de ADM
Primero, genera una clave de API de ADM para tu aplicación, luego guarda la clave en un archivo llamado api_key.txt y añádelo en el directorio Assets/ de tu proyecto.

Amazon no reconocerá tu clave si api_key.txt contiene caracteres de espacio en blanco, como un salto de línea al final.
A continuación, en tu archivo mainTemplate.gradle, añade lo siguiente:
task copyAmazon(type: Copy) {
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
from unityProjectPath + '/Assets/api_key.txt'
into new File(projectDir, 'src/main/assets')
}
preBuild.dependsOn(copyAmazon)
Paso 2.3: Añadir el JAR de ADM
El archivo JAR de ADM requerido puede colocarse en cualquier lugar de tu proyecto según la documentación de JAR de Unity.
Paso 2.4: Añadir el secreto de cliente y el ID de cliente a tu panel de Braze
Por último, debes añadir el secreto de cliente y el ID de cliente que obtuviste en el paso 1 a la página Manage Settings del panel de Braze.

Paso 3: Configurar listeners push
Paso 3.1: Habilitar el listener de push recibido
El listener de push recibido se activa cuando un usuario recibe una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push recibido en Set Push Received Listener.
Paso 3.2: Habilitar el listener de push abierto
El listener de push abierto se activa cuando un usuario abre la aplicación haciendo clic en una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push abierto en Set Push Opened Listener.
Paso 3.3: Habilitar el listener de push eliminado
El listener de push eliminado se activa cuando un usuario desliza o descarta una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push eliminado en Set Push Deleted Listener.
Ejemplo de listener push
El siguiente ejemplo implementa el objeto del juego BrazeCallback usando un nombre de método de devolución de llamada de PushNotificationReceivedCallback, PushNotificationOpenedCallback y PushNotificationDeletedCallback respectivamente.

public class MainMenu : MonoBehaviour {
void PushNotificationReceivedCallback(string message) {
#if UNITY_ANDROID
Debug.Log("PushNotificationReceivedCallback message: " + message);
PushNotification pushNotification = new PushNotification(message);
Debug.Log("Push Notification received: " + pushNotification);
#elif UNITY_IOS
ApplePushNotification pushNotification = new ApplePushNotification(message);
Debug.Log("Push received Notification event: " + pushNotification);
#endif
}
void PushNotificationOpenedCallback(string message) {
#if UNITY_ANDROID
Debug.Log("PushNotificationOpenedCallback message: " + message);
PushNotification pushNotification = new PushNotification(message);
Debug.Log("Push Notification opened: " + pushNotification);
#elif UNITY_IOS
ApplePushNotification pushNotification = new ApplePushNotification(message);
Debug.Log("Push opened Notification event: " + pushNotification);
#endif
}
void PushNotificationDeletedCallback(string message) {
#if UNITY_ANDROID
Debug.Log("PushNotificationDeletedCallback message: " + message);
PushNotification pushNotification = new PushNotification(message);
Debug.Log("Push Notification dismissed: " + pushNotification);
#endif
}
}
Paso 3.1: Habilitar el listener de push recibido
El listener de push recibido se activa cuando un usuario recibe una notificación push mientras usa activamente la aplicación (por ejemplo, cuando la aplicación está en primer plano). Configura el listener de push recibido en el editor de configuración de Braze. Si necesitas configurar tu listener del objeto del juego en tiempo de ejecución, usa AppboyBinding.ConfigureListener() y especifica BrazeUnityMessageType.PUSH_RECEIVED.

Paso 3.2: Habilitar el listener de push abierto
El listener de push abierto se activa cuando un usuario abre la aplicación haciendo clic en una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push abierto en la opción Set Push Opened Listener:

Si necesitas configurar tu listener del objeto del juego en tiempo de ejecución, usa AppboyBinding.ConfigureListener() y especifica BrazeUnityMessageType.PUSH_OPENED.
Ejemplo de listener push
El siguiente ejemplo implementa el objeto del juego AppboyCallback usando un nombre de método de devolución de llamada de PushNotificationReceivedCallback y PushNotificationOpenedCallback, respectivamente.

public class MainMenu : MonoBehaviour {
void PushNotificationReceivedCallback(string message) {
#if UNITY_ANDROID
Debug.Log("PushNotificationReceivedCallback message: " + message);
PushNotification pushNotification = new PushNotification(message);
Debug.Log("Push Notification received: " + pushNotification);
#elif UNITY_IOS
ApplePushNotification pushNotification = new ApplePushNotification(message);
Debug.Log("Push received Notification event: " + pushNotification);
#endif
}
void PushNotificationOpenedCallback(string message) {
#if UNITY_ANDROID
Debug.Log("PushNotificationOpenedCallback message: " + message);
PushNotification pushNotification = new PushNotification(message);
Debug.Log("Push Notification opened: " + pushNotification);
#elif UNITY_IOS
ApplePushNotification pushNotification = new ApplePushNotification(message);
Debug.Log("Push opened Notification event: " + pushNotification);
#endif
}
}
Al actualizar tu AndroidManifest.xml en el paso anterior, los listeners push se configuraron automáticamente cuando añadiste las siguientes líneas. Por lo tanto, no se requiere ninguna configuración adicional.
<action android:name="com.amazon.device.messaging.intent.RECEIVE" />
<action android:name="com.amazon.device.messaging.intent.REGISTRATION" />

Para obtener más información sobre los listeners push de ADM, consulta Amazon: Integrar Amazon Device Messaging.
Configuraciones opcionales
Vinculación en profundidad a recursos dentro de la aplicación
Aunque Braze puede gestionar vínculos profundos estándar (como URL de sitios web, URI de Android, etc.) de forma predeterminada, la creación de vínculos profundos personalizados requiere una configuración adicional del Manifest.
Para obtener orientación sobre la configuración, visita Deep Linking to In-App Resources.
Añadir iconos de notificaciones push de Braze

No añadas imágenes de iconos de notificación en Assets/Plugins/Android/res. Unity dejó obsoleto proporcionar recursos de Android en esa ruta, lo que puede generar advertencias de compilación o errores de validación. Empaqueta los drawables de tus iconos en un complemento Android Archive (AAR) o en un proyecto de biblioteca de Android para que se fusionen con los recursos de la aplicación compilada como cualquier otro drawable.
Para añadir iconos push a tu proyecto, crea un complemento AAR o una biblioteca de Android que contenga los archivos de imagen de iconos en res/drawable* (o carpetas específicas de densidad) y luego haz referencia a cada icono en Braze > Braze Configuration usando el nombre completo del recurso @drawable/ (consulta el Paso 2.1: Configurar los ajustes push). Para los pasos de empaquetado e importación en Unity, consulta Android Library Projects and Android Archive plug-ins.
Para las reglas de diseño de iconos pequeños (solo alfa, sin color), consulta Notificaciones push de Android, Paso 2: Ajustar los iconos pequeños a las directrices de diseño.
Devolución de llamada del token push
Para recibir una copia de los tokens de dispositivo de Braze del sistema operativo, establece un delegado usando AppboyBinding.SetPushTokenReceivedFromSystemDelegate().
No hay configuraciones opcionales para ADM en este momento.
Requisitos previos
Antes de poder utilizar esta característica, deberás integrar el SDK .NET MAUI de Braze.
Configurar las notificaciones push

Para ver cómo cambian los espacios de nombres entre Java y C#, consulta nuestra aplicación de ejemplo Xample en GitHub.
Para integrar notificaciones push en .NET MAUI (anteriormente Xamarin), tendrás que completar los pasos para las notificaciones push nativas de Android. Los siguientes pasos son solo un resumen. Para una guía completa, consulta la guía de notificaciones push nativas.
Paso 1: Actualiza tu proyecto
- Añade Firebase a tu proyecto de Android.
- Añade la biblioteca de Cloud Messaging al
build.gradlede tu proyecto de Android:implementation "google.firebase:firebase-messaging:+"
Paso 2: Crea tus credenciales JSON
- En Google Cloud, habilita la API de Firebase Cloud Messaging.
- Selecciona Service Accounts > tu proyecto > Create Service Account y, a continuación, introduce un nombre, un ID y una descripción para la cuenta de servicio. Cuando hayas terminado, selecciona Create and continue.
- En el campo Role, busca y selecciona Firebase Cloud Messaging API Admin en la lista de roles.
- En Service Accounts, elige tu proyecto y, a continuación, selecciona Actions > Manage Keys > Add Key > Create new key. Elige JSON y, a continuación, selecciona Create.
Paso 3: Sube tus credenciales JSON
- En Braze, selecciona Configuración > Configuración de la aplicación. En la sección Push Notification Settings de tu aplicación Android, elige Firebase y, a continuación, selecciona Upload JSON File y sube las credenciales que generaste anteriormente. Cuando hayas terminado, selecciona Save.
- Habilita el registro automático de tokens FCM accediendo a Firebase Console. Abre tu proyecto y, a continuación, selecciona Settings > Project settings. Selecciona Cloud Messaging y, en Firebase Cloud Messaging API (V1), copia el número del campo Sender ID.
- En tu proyecto de Android Studio, añade lo siguiente a tu
braze.xml.
<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>

Para evitar que Braze desencadene solicitudes de red innecesarias cada vez que envíes notificaciones push silenciosas, elimina cualquier solicitud de red automática configurada en el método onCreate() de tu clase Application. Para más información, consulta la referencia para desarrolladores de Android: Application.
Paso 1: Completa la configuración inicial
Consulta las instrucciones de integración de Swift para obtener información sobre cómo configurar tu aplicación con push y almacenar tus credenciales en nuestro servidor. Consulta la aplicación de ejemplo iOS MAUI para más detalles.
Paso 2: Solicita permiso para notificaciones push
Nuestro SDK de .NET MAUI ahora es compatible con la configuración automática de push. Configura la automatización y los permisos de push añadiendo el siguiente código a la configuración de tu instancia de Braze:
configuration.Push.Automation = new BRZConfigurationPushAutomation(true);
configuration.Push.Automation.RequestAuthorizationAtLaunch = false;
Consulta la aplicación de ejemplo iOS MAUI para más detalles. Para más información, consulta la documentación de Xamarin sobre notificaciones de usuario mejoradas en Xamarin.iOS.