Integra el SDK de Braze
Aprende a integrar el SDK de Braze. Cada SDK está alojado en su propio repositorio público de GitHub, que incluye aplicaciones de muestra totalmente compilables que puedes utilizar para probar las características de Braze o implementar junto con tus propias aplicaciones. Para obtener más información, consulta Referencias, repositorios y aplicaciones de ejemplo. Para obtener información más general sobre el SDK, consulta Introducción: Resumen de la integración.
Para ver el contenido del README del SDK reflejado en la documentación, consulta Guías de repositorios.

Después de integrar el SDK, puedes habilitar la autenticación del SDK para añadir una capa adicional de seguridad evitando las solicitudes no autorizadas al SDK. La autenticación del SDK está disponible para Web, Android, Swift, React Native, Flutter, Unity, Cordova, .NET MAUI (Xamarin) y Expo.

Si la inicialización del SDK falla con errores de confianza de certificados HTTPS (por ejemplo, SSLHandshakeException con Trust anchor for certification path not found), consulta Solución de problemas de errores de confianza de certificados del SDK.
Acerca del SDK Web de Braze
El SDK Web de Braze te permite recopilar análisis y mostrar mensajes enriquecidos dentro de la aplicación, push y Content Cards a tus usuarios web. Para obtener más información, consulta la documentación de referencia de JavaScript de Braze.

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.
Integrar el SDK Web
Puedes integrar el SDK Web de Braze utilizando los siguientes métodos. Para opciones adicionales, consulta otros métodos de integración.
- Integración basada en código: Integra el SDK Web de Braze directamente en tu base de código utilizando tu administrador de paquetes preferido o el CDN de Braze. Esto te da control total sobre cómo se carga y configura el SDK.
- Google Tag Manager: Una solución sin código que te permite integrar el SDK Web de Braze sin modificar el código de tu sitio. Para más información, consulta Google Tag Manager con el SDK de Braze.

Recomendamos utilizar el método de integración con NPM. Los beneficios incluyen almacenar las bibliotecas del SDK de forma local en tu sitio web, proporcionar inmunidad frente a extensiones de bloqueo de anuncios y contribuir a tiempos de carga más rápidos como parte del soporte de empaquetadores.
Paso 1: Instala la biblioteca de Braze
Puedes instalar la biblioteca de Braze utilizando uno de los siguientes métodos. Sin embargo, si tu sitio web utiliza una Content-Security-Policy, revisa la Política de seguridad de contenido antes de continuar.

Aunque la mayoría de los bloqueadores de anuncios no bloquean el SDK Web de Braze, algunos bloqueadores más restrictivos pueden causar problemas.
Si tu sitio utiliza los administradores de paquetes NPM o Yarn, puedes añadir el paquete NPM de Braze como dependencia.
Las definiciones de Typescript se incluyen a partir de la v3.0.0. Para notas sobre la actualización de 2.x a 3.x, consulta nuestro registro de cambios.
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk
Una vez instalado, puedes usar import o require de la forma habitual:
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");
Añade el SDK Web de Braze directamente a tu HTML haciendo referencia a nuestro script alojado en CDN, que carga la biblioteca de forma asíncrona.

La configuración predeterminada Impedir seguimiento entre sitios en Safari puede impedir que los tipos de mensajes dentro de la aplicación como Banners y Content Cards se muestren cuando utilizas el método de integración con CDN. Para evitar este problema, utiliza el método de integración con NPM para que Safari no clasifique estos mensajes como tráfico entre sitios y tus usuarios web puedan verlos en todos los navegadores compatibles.
Paso 2: Inicializa el SDK
Después de añadir el SDK Web de Braze a tu sitio web, inicializa la biblioteca con la clave de API y la URL del endpoint del SDK que se encuentran en Configuración > Configuración de la aplicación dentro de tu panel de Braze. Para una lista completa de opciones para braze.initialize(), junto con nuestros otros métodos de JavaScript, consulta la documentación de JavaScript de Braze.

Los dominios personalizados para solicitudes del SDK Web no son compatibles: El baseUrl del SDK Web debe ser un endpoint del SDK de Braze (por ejemplo, sdk.iad-05.braze.com). Braze no admite el enrutamiento del tráfico del SDK Web a través de un dominio propiedad del cliente mediante registros CNAME. Si necesitas que las solicitudes del SDK Web se originen desde tu propio dominio, contacta con el soporte de Braze.
// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
enableLogging: false, // set to `true` for debugging
allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});
// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();
// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
// cards have been updated
});
// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
braze.changeUser(userIdentifier);
}
// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();

Visualización de In-App Messages: Para mostrar los mensajes dentro de la aplicación automáticamente cuando se desencadenan, debes llamar a braze.automaticallyShowInAppMessages(). Sin esta llamada, los mensajes dentro de la aplicación no se muestran automáticamente. Si deseas gestionar la visualización de mensajes manualmente, elimina esta llamada y utiliza braze.subscribeToInAppMessage() en su lugar. Para más información, consulta Desactivar desencadenadores automáticos.
Solución de problemas de sesiones faltantes para usuarios anónimos
Si observas un comportamiento de “sesión faltante”, o no puedes realizar el seguimiento de la sesión para usuarios que permanecen anónimos en la web, asegúrate de que tu integración llame a braze.openSession() durante la inicialización.
- Escenario: Los usuarios anónimos pueden devolver un ID de Braze, pero los datos de la sesión están vacíos o faltan.
- Causa: La implementación no llama a
braze.openSession(). - Resolución: Llama siempre a
braze.openSession()después de la inicialización (y después debraze.changeUser()si estableces un ID externo).
Para más información, consulta Paso 2: Inicializa el SDK.

Los usuarios anónimos en dispositivos móviles o web pueden contabilizarse en tus MAU. Como resultado, es posible que desees cargar o inicializar el SDK de forma condicional para excluir a estos usuarios de tu recuento de MAU.
Requisitos previos
Antes de poder utilizar este método de integración, deberás crear una cuenta y un contenedor para Google Tag Manager.
Paso 1: Abre la galería de plantillas de etiquetas
En Google Tag Manager, elige tu espacio de trabajo y, a continuación, selecciona Templates. En el panel Tag Template, selecciona Search Gallery.

Paso 2: Añade la plantilla de etiqueta de inicialización
En la galería de plantillas, busca braze-inc y selecciona Braze Initialization Tag.

Selecciona Add to workspace > Add.

Paso 3: Configura la etiqueta
En la sección Templates, selecciona la plantilla que acabas de añadir.

Selecciona el icono del lápiz para abrir el menú desplegable Tag Configuration.

Introduce la información mínima requerida:
| Campo | Descripción |
|---|---|
| API Key | Tu clave de API de Braze, que se encuentra en el panel de Braze en Settings > App Settings. |
| API Endpoint | La URL de tu endpoint REST. Tu endpoint dependerá de la URL de Braze para tu instancia. |
| SDK Version | La versión MAJOR.MINOR más reciente del SDK Web de Braze que aparece en el registro de cambios. Por ejemplo, si la última versión es 4.1.2, introduce 4.1. Para más información, consulta Acerca de la gestión de versiones del SDK. |
Para configuraciones de inicialización adicionales, selecciona Braze Initialization Options y elige las opciones que necesites.

Paso 4: Elige las opciones de inicialización
La etiqueta de inicialización de Braze expone las siguientes opciones. La mayoría se mapean directamente a las InitializationOptions del SDK Web, y algunas corresponden a métodos del SDK Web que la etiqueta llamará durante la inicialización. Selecciona las opciones que se ajusten a tus necesidades de integración:
| Opción GTM | Configuración o método del SDK Web | Descripción |
|---|---|---|
| Allow HTML In-App Messages | allowUserSuppliedJavascript |
Habilita mensajes HTML dentro de la aplicación, banners y acciones de clic JavaScript proporcionadas por el usuario. Necesario para mensajes HTML dentro de la aplicación y banners que utilizan HTML personalizado. Habilita esta opción solo si confías en el contenido HTML y JavaScript, ya que permite la ejecución de JavaScript proporcionado por el usuario. |
| App Version Number | appVersion, appVersionNumber |
Versión de la aplicación para segmentación (por ejemplo, 1.2.3.4). |
| Automatically Open New Session | braze.openSession() |
Abre una nueva sesión después de que el SDK se inicialice llamando a este método por ti. |
| Automatically show new in app messages | braze.automaticallyShowInAppMessages() |
Muestra automáticamente los nuevos mensajes dentro de la aplicación cuando llegan del servidor llamando a este método después de la inicialización. |
| Disable Automatic Push Token Maintenance | disablePushTokenMaintenance |
Impide que el SDK sincronice los tokens de notificaciones push con el backend de Braze en las nuevas sesiones. |
| Disable Automatic Service Worker Registration | manageServiceWorkerExternally |
Úsalo si tú mismo realizas el registro y controlas el prestador de servicios. |
| Disable Cookies | noCookies |
Utiliza localStorage en lugar de cookies para los datos de usuario/sesión. Evita el reconocimiento entre subdominios. |
| Disable Font Awesome | doNotLoadFontAwesome |
Evita que el SDK cargue Font Awesome desde el CDN. Úsalo si tu sitio tiene su propio Font Awesome. |
| Enable SDK Authentication | enableSdkAuthentication |
Habilita la autenticación del SDK. |
| Enable Web SDK Logging | enableLogging |
Habilita el registro en consola para depuración. Elimínalo antes de pasar a producción. |
| Minimum Interval Between Triggered Messages | minimumIntervalBetweenTriggerActionsInSeconds |
Segundos mínimos entre acciones desencadenantes (predeterminado: 30). |
| Open Cards in New Tab | openCardsInNewTab |
Abre los enlaces de las tarjetas de contenido en una nueva pestaña cuando se utiliza la interfaz de usuario predeterminada de la fuente. |
| Service Worker Location | serviceWorkerLocation |
Ruta personalizada para el archivo del prestador de servicios (predeterminado: /service-worker.js). |
| Session Timeout (seconds) | sessionTimeoutInSeconds |
Tiempo de espera de la sesión en segundos (predeterminado: 1800). |

Para habilitar los mensajes HTML personalizados dentro de la aplicación cuando utilices la etiqueta de inicialización de Braze de Google Tag Manager, selecciona Allow HTML In-App Messages en Braze Initialization Options. Esta casilla de verificación se mapea con la opción de inicialización allowUserSuppliedJavascript en braze.initialize() y la establece en true. La etiqueta de inicialización de Braze de Google Tag Manager utiliza esta etiqueta en lugar del nombre de la opción.
Para las opciones que no aparecen en la plantilla GTM (como contentSecurityNonce, localization o devicePropertyAllowlist), utiliza la inicialización en tiempo de ejecución.
Paso 5: Configura para que se desencadene en todas las páginas
La etiqueta de inicialización debe ejecutarse en todas las páginas de tu sitio web. Esto te permite utilizar los métodos del SDK de Braze y registrar análisis de notificaciones push web.

Secuenciación de etiquetas: La etiqueta de inicialización de Braze debe dispararse antes que cualquier otra etiqueta que llame a métodos del SDK de Braze (como braze.getUser() o braze.logCustomEvent()). Si los eventos personalizados, los atributos de usuario u otras llamadas a métodos de Braze se disparan antes de que el SDK se inicialice, puedes encontrar errores como Uncaught TypeError: Cannot read properties of undefined (reading 'getUser'). Para garantizar la secuenciación correcta, configura tu etiqueta de inicialización de Braze como una etiqueta de configuración o utiliza la característica de secuenciación de etiquetas de GTM para garantizar que se dispare primero. Para más información, consulta Secuenciación de etiquetas para etiquetas de acción de Braze.
Paso 6: Verifica tu integración
Puedes verificar tu integración utilizando cualquiera de las siguientes opciones:
- Opción 1: Con la herramienta de depuración de Google Tag Manager, puedes comprobar si la etiqueta de inicialización de Braze se desencadena correctamente en las páginas o eventos que has configurado.
- Opción 2: Comprueba si hay solicitudes de red realizadas a Braze desde tu página web. Además, la biblioteca global
window.brazedebería estar definida.
Filtrado del tráfico de bots
Los MAU pueden incluir un porcentaje de usuarios bot, lo que infla tu recuento de MAU. Aunque el SDK Web de Braze incluye detección integrada para algunos rastreadores web comunes (como los bots de motores de búsqueda y los bots de vista previa de redes sociales), es especialmente importante mantenerse proactivo con soluciones robustas para detectar bots, ya que las actualizaciones del SDK por sí solas no pueden detectar de forma consistente todos los bots nuevos.
Limitaciones de la detección de bots por parte del SDK
El SDK Web incluye una detección básica de bots basada en agentes de usuario que filtra los rastreadores conocidos. Sin embargo, este enfoque tiene limitaciones:
- Constantemente surgen nuevos bots: Las empresas de IA y otros actores crean regularmente nuevos bots que pueden camuflarse para evitar ser detectados.
- Suplantación de agente de usuario: Los bots sofisticados pueden imitar los agentes de usuario legítimos de los navegadores.
- Bots personalizados: Los usuarios sin conocimientos técnicos ahora pueden crear fácilmente bots utilizando modelos de lenguaje grandes (LLM), lo que hace que el comportamiento de los bots sea impredecible.
Implementación del filtrado de bots

Las soluciones que se describen a continuación son sugerencias generales. Adapta la lógica para filtrar bots a tu entorno y patrones de tráfico únicos.
La solución más sólida es implementar tu propia lógica para filtrar bots antes de inicializar el SDK de Braze. Los enfoques comunes incluyen:
Requerir interacción del usuario
Considera la posibilidad de retrasar la inicialización del SDK hasta que el usuario realice una interacción significativa, como aceptar un banner de consentimiento de cookies, desplazarse por la página o hacer clic. Este enfoque suele ser más fácil de implementar y puede resultar muy eficaz para filtrar el tráfico de bots.

Retrasar la inicialización del SDK hasta que se produzca la interacción del usuario puede provocar que los banners y las Content Cards tampoco se muestren hasta que se produzca dicha interacción.
Detección personalizada de bots
Implementa una detección personalizada basada en tus patrones específicos de tráfico de bots, tales como:
- Analizar las cadenas de agente de usuario en busca de patrones que hayas identificado en tu tráfico
- Comprobación de indicadores de navegador sin interfaz gráfica
- Uso de servicios de detección de bots de terceros
- Supervisión de señales de comportamiento específicas de tu sitio web
Ejemplo de inicialización condicional:
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE"
});
braze.automaticallyShowInAppMessages();
braze.openSession();
}
Buenas prácticas
- Analiza periódicamente tus datos de MAU y los patrones de tráfico web para identificar nuevos comportamientos de bots.
- Realiza pruebas exhaustivas para asegurarte de que tu filtro de bots no impida el seguimiento de usuarios legítimos.
- Actualiza tu lógica de filtrado basándote en los patrones de tráfico de bots que observes en tu entorno.
Configuraciones opcionales
Registro
Para habilitar rápidamente el registro, puedes añadir ?brazeLogging=true como parámetro a la URL de tu sitio web. Alternativamente, puedes habilitar el registro básico o personalizado. Para obtener un resumen centralizado en todas las plataformas, consulta Registro detallado.
Registro básico
Utiliza enableLogging para registrar mensajes básicos de depuración en la consola de JavaScript antes de que se inicialice el SDK.
enableLogging: true
Tu método debería ser similar al siguiente:
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
enableLogging: true
});
braze.openSession();
Utiliza braze.toggleLogging() para registrar mensajes básicos de depuración en la consola de JavaScript después de que se inicialice el SDK. Tu método debería ser similar al siguiente:
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

Los registros básicos son visibles para todos los usuarios, así que considera deshabilitarlos o cambiar a setLogger antes de liberar tu código en producción.
Registro personalizado
Utiliza setLogger para registrar mensajes de depuración personalizados en la consola de JavaScript. A diferencia de los registros básicos, estos registros no son visibles para los usuarios.
setLogger(loggerFunction: (message: STRING) => void): void
Reemplaza STRING con tu mensaje como un parámetro de cadena único. Tu método debería ser similar al siguiente:
braze.initialize('API-KEY');
braze.setLogger(function(message) {
console.log("Braze Custom Logger: " + message);
});
braze.openSession();
Actualizar el SDK

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.
Cuando haces referencia al SDK Web de Braze desde nuestra red de entrega de contenido, por ejemplo, https://js.appboycdn.com/web-sdk/a.a/braze.min.js (como recomiendan nuestras instrucciones de integración predeterminadas), tus usuarios reciben actualizaciones menores (correcciones de errores y características retrocompatibles, versiones a.a.a a a.a.z en este ejemplo) de forma automática cuando actualizan tu sitio.
Sin embargo, cuando lanzamos cambios importantes, necesitamos que actualices el SDK Web de Braze manualmente para garantizar que los cambios incompatibles no afecten tu integración. Además, si descargas nuestro SDK y lo alojas tú mismo, no recibes ninguna actualización de versión de forma automática y deberías actualizarlo manualmente para recibir las últimas características y correcciones de errores.
Puedes mantenerte al día con nuestra última versión siguiendo nuestro feed de lanzamientos con el lector RSS o servicio de tu preferencia, y consultar nuestro registro de cambios para ver un historial completo de las versiones de nuestro SDK Web. Para actualizar el SDK Web de Braze:
- Actualiza la versión de la biblioteca de Braze cambiando el número de versión de
https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.js, o en las dependencias de tu gestor de paquetes. - Si tienes integrada la notificación push web, actualiza el archivo del prestador de servicios en tu sitio. De forma predeterminada, se encuentra en
/service-worker.jsen el directorio raíz de tu sitio, pero la ubicación puede estar personalizada en algunas integraciones. Debes acceder al directorio raíz para alojar un archivo de prestador de servicios.
Debes actualizar estos dos archivos de forma coordinada para garantizar un funcionamiento correcto.
Otros métodos de integración
Páginas móviles aceleradas (AMP)
Ver más
Paso 1: Incluye el script de notificación push web de AMP
Añade la siguiente etiqueta de script asíncrono a tu head:
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>
Paso 2: Añade widgets de suscripción
Añade un widget al cuerpo de tu HTML que permita a los usuarios suscribirse y cancelar la suscripción a push.
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>
<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>
Paso 3: Añade helper-iframe y permission-dialog
El componente AMP Web Push crea una ventana emergente para gestionar las suscripciones push, por lo que debes añadir los siguientes archivos auxiliares a tu proyecto para habilitar esta característica:
Paso 4: Crea un archivo de prestador de servicios
Crea un archivo service-worker.js en el directorio raíz de tu sitio web y añade el siguiente fragmento de código:
Paso 5: Configura el elemento HTML de notificación push web de AMP
Añade el siguiente elemento HTML amp-web-push al cuerpo de tu HTML. Ten en cuenta que necesitas agregar tu apiKey y baseUrl como parámetros de consulta a service-worker-URL.
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>
Definición de módulos asíncronos (AMD)
Desactivar la compatibilidad
Si tu sitio utiliza RequireJS u otro cargador de módulos AMD, pero prefieres cargar el SDK Web de Braze mediante una de las otras opciones de esta lista, puedes cargar una versión de la biblioteca que no incluye compatibilidad con AMD. Esta versión de la biblioteca se puede cargar desde la siguiente ubicación CDN:
Cargador de módulos
Si utilizas RequireJS u otros cargadores de módulos AMD, te recomendamos alojar una copia de nuestra biblioteca y hacer referencia a ella como lo harías con otros recursos:
require(['path/to/braze.min.js'], function(braze) {
braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
// Required if you want in-app messages to display automatically
braze.automaticallyShowInAppMessages();
braze.openSession();
});
Electron
Electron no admite oficialmente las notificaciones push web (consulta: este problema en GitHub). Hay otras soluciones de código abierto que puedes probar y que no han sido probadas por Braze.
Framework Jest
Cuando uses Jest, es posible que veas un error similar a SyntaxError: Unexpected token 'export'. Para solucionarlo, ajusta tu configuración en package.json para ignorar el SDK de Braze:
"jest": {
"transformIgnorePatterns": [
"/node_modules/(?!@braze)"
]
}
Frameworks SSR
El SDK Web se ejecuta en un entorno de navegador. En frameworks SSR, inicializa Braze en un componente exclusivo del cliente para que tu servidor nunca ejecute código del SDK.
Importación dinámica independiente del framework
Si tu framework no aparece en esta sección, puedes importar Braze de forma dinámica desde un ciclo de vida exclusivo del cliente.
// MyComponent/braze-exports.js
// Export the parts of the SDK that you need.
export { initialize, openSession } from "@braze/web-sdk";
// MyComponent/MyComponent.js
useEffect(() => {
import("./braze-exports.js").then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Si usas webpack, puedes importar de forma dinámica solo exportaciones específicas del SDK.
// MyComponent.js
useEffect(() => {
import(
/* webpackExports: ["initialize", "openSession"] */
"@braze/web-sdk"
).then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Hook compartido para Next.js y Remix
Crea un hook reutilizable useBraze y llámalo cerca de la raíz de tu aplicación.
// hooks/useBraze.ts
import { useEffect, useRef } from "react";
export function useBraze() {
const didInit = useRef(false);
useEffect(() => {
if (didInit.current) {
return;
}
didInit.current = true;
import("@braze/web-sdk")
.then((braze) => {
const initialized = braze.initialize("YOUR-API-KEY-HERE", {
// Use your Braze Web SDK endpoint, such as sdk.iad-01.braze.com.
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: false,
});
if (!initialized) {
return;
}
// Optional: Identify signed-in users before opening a session.
// braze.changeUser("external-id");
// Optional: Automatically display in-app messages.
// braze.automaticallyShowInAppMessages();
braze.openSession();
})
.catch((error) => {
console.error("Unable to load Braze SDK:", error);
});
}, []);
}
Next.js (App Router)
Llama a useBraze en un componente del cliente que envuelva tu aplicación.
// app/components/AppRoot.tsx
"use client";
import type { ReactNode } from "react";
import { useBraze } from "../hooks/useBraze";
export function AppRoot({ children }: { children: ReactNode }) {
useBraze();
return <>{children}</>;
}
// app/layout.tsx
import type { ReactNode } from "react";
import { AppRoot } from "./components/AppRoot";
export default function RootLayout({
children,
}: {
children: ReactNode;
}) {
return (
<html lang="en">
<body>
<AppRoot>{children}</AppRoot>
</body>
</html>
);
}
Next.js (Pages Router)
Llama a useBraze en la parte superior de tu componente de aplicación personalizado.
// pages/_app.tsx
import type { AppProps } from "next/app";
import { useBraze } from "../hooks/useBraze";
export default function App({ Component, pageProps }: AppProps) {
useBraze();
return (
<Component {...pageProps} />
);
}
Remix
Llama a useBraze en la parte superior de tu componente de ruta raíz.
Para ejemplos de validación local de Remix, ejecuta PORT=4013 npm run dev.
// app/root.tsx
import { Outlet } from "@remix-run/react";
import { useBraze } from "./hooks/useBraze";
export default function App() {
useBraze();
return <Outlet />;
}
Registro de eventos y actualización de usuarios
Después de que useBraze inicialice el SDK en la raíz de tu aplicación, otros componentes del cliente pueden llamar a los métodos de Braze. Un patrón común es llamarlos dentro de acciones del usuario, como onClick o onSubmit. En el ejemplo, los métodos del SDK se cargan dentro del controlador de clic en lugar de en la parte superior del archivo. Esto mantiene el SDK Web fuera del código del servidor y carga solo lo que esa acción necesita. El comentario webpackExports le indica a webpack qué métodos incluir, de modo que tu bundle se mantenga más pequeño.
// app/components/BuyButton.tsx
"use client";
export function BuyButton() {
const handleClick = async () => {
const { logCustomEvent, logPurchase, getUser } = await import(
/* webpackExports: ["logCustomEvent", "logPurchase", "getUser"] */
"@braze/web-sdk"
);
getUser()?.setCustomUserAttribute("last_purchase_date", "2026-05-04");
logCustomEvent("clicked_buy", { source: "product_page" });
logPurchase("sku_123", 19.99, "USD");
};
return <button onClick={handleClick}>Buy</button>;
}
Este ejemplo muestra un componente BuyButton que registra actividad cuando alguien hace clic en Buy. Primero, importa solo logCustomEvent, logPurchase y getUser en el momento del clic. Luego actualiza un atributo de usuario, registra un evento personalizado y registra una compra. Este patrón te ayuda a mantener la inicialización centralizada en useBraze, mientras sigues realizando el seguimiento de acciones significativas desde cualquier componente del cliente.
Si usas Remix con Vite y las importaciones desde la raíz del paquete fallan en tiempo de ejecución, utiliza la solución alternativa existente de Vite. Para más información, consulta Vite.
Para una lista completa de los métodos disponibles, consulta la documentación de referencia de JavaScript de Braze.
Tealium iQ
Tealium iQ ofrece una integración básica lista para usar con Braze. Para configurar la integración, busca Braze en la interfaz de Tealium Tag Management y proporciona la clave de API del SDK Web desde tu panel.
Para más detalles o asistencia de configuración avanzada de Tealium, consulta nuestra documentación de integración o contacta a tu director de cuentas de Tealium.
Vite
Si usas Vite y ves una advertencia sobre dependencias circulares o Uncaught TypeError: Class extends value undefined is not a constructor or null, es posible que necesites excluir el SDK de Braze de su descubrimiento de dependencias:
optimizeDeps: {
exclude: ['@braze/web-sdk']
},
Otros administradores de etiquetas
Braze también puede ser compatible con otras soluciones de administración de etiquetas siguiendo nuestras instrucciones de integración dentro de una etiqueta HTML personalizada. Contacta a un representante de Braze si necesitas ayuda para evaluar estas soluciones.
Integración del SDK de Android
Paso 1: Actualiza tu configuración de compilación de Gradle
En la configuración del repositorio de tu proyecto (por ejemplo, settings.gradle, settings.gradle.kts o build.gradle de nivel superior), añade mavenCentral() a tu lista de repositorios. Esta sintaxis es la misma tanto para Groovy como para Kotlin DSL.
repositories {
mavenCentral()
}
A continuación, añade Braze a tus dependencias. En los siguientes ejemplos, sustituye SDK_VERSION por la versión actual de tu SDK de Braze para Android. Para consultar la lista completa de versiones, visita Registro de cambios.

- Para Kotlin DSL (
build.gradle.kts), utiliza la sintaxisimplementation("..."). - Para Groovy (
build.gradle), utiliza la sintaxisimplementation '...'. - Para catálogos de versiones, añade entradas a tu archivo
gradle/libs.versions.tomly haz referencia a ellas utilizando los accesores generados.
Si no tienes previsto utilizar componentes de UI de Braze, añade lo siguiente a tus dependencias.
dependencies {
implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
dependencies {
implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
En tu archivo gradle/libs.versions.toml:
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
Luego, en tu archivo build.gradle o build.gradle.kts, añade las siguientes dependencias. Esta sintaxis es la misma tanto para Groovy como para Kotlin DSL.
dependencies {
implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
Si tienes previsto utilizar componentes de UI de Braze, añade lo siguiente a tus dependencias.
dependencies {
implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
dependencies {
implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
En tu archivo gradle/libs.versions.toml:
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
Luego, en tu archivo build.gradle o build.gradle.kts, añade las siguientes dependencias. Esta sintaxis es la misma tanto para Groovy como para Kotlin DSL.
dependencies {
implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
Paso 2: Configura tu braze.xml

A partir de diciembre de 2019, ya no se proporcionan endpoints personalizados. Si tienes un endpoint personalizado preexistente, puedes seguir utilizándolo. Para más detalles, consulta nuestra lista de endpoints disponibles.
Crea un archivo braze.xml en la carpeta res/values de tu proyecto. Si estás en un clúster de datos específico o tienes un endpoint personalizado preexistente, también necesitas especificar el endpoint en tu archivo braze.xml.
El contenido de ese archivo debería parecerse al siguiente fragmento de código. Asegúrate de sustituir YOUR_APP_IDENTIFIER_API_KEY por el identificador que se encuentra en la página Administrar configuración del panel de Braze. Inicia sesión en dashboard.braze.com para encontrar tu dirección de clúster.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
Paso 3: Añade permisos a AndroidManifest.xml
A continuación, añade los siguientes permisos a tu AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Con el lanzamiento de Android M, Android cambió de un modelo de permisos en tiempo de instalación a un modelo de permisos en tiempo de ejecución. Sin embargo, ambos permisos son permisos normales y se conceden automáticamente si se incluyen en el manifiesto de la aplicación. Para más información, visita la documentación de permisos de Android.
Paso 4: Habilita la inicialización diferida (opcional)
Para utilizar la inicialización diferida, se requiere la versión mínima del SDK de Braze:

Mientras la inicialización diferida está habilitada, todas las conexiones de red se cancelan, lo que impide que el SDK envíe datos a los servidores de Braze.
Paso 4.1: Actualiza tu braze.xml
La inicialización diferida está deshabilitada de forma predeterminada. Para habilitarla, utiliza una de las siguientes opciones:
En el archivo braze.xml de tu proyecto, establece com_braze_enable_delayed_initialization en true.
<bool name="com_braze_enable_delayed_initialization">true</bool>
Para habilitar la inicialización diferida en tiempo de ejecución, utiliza el siguiente método.
Braze.enableDelayedInitialization(context);
Braze.enableDelayedInitialization(context)

Cuando la inicialización diferida está habilitada y una notificación push contiene una acción de vínculo profundo, el vínculo profundo no se resuelve.
Paso 4.2: Configura los análisis push (opcional)
Cuando la inicialización diferida está habilitada, los análisis push se ponen en cola de forma predeterminada. Sin embargo, puedes optar por poner en cola explícitamente o descartar los análisis push.
Poner en cola explícitamente
Para poner en cola explícitamente los análisis push, elige una de las siguientes opciones:
Descartar
Para descartar los análisis push, elige una de las siguientes opciones:
En tu archivo braze.xml, establece com_braze_delayed_initialization_analytics_behavior en DROP:
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>
Añade DROP al método Braze.enableDelayedInitialization():
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)
Paso 4.3: Inicializa el SDK manualmente
Después de tu periodo de demora elegido, utiliza el método Braze.disableDelayedInitialization() para inicializar el SDK manualmente.
Braze.disableDelayedInitialization(context);
Braze.disableDelayedInitialization(context)
Paso 5: Habilita el seguimiento de sesiones de usuario
Cuando habilitas el seguimiento de sesiones de usuario, las llamadas a openSession(), closeSession(), ensureSubscribedToInAppMessageEvents() y el registro de InAppMessageManager se pueden gestionar automáticamente.
Para registrar las devoluciones de llamada del ciclo de vida de la actividad, añade el siguiente código al método onCreate() de tu clase Application.
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
}
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
}
Para consultar la lista de parámetros disponibles, visita BrazeActivityLifecycleCallbackListener.
Pruebas del seguimiento de sesiones

Si experimentas problemas durante las pruebas, habilita el registro detallado y luego usa logcat para detectar llamadas faltantes de openSession y closeSession en tus actividades.
- En Braze, ve a Resumen, selecciona tu aplicación, luego en el menú desplegable Display Data For elige Today.

- Abre tu aplicación y luego actualiza el panel de Braze. Verifica que tus métricas hayan aumentado en 1.
- Navega por tu aplicación y verifica que solo se haya registrado una sesión en Braze.
- Envía la aplicación al segundo plano durante al menos 10 segundos y luego tráela al primer plano. Verifica que se haya registrado una nueva sesión.
Configuraciones opcionales
Configuración en tiempo de ejecución
Para establecer tus opciones de Braze en código en lugar de en tu archivo braze.xml, utiliza la configuración en tiempo de ejecución. Si un valor existe en ambos lugares, se utilizará el valor en tiempo de ejecución en su lugar. Una vez que todos los ajustes requeridos se proporcionan en tiempo de ejecución, puedes eliminar tu archivo braze.xml.
En el siguiente ejemplo, se crea un objeto builder y luego se pasa a Braze.configure(). Ten en cuenta que solo se muestran algunas de las opciones de tiempo de ejecución disponibles—consulta nuestro KDoc para ver la lista completa.
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build()
Braze.configure(this, brazeConfig)

ID de publicidad de Google
El ID de publicidad de Google (GAID) es un ID opcional, específico del usuario, anónimo, único y restablecible para publicidad, proporcionado por los servicios de Google Play. El GAID da a los usuarios la posibilidad de restablecer su identificador, desactivar los anuncios basados en intereses dentro de las aplicaciones de Google Play, y proporciona a los desarrolladores un sistema simple y estándar para seguir monetizando sus aplicaciones.
El ID de publicidad de Google no es recopilado automáticamente por el SDK de Braze y debe configurarse manualmente a través del método Braze.setGoogleAdvertisingId().
new Thread(new Runnable() {
@Override
public void run() {
try {
AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
suspend fun fetchAndSetAdvertisingId(
context: Context,
scope: CoroutineScope = GlobalScope
) {
scope.launch(Dispatchers.IO) {
try {
val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
Braze.getInstance(context).setGoogleAdvertisingId(
idInfo.id,
idInfo.isLimitAdTrackingEnabled
)
} catch (e: Exception) {
e.printStackTrace()
}
}
}

Google requiere que el ID de publicidad se recopile en un hilo que no sea de interfaz de usuario.
Seguimiento de ubicación
Para habilitar la recopilación de ubicación de Braze, establece com_braze_enable_location_collection en true en tu archivo braze.xml:
<bool name="com_braze_enable_location_collection">true</bool>

A partir de la versión 3.6.0 del SDK de Android de Braze, la recopilación de ubicación de Braze está deshabilitada de forma predeterminada.
Registro
De forma predeterminada, el nivel de registro del SDK de Android de Braze está configurado en INFO. Puedes suprimir estos registros o establecer un nivel de registro diferente, como VERBOSE, DEBUG o WARN.
Habilitar registros
Para ayudar a solucionar problemas en tu aplicación o reducir los tiempos de respuesta con soporte de Braze, puedes habilitar los registros detallados para el SDK. Cuando envíes registros detallados a soporte de Braze, asegúrate de que comiencen tan pronto como inicies tu aplicación y terminen mucho después de que ocurra tu problema. Para obtener un resumen centralizado, consulta Registro detallado. Para aprender a interpretar la salida de registros, consulta Lectura de registros detallados.
Ten en cuenta que los registros detallados solo están destinados a tu entorno de desarrollo, por lo que querrás deshabilitarlos antes de publicar tu aplicación.

Habilita los registros detallados antes de cualquier otra llamada en Application.onCreate() para asegurarte de que tus registros sean lo más completos posible.
Para habilitar los registros directamente en tu aplicación, añade lo siguiente al método onCreate() de tu aplicación antes de cualquier otro método.
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL
Reemplaza MIN_LOG_LEVEL con la constante del nivel de registro que deseas establecer como tu nivel de registro mínimo. Cualquier registro con un nivel >= a tu MIN_LOG_LEVEL configurado se enviará al método predeterminado Log de Android. Cualquier registro < a tu MIN_LOG_LEVEL configurado será descartado.
| Constante | Valor | Descripción |
|---|---|---|
VERBOSE |
2 | Registra los mensajes más detallados para depuración y desarrollo. |
DEBUG |
3 | Registra mensajes descriptivos para depuración y desarrollo. |
INFO |
4 | Registra mensajes informativos para resúmenes generales. |
WARN |
5 | Registra mensajes de advertencia para identificar situaciones potencialmente dañinas. |
ERROR |
6 | Registra mensajes de error para indicar fallos de la aplicación o problemas graves. |
ASSERT |
7 | Registra mensajes de aserción cuando las condiciones son falsas durante el desarrollo. |
Por ejemplo, el siguiente código enviará los niveles de registro 2, 3, 4, 5, 6 y 7 al método Log.
BrazeLogger.setLogLevel(Log.VERBOSE);
BrazeLogger.logLevel = Log.VERBOSE
Para habilitar los registros en el braze.xml, añade lo siguiente a tu archivo:
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>
Reemplaza MIN_LOG_LEVEL con el valor del nivel de registro que deseas establecer como tu nivel de registro mínimo. Cualquier registro con un nivel >= a tu MIN_LOG_LEVEL configurado se enviará al método predeterminado Log de Android. Cualquier registro < a tu MIN_LOG_LEVEL configurado será descartado.
| Constante | Valor | Descripción |
|---|---|---|
VERBOSE |
2 | Registra los mensajes más detallados para depuración y desarrollo. |
DEBUG |
3 | Registra mensajes descriptivos para depuración y desarrollo. |
INFO |
4 | Registra mensajes informativos para resúmenes generales. |
WARN |
5 | Registra mensajes de advertencia para identificar situaciones potencialmente dañinas. |
ERROR |
6 | Registra mensajes de error para indicar fallos de la aplicación o problemas graves. |
ASSERT |
7 | Registra mensajes de aserción cuando las condiciones son falsas durante el desarrollo. |
Por ejemplo, el siguiente código enviará los niveles de registro 2, 3, 4, 5, 6 y 7 al método Log.
<integer name="com_braze_logger_initial_log_level">2</integer>
Verificar registros detallados
Para verificar que tus registros están configurados en VERBOSE, comprueba si V/Braze aparece en algún lugar de tus registros. Si es así, los registros detallados se han habilitado correctamente. Por ejemplo:
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started
Suprimir registros
Para suprimir todos los registros del SDK de Android de Braze, establece el nivel de registro en BrazeLogger.SUPPRESS en el método onCreate() de tu aplicación antes de cualquier otro método.
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)
Múltiples claves de API
El caso de uso más común para múltiples claves de API es separar las claves de API para las variantes de compilación de depuración y producción.
Para cambiar fácilmente entre múltiples claves de API en tus compilaciones, recomendamos crear un archivo braze.xml separado para cada variante de compilación relevante. Una variante de compilación es una combinación de tipo de compilación y variante de producto. De forma predeterminada, los nuevos proyectos de Android se configuran con los tipos de compilación debug y release y sin variantes de producto.
Para cada variante de compilación relevante, crea un nuevo braze.xml en el directorio src/<build variant name>/res/values/. Cuando se compile la variante de compilación, se utilizará la nueva clave de API.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>

Para aprender a configurar la clave de API en tu código, consulta Configuración en tiempo de ejecución.
TalkBack exclusivo para mensajes dentro de la aplicación
En cumplimiento con las directrices de accesibilidad de Android, el SDK de Android de Braze ofrece Android TalkBack de forma predeterminada. Para asegurarte de que solo se lean en voz alta los contenidos de los mensajes dentro de la aplicación, sin incluir otros elementos de la pantalla como la barra de título de la aplicación o la navegación, puedes habilitar el modo exclusivo para TalkBack.
Para habilitar el modo exclusivo para mensajes dentro de la aplicación:
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());
R8 y ProGuard
La configuración de reducción de código se incluye automáticamente con tu integración de Braze.
Las aplicaciones cliente que ofuscan el código de Braze deben almacenar los archivos de mapeo de versión para que Braze pueda interpretar los rastreos de pila. Si deseas seguir manteniendo todo el código de Braze, añade lo siguiente a tu archivo ProGuard:
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }
Integración del SDK Swift
Puedes integrar y personalizar el SDK Swift de Braze utilizando Swift Package Manager (SPM), CocoaPods o métodos de integración manual. Para obtener más información sobre los diversos símbolos del SDK, consulta la documentación de referencia de Braze Swift.
Requisitos previos
Antes de comenzar, verifica que tu entorno sea compatible con la última versión del SDK Swift de Braze.
Paso 1: Instala el SDK Swift de Braze
Recomendamos utilizar Swift Package Manager (SwiftPM) o CocoaPods para instalar el SDK Swift de Braze. Como alternativa, puedes instalar el SDK manualmente.
Paso 1.1: Importa la versión del SDK
Abre tu proyecto y navega hasta la configuración del proyecto. Selecciona la pestaña Swift Packages y haz clic en el botón de agregar debajo de la lista de paquetes.


A partir de la versión 7.4.0, el SDK Swift de Braze tiene canales de distribución adicionales como XCFrameworks estáticos y XCFrameworks dinámicos. Si prefieres utilizar alguno de estos formatos, sigue las instrucciones de instalación de su respectivo repositorio.
Introduce la URL de nuestro repositorio del SDK Swift para iOS https://github.com/braze-inc/braze-swift-sdk en el campo de texto. En la sección Dependency Rule, selecciona la versión del SDK. Por último, haz clic en Add Package.

Paso 1.2: Selecciona tus paquetes
El SDK Swift de Braze separa las características en bibliotecas independientes para proporcionar a los desarrolladores más control sobre qué características importar en sus proyectos.
| Paquete | Detalles |
|---|---|
BrazeKit |
Biblioteca principal del SDK que proporciona soporte para análisis y notificaciones push. |
BrazeLocation |
Biblioteca de ubicación que proporciona soporte para análisis de ubicación y monitoreo de geovallas. |
BrazeUI |
Biblioteca de interfaz de usuario proporcionada por Braze para mensajes dentro de la aplicación, Content Cards y Banners. Importa esta biblioteca si pretendes utilizar los componentes de interfaz predeterminados. |
Acerca de las bibliotecas de extensiones

BrazeNotificationService y BrazePushStory son módulos de extensión que proporcionan funcionalidad adicional y no deben añadirse directamente al objetivo principal de tu aplicación. En su lugar, sigue las guías enlazadas para integrarlos por separado en sus respectivas extensiones de destino.
| Paquete | Detalles |
|---|---|
BrazeNotificationService |
Biblioteca de extensión del servicio de notificaciones que proporciona soporte para notificaciones push enriquecidas. |
BrazePushStory |
Biblioteca de extensión de contenido de notificaciones que proporciona soporte para Push Stories. |
Selecciona el paquete que mejor se adapte a tus necesidades y haz clic en Add Package. Asegúrate de seleccionar BrazeKit como mínimo.

Paso 1.1: Instala CocoaPods
Para una explicación completa, consulta la guía de introducción de CocoaPods. De lo contrario, puedes ejecutar el siguiente comando para comenzar rápidamente:
$ sudo gem install cocoapods
Si te quedas atascado, consulta la guía de solución de problemas de CocoaPods.
Paso 1.2: Construir el Podfile
A continuación, crea un archivo en el directorio de tu proyecto de Xcode llamado Podfile.

A partir de la versión 7.4.0, el SDK Swift de Braze tiene canales de distribución adicionales como XCFrameworks estáticos y XCFrameworks dinámicos. Si prefieres utilizar alguno de estos formatos, sigue las instrucciones de instalación de su respectivo repositorio.
Añade la siguiente línea a tu Podfile:
target 'YourAppTarget' do
pod 'BrazeKit'
end
BrazeKit contiene la biblioteca principal del SDK, que proporciona soporte para análisis y notificaciones push.
Te sugerimos versionar Braze para que las actualizaciones de pods obtengan automáticamente cualquier actualización menor a una versión menor. Esto se ve como pod 'BrazeKit' ~> Major.Minor.Build. Si deseas integrar automáticamente la última versión del SDK de Braze, incluso con cambios mayores, puedes usar pod 'BrazeKit' en tu Podfile.
Acerca de las bibliotecas adicionales
El SDK Swift de Braze separa las características en bibliotecas independientes para proporcionar a los desarrolladores más control sobre qué características importar en sus proyectos. Además de BrazeKit, puedes añadir las siguientes bibliotecas a tu Podfile:
| Biblioteca | Detalles |
|---|---|
pod 'BrazeLocation' |
Biblioteca de ubicación que proporciona soporte para análisis de ubicación y monitoreo de geovallas. |
pod 'BrazeUI' |
Biblioteca de interfaz de usuario proporcionada por Braze para mensajes dentro de la aplicación, Content Cards y Banners. Importa esta biblioteca si pretendes utilizar los componentes de interfaz predeterminados. |
Bibliotecas de extensiones
BrazeNotificationService y BrazePushStory son módulos de extensión que proporcionan funcionalidad adicional y no deben añadirse directamente al objetivo principal de tu aplicación. En su lugar, deberás crear objetivos de extensión separados para cada uno de estos módulos e importar los módulos de Braze en sus objetivos correspondientes.
| Biblioteca | Detalles |
|---|---|
pod 'BrazeNotificationService' |
Biblioteca de extensión del servicio de notificaciones que proporciona soporte para notificaciones push enriquecidas. |
pod 'BrazePushStory' |
Biblioteca de extensión de contenido de notificaciones que proporciona soporte para Push Stories. |
Paso 1.3: Instala el SDK
Para instalar el CocoaPod del SDK de Braze, navega al directorio de tu proyecto de Xcode dentro de tu terminal y ejecuta el siguiente comando:
pod install
En este punto, deberías poder abrir el nuevo espacio de trabajo del proyecto de Xcode creado por CocoaPods. Asegúrate de usar este espacio de trabajo de Xcode en lugar de tu proyecto de Xcode.

Actualización del SDK mediante CocoaPods
Para actualizar un CocoaPod, simplemente ejecuta el siguiente comando dentro del directorio de tu proyecto:
pod update
Paso 1.1: Descarga el SDK de Braze
Ve a la página de versiones del SDK de Braze en GitHub y luego descarga braze-swift-sdk-prebuilt.zip.

Paso 1.2: Elige tus frameworks
El SDK Swift de Braze contiene una variedad de XCFrameworks independientes, lo que te da la libertad de integrar las características que desees—sin necesidad de integrarlas todas. Consulta la siguiente tabla para elegir tus XCFrameworks:
| Paquete | ¿Obligatorio? | Descripción |
|---|---|---|
BrazeKit |
Sí | Biblioteca principal del SDK que proporciona soporte para análisis y notificaciones push. |
BrazeLocation |
No | Biblioteca de ubicación que proporciona soporte para análisis de ubicación y monitoreo de geovallas. |
BrazeUI |
No | Biblioteca de interfaz de usuario proporcionada por Braze para mensajes dentro de la aplicación, Content Cards y Banners. Importa esta biblioteca si pretendes utilizar los componentes de interfaz predeterminados. |
BrazeNotificationService |
No | Biblioteca de extensión del servicio de notificaciones que proporciona soporte para notificaciones push enriquecidas. No añadas esta biblioteca directamente al objetivo principal de tu aplicación, en su lugar añade la biblioteca BrazeNotificationService por separado. |
BrazePushStory |
No | Biblioteca de extensión de contenido de notificaciones que proporciona soporte para Push Stories. No añadas esta biblioteca directamente al objetivo principal de tu aplicación, en su lugar añade la biblioteca BrazePushStory por separado. |
BrazeKitCompat |
No | Biblioteca de compatibilidad que contiene todas las clases y métodos Appboy y ABK* que estaban disponibles en la versión 4.X.X del Appboy-iOS-SDK. Para detalles de uso, consulta el escenario de migración mínima en la guía de migración. |
BrazeUICompat |
No | Biblioteca de compatibilidad que contiene todas las clases y métodos ABK* que estaban disponibles en la biblioteca AppboyUI de la versión 4.X.X del Appboy-iOS-SDK. Para detalles de uso, consulta el escenario de migración mínima en la guía de migración. |
SDWebImage |
No | Dependencia utilizada únicamente por BrazeUICompat en el escenario de migración mínima. |
Paso 1.3: Prepara tus archivos
Decide si deseas utilizar XCFrameworks estáticos o dinámicos y luego prepara tus archivos:
- Crea un directorio temporal para tus XCFrameworks.
- En
braze-swift-sdk-prebuilt, abre el directoriodynamicy mueveBrazeKit.xcframeworka tu directorio. Tu directorio debería verse similar al siguiente:temp_dir └── BrazeKit.xcframework
- Mueve cada uno de los XCFrameworks elegidos a tu directorio temporal. Tu directorio debería verse similar al siguiente:
temp_dir ├── BrazeKit.xcframework ├── BrazeKitCompat.xcframework ├── BrazeLocation.xcframework └── SDWebImage.xcframework
Paso 1.4: Integra tus frameworks
A continuación, integra los XCFrameworks dinámicos o estáticos que preparaste anteriormente:
En tu proyecto de Xcode, selecciona tu destino de compilación y luego General. En Frameworks, Libraries, and Embedded Content, arrastra y suelta los archivos que preparaste anteriormente.


A partir de la versión 12.0.0 del SDK Swift, siempre debes seleccionar Embed & Sign para los XCFrameworks de Braze tanto en las variantes estáticas como dinámicas. Esto asegura que los recursos de los frameworks se integren correctamente en el paquete de tu aplicación.

Para habilitar el soporte de GIF, añade SDWebImage.xcframework, ubicado en braze-swift-sdk-prebuilt/static o braze-swift-sdk-prebuilt/dynamic.
Errores comunes en proyectos Objective-C
Si tu proyecto de Xcode solo contiene archivos Objective-C, es posible que obtengas errores de “missing symbol” al intentar compilar tu proyecto. Para solucionar estos errores, abre tu proyecto y añade un archivo Swift vacío a tu árbol de archivos. Esto obligará a tu cadena de herramientas de compilación a incorporar Swift Runtime y vincular a los frameworks apropiados durante el tiempo de compilación.
FILE_NAME.swift
Reemplaza FILE_NAME con cualquier cadena sin espacios. Tu archivo debería verse similar al siguiente:
empty_swift_file.swift
Paso 2: Configura la inicialización diferida (opcional)
Puedes elegir retrasar el momento en que se inicializa el SDK Swift de Braze, lo cual es útil si tu aplicación necesita cargar una configuración o esperar el consentimiento del usuario antes de iniciar el SDK. La inicialización diferida asegura que las notificaciones push y los tokens push recibidos antes de la inicialización del SDK se pongan en cola y se procesen una vez que el SDK esté inicializado.
Para utilizar la inicialización diferida, se requiere la versión mínima del SDK de Braze:
Paso 2.1: Prepara la inicialización diferida
Llama a Braze.prepareForDelayedInitialization() lo antes posible en el ciclo de vida de tu aplicación, idealmente en o antes de application(_:didFinishLaunchingWithOptions:). Esto asegura que las notificaciones push recibidas antes de que el SDK esté inicializado se capturen correctamente y se procesen después.

Esto solo aplica a las notificaciones push de Braze. Otras notificaciones push son gestionadas normalmente por los delegados del sistema.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Prepare the SDK for delayed initialization
[Braze prepareForDelayedInitialization];
// ... Additional non-Braze setup code
return YES;
}
Cuando se usa la inicialización diferida, la automatización push se habilita implícitamente. Puedes personalizar la configuración de automatización push pasando un parámetro pushAutomation.
Paso 2.2: Configura el comportamiento de análisis push (opcional)
Cuando la inicialización diferida está habilitada, los análisis push se ponen en cola de forma predeterminada. Sin embargo, puedes elegir poner en cola o descartar explícitamente los análisis push.
Poner en cola explícitamente
Para poner en cola explícitamente los análisis push (comportamiento predeterminado), pasa .queue al parámetro analyticsBehavior. Los eventos de análisis push que se pongan en cola antes de la inicialización se procesarán y enviarán al servidor una vez que se realice la inicialización.
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
Descartar
Para descartar los análisis push recibidos antes de la inicialización del SDK, pasa .drop al parámetro analyticsBehavior. Con esta opción, cualquier evento de análisis push que ocurra mientras el SDK no está inicializado será ignorado.
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];
Paso 2.3: Personaliza la automatización push (opcional)
Puedes personalizar la configuración de automatización push pasando un parámetro pushAutomation. De forma predeterminada, todas las características de automatización están habilitadas excepto requestAuthorizationAtLaunch.
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)
// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];
// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];
Paso 2.4: Inicializa el SDK
Después de tu período de espera elegido (por ejemplo, después de obtener la configuración de un servidor o después del consentimiento del usuario), inicializa el SDK de forma normal:
func initializeBraze() {
let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = true
let braze = Braze(configuration: configuration)
// Store the Braze instance for later use
AppDelegate.braze = braze
}
- (void)initializeBraze {
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
// Store the Braze instance for later use
AppDelegate.braze = braze;
}

Cuando el SDK se inicializa, todas las notificaciones push en cola, los tokens push y los vínculos profundos se procesan automáticamente.
Paso 3: Actualiza el delegado de tu aplicación

Lo siguiente asume que ya has añadido un AppDelegate a tu proyecto (que no se genera de forma predeterminada) y que no estás usando la característica de inicialización diferida. Si no planeas usar un AppDelegate, asegúrate de inicializar el SDK de Braze lo antes posible, como durante el lanzamiento de la aplicación. Si estás usando la característica de inicialización diferida, consulta el paso 2.4 para inicializar el SDK e ignora este paso.
Añade la siguiente línea de código a tu archivo AppDelegate.swift para importar las características incluidas en el SDK Swift de Braze:
import BrazeKit
A continuación, añade una propiedad estática a tu clase AppDelegate para mantener una referencia fuerte a la instancia de Braze durante toda la vida útil de tu aplicación:
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
}
El SDK requiere que tu aplicación mantenga una referencia fuerte a la instancia de Braze durante todo su uso. Para evitar cualquier efecto secundario inesperado, asegúrate de haber capturado completamente esa referencia antes de acceder o modificar cualquier propiedad o método en la instancia de Braze.
Finalmente, en AppDelegate.swift, añade el siguiente fragmento de código a tu método application:didFinishLaunchingWithOptions::
let configuration = Braze.Configuration(
apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
Actualiza YOUR-APP-IDENTIFIER-API-KEY y YOUR-BRAZE-ENDPOINT con el valor correcto de tu página App Settings. Consulta nuestros tipos de identificadores de API para obtener más información sobre dónde encontrar la clave de API del identificador de tu aplicación.
Añade la siguiente línea de código a tu archivo AppDelegate.m:
@import BrazeKit;
A continuación, añade una variable estática a tu archivo AppDelegate.m para mantener una referencia a la instancia de Braze durante toda la vida útil de tu aplicación:
static Braze *_braze;
@implementation AppDelegate
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
El SDK requiere que tu aplicación mantenga una referencia fuerte a la instancia de Braze durante todo su uso. Para evitar cualquier efecto secundario inesperado, asegúrate de haber capturado completamente esa referencia antes de acceder o modificar cualquier propiedad o método en la instancia de Braze.
Finalmente, dentro de tu archivo AppDelegate.m, añade el siguiente fragmento de código dentro de tu método application:didFinishLaunchingWithOptions::
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
Actualiza YOUR-APP-IDENTIFIER-API-KEY y YOUR-BRAZE-ENDPOINT con el valor correcto de tu página Administrar configuración. Consulta nuestra documentación de API para obtener más información sobre dónde encontrar la clave de API del identificador de tu aplicación.

Braze.init retorna inmediatamente en el hilo que lo llama. El SDK procesa el trabajo de inicio en una cola interna. Leer propiedades síncronas como braze.deviceId directamente después de init en el hilo principal bloqueará el hilo que lo llama hasta que el SDK haya completado sus operaciones post-inicialización. Para contextos de hilo principal o sensibles a la latencia, usa braze.getDeviceId(_:) (Swift) o [braze getDeviceIdWithCompletion:^(NSString *deviceId) { ... }] (Objective-C) para leer el valor sin bloqueo.
Configuraciones opcionales
Registro
Para obtener un resumen centralizado en todas las plataformas, consulta Registro detallado. Para aprender a interpretar la salida del registro, consulta Lectura de registros detallados.
Niveles de registro
El nivel de registro predeterminado para el SDK Swift de Braze es .error—también es el nivel mínimo compatible cuando los registros están habilitados. Esta es la lista completa de niveles de registro:
| Swift | Objective-C | Descripción |
|---|---|---|
.debug |
BRZLoggerLevelDebug |
Registra información de depuración + .info + .error. |
.info |
BRZLoggerLevelInfo |
Registra información general del SDK (cambios de usuario, etc.) + .error. |
.error |
BRZLoggerLevelError |
Registra errores. |
.disabled |
BRZLoggerLevelDisabled |
No se realiza ningún registro. |
Configuración del nivel de registro
Puedes asignar el nivel de registro en tiempo de ejecución en tu objeto Braze.Configuration. Para obtener detalles completos de uso, consulta Braze.Configuration.Logger.
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
Integración del SDK de Cordova
Requisitos previos
Antes de comenzar, verifica que tu entorno sea compatible con la última versión del SDK de Cordova de Braze.
Paso 1: Añade el SDK a tu proyecto

Añade solo el SDK de Cordova de Braze utilizando los siguientes métodos. No intentes instalarlo con otros métodos, ya que podría provocar una vulnerabilidad de seguridad.
Si usas Cordova 6 o posterior, puedes añadir el SDK directamente desde GitHub. Como alternativa, puedes descargar un ZIP del repositorio de GitHub y añadir el SDK manualmente.
Si no planeas usar la recopilación de ubicación ni las geovallas, usa la rama master de GitHub.
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master
Si planeas usar la recopilación de ubicación y las geovallas, usa la rama geofence-branch de GitHub.
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

Puedes cambiar entre master y geofence-branch en cualquier momento repitiendo este paso.
Paso 2: Configura tu proyecto
A continuación, añade las siguientes preferencias al elemento platform en el archivo config.xml de tu proyecto.
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />
Sustituye lo siguiente:
| Valor | Descripción |
|---|---|
BRAZE_API_KEY |
Tu clave de API REST de Braze. |
CUSTOM_API_ENDPOINT |
Un endpoint de API personalizado. Este endpoint se usa para enrutar los datos de tu instancia de Braze al grupo de aplicaciones correcto en tu panel de Braze. |
El elemento platform en tu archivo config.xml debería ser similar al siguiente:
<platform name="ios">
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
<platform name="android">
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
Sintaxis específica de la plataforma
La siguiente sección cubre la sintaxis específica de la plataforma cuando se usa Cordova con iOS o Android.
Enteros
Las preferencias de enteros se leen como representaciones de cadena, como en el siguiente ejemplo:
<platform name="ios">
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_session_timeout" value="5" />
</platform>
Debido a la forma en que el framework de Cordova 8.0.0+ gestiona las preferencias, las preferencias exclusivamente de enteros (como los ID de remitente) deben configurarse como cadenas precedidas de str_, como en el siguiente ejemplo:
<platform name="android">
<preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
<preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>
Booleanos
Las preferencias booleanas son leídas por el SDK utilizando las palabras clave YES y NO como representación de cadena, como en el siguiente ejemplo:
<platform name="ios">
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>
Las preferencias booleanas son leídas por el SDK utilizando las palabras clave true y false como representación de cadena, como en el siguiente ejemplo:
<platform name="android">
<preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>
Configuraciones opcionales
Puedes añadir cualquiera de las siguientes preferencias al elemento platform del archivo config.xml de tu proyecto:
| Método | Descripción |
|---|---|
ios_api_key |
Establece la clave de API para tu aplicación. |
ios_api_endpoint |
Establece el endpoint del SDK para tu aplicación. |
ios_disable_automatic_push_registration |
Establece si se debe desactivar el registro automático de push. |
ios_disable_automatic_push_handling |
Establece si se debe desactivar el manejo automático de push. |
ios_enable_idfa_automatic_collection |
Establece si el SDK de Braze debe recopilar automáticamente la información IDFA. Para obtener más información, consulta la documentación sobre el método IDFA de Braze. |
enable_location_collection |
Establece si la recopilación automática de la ubicación está habilitada (si el usuario lo permite). La rama geofence-branch |
geofences_enabled |
Establece si las geovallas están habilitadas. |
ios_session_timeout |
Establece el tiempo de espera de la sesión de Braze para tu aplicación en segundos. El valor predeterminado es 10 segundos. |
sdk_authentication_enabled |
Establece si se habilita la característica de autenticación del SDK. |
display_foreground_push_notifications |
Establece si las notificaciones push deben mostrarse mientras la aplicación está en primer plano. |
ios_disable_un_authorization_option_provisional |
Establece si UNAuthorizationOptionProvisional debe desactivarse. |
trigger_action_minimum_time_interval_seconds |
Establece el intervalo de tiempo mínimo en segundos entre desencadenamientos. El valor predeterminado es 30 segundos. |
ios_push_app_group |
Establece el ID del grupo de aplicaciones para las extensiones push de iOS. |
ios_forward_universal_links |
Establece si el SDK reconoce y reenvía automáticamente los enlaces universales a los métodos del sistema. Necesario para que los vínculos profundos de las notificaciones push funcionen en iOS. De forma predeterminada, está desactivado. |
ios_log_level |
Establece el nivel mínimo de registro para Braze.Configuration.Logger. |
ios_use_uuid_as_device_id |
Establece si se debe utilizar un UUID generado aleatoriamente como ID del dispositivo. |
ios_flush_interval_seconds |
Establece el intervalo en segundos entre las descargas automáticas de datos. El valor predeterminado es 10 segundos. |
ios_use_automatic_request_policy |
Establece si la política de solicitud para Braze.Configuration.Api debe ser automática o manual. |
should_opt_in_when_push_authorized |
Establece si el estado de la suscripción a las notificaciones de un usuario debe establecerse automáticamente en optedIn cuando se autorizan los permisos push. |

| Método | Descripción |
|---|---|
android_api_key |
Establece la clave de API para tu aplicación. |
android_api_endpoint |
Establece el endpoint del SDK para tu aplicación. |
android_small_notification_icon |
Establece el icono pequeño de notificación. |
android_large_notification_icon |
Establece el icono grande de notificación. |
android_notification_accent_color |
Establece el color de acento de las notificaciones utilizando una representación hexadecimal. |
android_default_session_timeout |
Establece el tiempo de espera de la sesión de Braze para tu aplicación en segundos. El valor predeterminado es 10 segundos. |
android_handle_push_deep_links_automatically |
Establece si el SDK de Braze gestiona automáticamente los vínculos profundos push. Necesario para que los vínculos profundos de las notificaciones push funcionen en Android. De forma predeterminada, está desactivado. |
android_log_level |
Establece el nivel de registro para tu aplicación. El nivel de registro predeterminado es 4 y registrará mínimamente la información. Para habilitar el registro detallado para la depuración, utiliza el nivel de registro 2. |
firebase_cloud_messaging_registration_enabled |
Establece si se utilizará Firebase Cloud Messaging para las notificaciones push. |
android_fcm_sender_id |
Establece el ID de remitente de Firebase Cloud Messaging. |
enable_location_collection |
Establece si la recopilación automática de la ubicación está habilitada (si el usuario lo permite). |
geofences_enabled |
Establece si las geovallas están habilitadas. |
android_disable_auto_session_tracking |
Desactiva el seguimiento automático de sesiones del plugin Cordova de Android. Para obtener más información, consulta Desactivar el seguimiento automático de sesiones. |
sdk_authentication_enabled |
Establece si se habilita la característica de autenticación del SDK. |
trigger_action_minimum_time_interval_seconds |
Establece el intervalo de tiempo mínimo en segundos entre desencadenamientos. El valor predeterminado es 30 segundos. |
is_session_start_based_timeout_enabled |
Establece si el comportamiento del tiempo de espera de la sesión se basará en los eventos de inicio o fin de sesión. |
default_notification_channel_name |
Establece el nombre que ven los usuarios a través de NotificationChannel.getName para el NotificationChannel predeterminado de Braze. |
default_notification_channel_description |
Establece la descripción que ven los usuarios a través de NotificationChannel.getDescription para el NotificationChannel predeterminado de Braze. |
does_push_story_dismiss_on_click |
Establece si una historia push se descarta automáticamente al hacer clic en ella. |
is_fallback_firebase_messaging_service_enabled |
Establece si se habilita el uso de un servicio alternativo de Firebase Cloud Messaging. |
fallback_firebase_messaging_service_classpath |
Establece la ruta de clases para el servicio alternativo de Firebase Cloud Messaging. |
is_content_cards_unread_visual_indicator_enabled |
Establece si se habilita la barra de indicación visual de Content Cards no leídas. |
is_firebase_messaging_service_on_new_token_registration_enabled |
Establece si el SDK de Braze realizará el registro automático de los tokens en com.google.firebase.messaging.FirebaseMessagingService.onNewToken. |
is_push_deep_link_back_stack_activity_enabled |
Establece si Braze añadirá una actividad a la pila posterior cuando siga automáticamente vínculos profundos para push. |
push_deep_link_back_stack_activity_class_name |
Establece la actividad que Braze añadirá a la pila posterior cuando siga automáticamente vínculos profundos para push. |
should_opt_in_when_push_authorized |
Establece si Braze debe realizar la adhesión voluntaria del usuario automáticamente cuando se autoriza el envío de notificaciones push. |

A continuación se muestra un archivo config.xml de ejemplo con configuraciones adicionales:
<platform name="ios">
<preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
<preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
<preference name="com.braze.enable_location_collection" value="NO"/"YES" />
<preference name="com.braze.geofences_enabled" value="NO"/"YES" />
<preference name="com.braze.ios_session_timeout" value="5" />
<preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
<preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
<preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
<preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
<preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
<preference name="com.braze.ios_log_level" value="2" />
<preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
<platform name="android">
<preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
<preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
<preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
<preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
<preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
<preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
<preference name="com.braze.enable_location_collection" value="true"/"false" />
<preference name="com.braze.geofences_enabled" value="true"/"false" />
<preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
<preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
<preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
<preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
<preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
<preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
<preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
<preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
<preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
<preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
<preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>
Desactivar el seguimiento automático de sesiones (solo Android)
De manera predeterminada, el plugin de Android Cordova hace un seguimiento automático de las sesiones. Para desactivar el seguimiento automático de sesiones, añade la siguiente preferencia al elemento platform del archivo config.xml de tu proyecto:
<platform name="android">
<preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>
Para volver a iniciar el seguimiento de las sesiones, llama a BrazePlugin.startSessionTracking(). Ten en cuenta que solo se hará un seguimiento de las sesiones iniciadas después de la siguiente Activity.onStart().
Configuración de canales de notificación para notificaciones emergentes (solo Android)
En Android 8.0 (nivel de API 26) y versiones posteriores, el comportamiento de las notificaciones se controla a través de canales de notificación. Para mostrar notificaciones emergentes (alertas que aparecen brevemente en la parte superior de la pantalla mientras el usuario utiliza su dispositivo), debes crear un canal de notificación con NotificationManager.IMPORTANCE_HIGH en el código de tu aplicación Android.
Aunque el SDK de Cordova te permite establecer el nombre y la descripción predeterminados del canal de notificación a través de las preferencias de config.xml (default_notification_channel_name y default_notification_channel_description), el nivel de importancia debe configurarse de forma programática en tu código nativo de Android.
Ejemplo: Creación de un canal de notificación de alta importancia
Añade el siguiente código al método onCreate() de la clase Application de tu aplicación Android:
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.os.Build
override fun onCreate() {
super.onCreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channelId = "high_priority_channel"
val channelName = "High Priority Notifications"
val importance = NotificationManager.IMPORTANCE_HIGH
val channel = NotificationChannel(channelId, channelName, importance).apply {
description = "Notifications that require immediate attention"
}
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
}
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "high_priority_channel";
String channelName = "High Priority Notifications";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
channel.setDescription("Notifications that require immediate attention");
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
}
}
Después de crear el canal en tu código Android, utiliza el ID del canal al enviar notificaciones push desde el panel de Braze. Para obtener más información sobre los canales de notificación, consulta Canales de notificación de Android.
Solución de problemas en compilaciones iOS tras actualizar el plugin
El SDK de Braze para Cordova 9.0.0 y posteriores utiliza el Swift SDK 9.0.0 o posterior. A partir del Swift SDK 8.0.0, ese SDK nativo se compila con Xcode 15.2. Si tu compilación iOS falla después de actualizar el plugin de Cordova a la versión 9.0.0 o posterior, actualiza Xcode a la versión 15.2 o más reciente y confirma que coincide con el registro de cambios del Swift SDK para la versión nativa de iOS que utiliza tu plugin.
Acerca del SDK de Braze para Flutter
Después de integrar el SDK de Braze para Flutter en Android e iOS, podrás utilizar la API de Braze dentro de tus aplicaciones Flutter escritas en Dart. Este plugin proporciona funcionalidad de análisis básica y te permite integrar mensajes dentro de la aplicación y Content Cards tanto para iOS como para Android con una única base de código.
Integración del SDK de Flutter
Requisitos previos
Antes de integrar el SDK de Flutter de Braze, deberás completar lo siguiente:
| Requisito previo | Descripción |
|---|---|
| Identificador de aplicación de la API de Braze | Para encontrar el identificador de tu aplicación, ve a Configuración > API e identificadores > Identificadores de aplicación. Para más información, consulta Tipos de identificadores de API. |
| Punto final del SDK de Braze | La URL de tu punto final del SDK (por ejemplo, sdk.<cluster>.braze.com). Tu endpoint dependerá de la URL de Braze para tu instancia. |
| SDK de Flutter | Instala el SDK de Flutter oficial y asegúrate de que cumple con la versión mínima compatible del SDK de Flutter de Braze. |
Paso 1: Integrar la biblioteca de Braze
Añade el paquete del SDK de Flutter de Braze desde la línea de comandos. Esto añadirá la línea correspondiente a tu pubspec.yaml.
flutter pub add braze_plugin
Paso 2: Completar la configuración nativa del SDK
2.1 Configurar Android {#21-set-up-android}
Proporcionar credenciales en tiempo de compilación
Crea un archivo braze.xml en la carpeta android/res/values de tu proyecto. La clave de API y el endpoint se proporcionan en tiempo de ejecución desde Dart, por lo que no son necesarios en este archivo. Para habilitar la inicialización diferida, añade com_braze_enable_delayed_initialization al archivo:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="com_braze_enable_delayed_initialization">true</bool>
<!-- API key and endpoint are not required here. They are set at runtime via Dart. -->
</resources>
Proporcionar credenciales en tiempo de ejecución
Alternativamente, puedes habilitar la inicialización diferida de forma programática en tu MainActivity.kt:
import com.braze.Braze
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Braze.enableDelayedInitialization(context = this)
}
}
Añade los permisos necesarios a tu archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 Configurar iOS {#22-set-up-ios}
Dentro de tu método existente application(_:didFinishLaunchingWithOptions:), añade una llamada a BrazePlugin.configure(_:postInitialization:) para almacenar tu configuración. La instancia de Braze se crea más adelante cuando se llama a initialize() desde Dart. La clave de API y el endpoint no se establecen aquí.
Añade el siguiente código a tu AppDelegate.swift:
import BrazeKit
import braze_plugin
// ...
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// ... your existing didFinishLaunchingWithOptions setup ...
BrazePlugin.configure(
{ configuration in
configuration.logger.level = .info
// Set other non-API-key configurations here, such as:
// configuration.push.automation = true
// configuration.sessionTimeout = 60
},
postInitialization: { braze in
// Optional: Customize the Braze instance after creation.
// For example, set a custom in-app message presenter:
// let customPresenter = CustomInAppMessagePresenter()
// braze.inAppMessagePresenter = customPresenter
}
)
return true
}
Añade el siguiente código a tu AppDelegate.m:
@import BrazeKit;
@import braze_plugin;
// ...
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[BrazePlugin configure:^(BRZConfiguration *configuration) {
configuration.logger.level = BRZLoggerLevelInfo;
// Set other non-API-key configurations here, such as:
// configuration.push.automation = ...
// configuration.sessionTimeout = 60;
} postInitialization:^(Braze *braze) {
// Optional: customize the Braze instance after creation.
}];
return YES;
}

BrazePlugin.configure() solo almacena tu configuración. No existe ninguna instancia de Braze hasta que se llama a initialize() desde Dart, por lo que no debes llamar a ningún método del SDK de Braze en el AppDelegate después de configure().
2.1 Configurar Android
Para conectarte a los servidores de Braze, crea un archivo braze.xml en la carpeta android/res/values de tu proyecto. Pega el siguiente código y sustituye la clave de identificador de API y el endpoint por tus valores:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
Añade los permisos necesarios a tu archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 Configurar iOS
Añade las importaciones del SDK de Braze en la parte superior del archivo AppDelegate.swift:
import BrazeKit
import braze_plugin
En el mismo archivo, crea el objeto de configuración de Braze en el método application(_:didFinishLaunchingWithOptions:) y sustituye la clave de API y el endpoint por los valores de tu aplicación. A continuación, crea la instancia de Braze utilizando la configuración y crea una propiedad estática en el AppDelegate para un acceso sencillo:
static var braze: Braze? = nil
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// - Enable logging or customize configuration here
configuration.logger.level = .info
let braze = BrazePlugin.initBraze(configuration)
AppDelegate.braze = braze
return true
}
Importa el SDK de Braze en la parte superior del archivo AppDelegate.m:
@import BrazeKit;
@import braze_plugin;
En el mismo archivo, crea el objeto de configuración de Braze en el método application:didFinishLaunchingWithOptions: y sustituye la clave de API y el endpoint por los valores de tu aplicación. A continuación, crea la instancia de Braze utilizando la configuración y crea una propiedad estática en el AppDelegate para un acceso sencillo:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
endpoint:@"<BRAZE_ENDPOINT>"];
// - Enable logging or customize configuration here
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazePlugin initBraze:configuration];
AppDelegate.braze = braze;
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
Paso 3: Configurar el plugin
Importa el plugin y crea una única instancia de BrazePlugin:
import 'package:braze_plugin/braze_plugin.dart';
final BrazePlugin braze = BrazePlugin();
A continuación, llama a initialize() con tu clave de API de identificador de aplicación y el endpoint del SDK para crear la instancia de Braze. Consulta las siguientes opciones sobre dónde llamar a este método en el flujo de tu aplicación.
Inicialización estándar
Para inicializar el SDK cuando se inicia tu aplicación, llama a initialize() en initState():
@override
void initState() {
super.initState();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}
Inicialización diferida
Para aplazar la inicialización del SDK hasta un punto posterior en la sesión, por ejemplo, después de que el usuario otorgue su consentimiento o complete el inicio de sesión, llama a initialize() cuando estés listo:
// ...
void onUserConsent() {
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

Las notificaciones push y los vínculos profundos recibidos antes de que se llame a initialize() no se procesan en iOS. En Android, los vínculos profundos de las notificaciones push no se resuelven mientras el SDK está esperando ser inicializado. Si tu aplicación depende de notificaciones push o vínculos profundos al inicio, utiliza la inicialización estándar en su lugar.
Claves de API específicas por plataforma
Dado que tus aplicaciones de Android e iOS utilizan claves de API diferentes, usa la detección de plataforma:
import 'dart:io' show Platform;
if (Platform.isAndroid) {
braze.initialize("<ANDROID_API_KEY>", "<BRAZE_ENDPOINT>");
} else if (Platform.isIOS) {
braze.initialize("<IOS_API_KEY>", "<BRAZE_ENDPOINT>");
}
Reinicialización
Puedes llamar a initialize() varias veces para reinicializar el SDK con una clave de API y un endpoint diferentes a mitad de sesión. Cada llamada destruye la instancia anterior de Braze y crea una nueva.

Para evitar comportamientos indefinidos, asigna y utiliza una única instancia de BrazePlugin en tu código Dart. Todas las llamadas a métodos del SDK realizadas antes de initialize() se ignoran en iOS, así que llama a initialize() antes de usar cualquier otro método de Braze.
Para importar el plugin en tu código Dart, utiliza lo siguiente:
import 'package:braze_plugin/braze_plugin.dart';
A continuación, inicializa una instancia del plugin de Braze llamando a new BrazePlugin() como en nuestra aplicación de ejemplo.

Para evitar comportamientos indefinidos, asigna y utiliza una única instancia de BrazePlugin en tu código Dart.
Prueba de la integración
Puedes verificar que el SDK está integrado comprobando las estadísticas de sesión en el panel. Si ejecutas tu aplicación en cualquiera de las plataformas, deberías ver una nueva sesión en el panel (en la sección Resumen).
Abre una sesión para un usuario en particular llamando al siguiente código en tu aplicación.
BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");
Busca el usuario con {some-user-id} en el panel en Audiencia > Buscar usuarios. Allí podrás verificar que los datos de sesión y dispositivo se han registrado.
Acerca del SDK de Braze para React Native
La integración del SDK de Braze para React Native proporciona funcionalidad básica de análisis y te permite integrar mensajes dentro de la aplicación y Content Cards tanto para iOS como para Android con una sola base de código.
Compatibilidad con la Nueva Arquitectura
La siguiente versión mínima del SDK es compatible con todas las aplicaciones que utilizan la Nueva Arquitectura de React Native:
A partir de la versión 6.0.0 del SDK, Braze utiliza un Turbo Module de React Native, que es compatible tanto con la Nueva Arquitectura como con la arquitectura de puente heredada. Esto significa que no se requiere ninguna configuración adicional.

Si tu aplicación iOS se ajusta a RCTAppDelegate y sigue nuestra configuración anterior de AppDelegate, revisa los ejemplos en Configuración nativa completa para evitar fallos al suscribirse a eventos en el Turbo Module.
Requisitos de versión de React y React Native
Braze no publica versiones mínimas de React separadas más allá de lo que admite el SDK de React Native. Para integrar el SDK, utiliza React Native versión 0.71 o posterior. Para consultar la lista completa de versiones de React Native compatibles, consulta el repositorio de GitHub del SDK de React Native.
Cuando actualices React, React Native o el SDK de Braze, revisa el CHANGELOG del SDK en busca de cambios importantes antes de implementar.
Integración del SDK de React Native
Requisitos previos
Para conocer las versiones de React Native compatibles y orientación sobre actualizaciones, consulta Requisitos de versión de React y React Native.
Paso 1: Integra la biblioteca de Braze
npm install @braze/react-native-sdk
yarn add @braze/react-native-sdk
Paso 2: Completa la configuración nativa
Si tu aplicación usa Expo, consulta Uso del plugin de Expo. Si tu aplicación usa React Native puro, consulta Uso de React Native CLI. Elige un método de configuración en cada pestaña de versión: plugin de Expo o React Native CLI.
Método 1: Uso del plugin de Expo
2.1 Instala el plugin de Braze Expo {#21-install-the-braze-expo-plugin}
Asegúrate de que tu versión del plugin de Braze Expo sea al menos 4.1.0. Para ver la lista completa de versiones compatibles, consulta el repositorio del plugin de Braze Expo.
El siguiente fragmento de código muestra el comando para instalar el plugin de Braze Expo:
npx expo install @braze/expo-plugin
2.2 Añade el plugin a tu app.json {#22-add-the-plugin-to-your-appjson}
En tu app.json, añade el plugin de Braze Expo. La clave de API y el endpoint ya no se configuran aquí. Proporciónelos en tiempo de ejecución a través de Braze.initialize() desde JavaScript. Añade los siguientes parámetros de configuración opcionales según las necesidades de tu implementación:
| Método | Tipo | Descripción |
|---|---|---|
enableBrazeIosPush |
boolean | Solo iOS. Indica si se usa Braze para gestionar las notificaciones push en iOS. |
enableFirebaseCloudMessaging |
boolean | Solo Android. Indica si se usa Firebase Cloud Messaging para notificaciones push. |
firebaseCloudMessagingSenderId |
string | Solo Android. Tu ID de remitente de Firebase Cloud Messaging. |
sessionTimeout |
integer | El tiempo de espera de sesión de Braze para tu aplicación en segundos. |
enableSdkAuthentication |
boolean | Indica si se habilita la característica de autenticación del SDK. |
logLevel |
integer | El nivel de registro para tu aplicación. El nivel de registro predeterminado es 8 y registra información mínima. Para habilitar el registro detallado para depuración, usa el nivel de registro 0. |
minimumTriggerIntervalInSeconds |
integer | El intervalo de tiempo mínimo en segundos entre desencadenantes. El valor predeterminado es 30 segundos. |
enableAutomaticLocationCollection |
boolean | Indica si la recopilación automática de ubicación está habilitada (si el usuario lo permite). |
enableGeofence |
boolean | Indica si las geovallas están habilitadas. |
enableAutomaticGeofenceRequests |
boolean | Indica si las solicitudes de geovallas deben realizarse automáticamente. |
dismissModalOnOutsideTap |
boolean | Solo iOS. Indica si un mensaje modal dentro de la aplicación se descarta cuando el usuario hace clic fuera del mensaje dentro de la aplicación. |
androidHandlePushDeepLinksAutomatically |
boolean | Solo Android. Indica si el SDK de Braze debe gestionar automáticamente los vínculos profundos push. |
androidPushNotificationHtmlRenderingEnabled |
boolean | Solo Android. Establece si el contenido de texto en una notificación push debe interpretarse y renderizarse como HTML usando android.text.Html.fromHtml. |
androidNotificationAccentColor |
string | Solo Android. Establece el color de acento de las notificaciones de Android. |
androidNotificationLargeIcon |
string | Solo Android. Establece el icono grande de las notificaciones de Android. |
androidNotificationSmallIcon |
string | Solo Android. Establece el icono pequeño de las notificaciones de Android. |
iosRequestPushPermissionsAutomatically |
boolean | Solo iOS. Indica si el usuario debe recibir automáticamente la solicitud de permisos push al iniciar la aplicación. |
enableBrazeIosRichPush |
boolean | Solo iOS. Indica si se habilitan las características de notificaciones push enriquecidas para iOS. |
enableBrazeIosPushStories |
boolean | Solo iOS. Indica si se habilita Braze Push Stories para iOS. |
iosPushStoryAppGroup |
string | Solo iOS. El grupo de aplicaciones usado para iOS Push Stories. |
iosUseUUIDAsDeviceId |
boolean | Solo iOS. Indica si el ID de dispositivo usa un UUID generado aleatoriamente. |
iosForwardUniversalLinks |
boolean | Solo iOS. Especifica si el SDK debe reconocer y reenviar automáticamente los enlaces universales a los métodos del sistema (predeterminado: false). |
El siguiente fragmento de código muestra un ejemplo de configuración de app.json:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
]
]
}
}
Configuración de iconos de notificación push en Android
Al usar androidNotificationLargeIcon y androidNotificationSmallIcon, sigue estas prácticas recomendadas para que los iconos se muestren correctamente:
Ubicación y formato de los iconos
Para usar iconos de notificación push personalizados con el plugin de Braze Expo:
- Crea tus archivos de icono siguiendo los requisitos de icono enumerados en Requisitos de icono.
- Colócalos en los directorios nativos de Android de tu proyecto en
android/app/src/main/res/drawable-<density>/. Por ejemplo, usaandroid/app/src/main/res/drawable-mdpi/yandroid/app/src/main/res/drawable-hdpi/. - Alternativamente, si estás gestionando activos en tu directorio de React Native, puedes usar la configuración de icono de app.json de Expo o crear un plugin de configuración de Expo para copiar los iconos a las carpetas drawable de Android durante el prebuild.
El plugin de Braze Expo referencia estos iconos usando el sistema de recursos drawable de Android.
Requisitos de icono
- Icono pequeño: Debe ser una silueta blanca sobre un fondo transparente (esto es un requisito de la plataforma Android)
- Icono grande: Puede ser una imagen a todo color.
- Formato: Se recomienda el formato PNG.
- Nomenclatura: Usa solo letras minúsculas, números y guiones bajos (por ejemplo,
my_large_icon.png)
Configuración en app.json
El siguiente fragmento de código muestra cómo referenciar iconos de notificación de Android en app.json usando el prefijo @drawable/:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}

No uses rutas de archivo relativas (como src/assets/images/icon.png) ni incluyas la extensión del archivo al referenciar iconos. El plugin de Expo requiere el prefijo @drawable/ para localizar correctamente los iconos en las carpetas nativas de Android después del proceso de prebuild.
Cómo funciona
El plugin de Braze Expo referencia tus archivos de icono desde los directorios drawable de Android. Cuando ejecutas npx expo prebuild, Expo genera la estructura del proyecto nativo de Android. Tus iconos deben estar presentes en las carpetas drawable de Android (ya sea colocados manualmente o copiados mediante un plugin de configuración) antes del proceso de compilación. Luego, el plugin configura el SDK de Braze para usar estos recursos drawable por sus nombres (sin ruta ni extensión), por eso se requiere el prefijo @drawable/ en tu configuración.
Para obtener más información sobre iconos de notificación de Android, consulta las directrices de iconos de notificación de Android.
2.3 Compila y ejecuta tu aplicación {#23-build-and-run-your-application}
Precompilar tu aplicación genera los archivos nativos necesarios para que funcione el plugin de Braze Expo.
El siguiente fragmento de código muestra el comando para precompilar tu aplicación:
npx expo prebuild
Ejecuta tu aplicación como se especifica en la documentación de Expo. Si realizas cambios en las opciones de configuración, precompila y ejecuta la aplicación de nuevo.
Método 2: Uso de React Native CLI
Configurar Android
2.1 Añade el plugin Kotlin de Gradle
El siguiente fragmento de código muestra cómo añadir el plugin Kotlin de Gradle en el build.gradle de nivel superior de tu proyecto en buildscript > dependencies:
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
Esto añade Kotlin a tu proyecto.
2.2 Configura el SDK de Braze
Crea un archivo braze.xml en la carpeta res/values de tu proyecto. La clave de API y el endpoint se proporcionan en tiempo de ejecución desde JavaScript, por lo que no son necesarios en este archivo. El siguiente fragmento de código muestra cómo habilitar la inicialización diferida con com_braze_enable_delayed_initialization:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="com_braze_enable_delayed_initialization">true</bool>
</resources>

Aún puedes añadir otros valores de configuración nativos a braze.xml (como push, tiempo de espera de sesión y configuración de registro). Estos se aplican automáticamente cuando se llama a Braze.initialize() desde JavaScript.
El siguiente fragmento de código muestra los permisos requeridos para tu archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

En la versión 12.2.0 o posterior del SDK de Braze para Android, puedes incluir automáticamente la biblioteca android-sdk-location configurando importBrazeLocationLibrary=true en tu archivo gradle.properties.
2.3 Implementa el seguimiento de sesiones de usuario
Las llamadas a openSession() y closeSession() se gestionan automáticamente.
El siguiente fragmento de código muestra qué añadir al método onCreate() de tu clase MainApplication:
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
2.4 Gestiona las actualizaciones de intent
Si tu MainActivity tiene android:launchMode configurado como singleTask, el siguiente fragmento de código muestra qué añadir a tu clase MainActivity:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
Configurar iOS
2.5 (Opcional) Configura el Podfile para XCFrameworks dinámicos
Para importar ciertas bibliotecas de Braze, como BrazeUI, en un archivo Objective-C++, debes usar la sintaxis #import. A partir de la versión 7.4.0 del SDK Swift de Braze, los binarios tienen un canal de distribución opcional como XCFrameworks dinámicos, que son compatibles con esta sintaxis.
Si deseas usar este canal de distribución, anula manualmente las ubicaciones de origen de CocoaPods en tu Podfile. Consulta este ejemplo y reemplaza {your-version} con la versión relevante que deseas importar:
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
2.6 Instala los pods
Dado que React Native vincula automáticamente las bibliotecas a la plataforma nativa, puedes instalar el SDK con la ayuda de CocoaPods.
El siguiente fragmento de código muestra cómo instalar los pods desde la carpeta raíz del proyecto:
# To install using the React Native New Architecture
cd ios && pod install
# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install
2.7 Configura el SDK de Braze
Usa BrazeReactInitializer.configure en tu AppDelegate para registrar la configuración nativa. Los cierres que proporcionas se almacenan y se aplican posteriormente cuando se llama a Braze.initialize(apiKey, endpoint) desde JavaScript.
El siguiente fragmento de código muestra cómo importar el SDK de Braze en la parte superior del archivo AppDelegate.swift:
import BrazeKit
import braze_react_native_sdk
En el método application(_:didFinishLaunchingWithOptions:), registra tu configuración nativa usando BrazeReactInitializer.configure. No establezcas la clave de API ni el endpoint aquí. Se proporcionan desde JavaScript a través de Braze.initialize().
- Cierre
configure: Recibe unBraze.Configurationy te permite establecer propiedades de configuración nativa (registro, push, sesiones y más). - Cierre
postInitialization(opcional): Recibe la instancia activa deBrazedespués de su creación, para configuraciones que requieren la instancia (por ejemplo, almacenar una referencia o establecer delegados).
El siguiente fragmento de código muestra un ejemplo de implementación de AppDelegate.swift que usa BrazeReactInitializer.configure:
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
BrazeReactInitializer.configure { configuration in
configuration.logger.level = .info
configuration.push.automation = true
} postInitialization: { braze in
AppDelegate.braze = braze
}
// ... React Native setup
return true
}
}
El siguiente fragmento de código muestra cómo importar el SDK de Braze en la parte superior del archivo AppDelegate.m:
@import BrazeKit;
@import braze_react_native_sdk;
En el método application:didFinishLaunchingWithOptions:, registra tu configuración nativa usando BrazeReactInitializer. No establezcas la clave de API ni el endpoint aquí. Se proporcionan desde JavaScript a través de Braze.initialize().
El siguiente fragmento de código muestra un ejemplo de implementación de AppDelegate.m que usa BrazeReactInitializer:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[BrazeReactInitializer configure:^(BRZConfiguration *configuration) {
configuration.logger.level = BRZLoggerLevelInfo;
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
} postInitialization:^(Braze *braze) {
// Store the Braze instance for later use.
}];
/* Other configuration */
return YES;
}

BrazeReactInitializer.configure() solo almacena tu configuración. No existe ninguna instancia de Braze hasta que se llama a Braze.initialize() desde JavaScript, por lo que no llames a ningún método del SDK de Braze en el AppDelegate después de configure().
Cuando llamas a Braze.initialize() de nuevo, los mismos bloques configure y postInitialization se aplican a la nueva instancia de Braze.
Método 1: Uso del plugin de Expo
Paso 2.1: Instala el plugin de Braze Expo
Asegúrate de que tu versión del SDK de Braze React Native sea al menos 1.37.0. Para ver la lista completa de versiones compatibles, consulta el repositorio de Braze React Native.
El siguiente fragmento de código muestra el comando para instalar el plugin de Braze Expo:
npx expo install @braze/expo-plugin
Paso 2.2: Añade el plugin a tu app.json
En tu app.json, añade el plugin de Braze Expo. Puedes proporcionar las siguientes opciones de configuración:
| Método | Tipo | Descripción |
|---|---|---|
androidApiKey |
string | Obligatorio. La clave de API para tu aplicación Android, ubicada en tu panel de Braze en Administrar configuración. |
iosApiKey |
string | Obligatorio. La clave de API para tu aplicación iOS, ubicada en tu panel de Braze en Administrar configuración. |
baseUrl |
string | Obligatorio. El endpoint del SDK para tu aplicación, ubicado en tu panel de Braze en Administrar configuración. |
enableBrazeIosPush |
boolean | Solo iOS. Indica si se usa Braze para gestionar las notificaciones push en iOS. Introducido en React Native SDK v1.38.0 y Expo Plugin v0.4.0. |
enableFirebaseCloudMessaging |
boolean | Solo Android. Indica si se usa Firebase Cloud Messaging para notificaciones push. Introducido en React Native SDK v1.38.0 y Expo Plugin v0.4.0. |
firebaseCloudMessagingSenderId |
string | Solo Android. Tu ID de remitente de Firebase Cloud Messaging. Introducido en React Native SDK v1.38.0 y Expo Plugin v0.4.0. |
sessionTimeout |
integer | El tiempo de espera de sesión de Braze para tu aplicación en segundos. |
enableSdkAuthentication |
boolean | Indica si se habilita la característica de autenticación del SDK. |
logLevel |
integer | El nivel de registro para tu aplicación. El nivel de registro predeterminado es 8 y registra información mínima. Para habilitar el registro detallado para depuración, usa el nivel de registro 0. |
minimumTriggerIntervalInSeconds |
integer | El intervalo de tiempo mínimo en segundos entre desencadenantes. El valor predeterminado es 30 segundos. |
enableAutomaticLocationCollection |
boolean | Indica si la recopilación automática de ubicación está habilitada (si el usuario lo permite). |
enableGeofence |
boolean | Indica si las geovallas están habilitadas. |
enableAutomaticGeofenceRequests |
boolean | Indica si las solicitudes de geovallas deben realizarse automáticamente. |
dismissModalOnOutsideTap |
boolean | Solo iOS. Indica si un mensaje modal dentro de la aplicación se descarta cuando el usuario hace clic fuera del mensaje dentro de la aplicación. |
androidHandlePushDeepLinksAutomatically |
boolean | Solo Android. Indica si el SDK de Braze debe gestionar automáticamente los vínculos profundos push. |
androidPushNotificationHtmlRenderingEnabled |
boolean | Solo Android. Establece si el contenido de texto en una notificación push debe interpretarse y renderizarse como HTML usando android.text.Html.fromHtml. |
androidNotificationAccentColor |
string | Solo Android. Establece el color de acento de las notificaciones de Android. |
androidNotificationLargeIcon |
string | Solo Android. Establece el icono grande de las notificaciones de Android. |
androidNotificationSmallIcon |
string | Solo Android. Establece el icono pequeño de las notificaciones de Android. |
iosRequestPushPermissionsAutomatically |
boolean | Solo iOS. Indica si el usuario debe recibir automáticamente la solicitud de permisos push al iniciar la aplicación. |
enableBrazeIosRichPush |
boolean | Solo iOS. Indica si se habilitan las características de notificaciones push enriquecidas para iOS. |
enableBrazeIosPushStories |
boolean | Solo iOS. Indica si se habilita Braze Push Stories para iOS. |
iosPushStoryAppGroup |
string | Solo iOS. El grupo de aplicaciones usado para iOS Push Stories. |
iosUseUUIDAsDeviceId |
boolean | Solo iOS. Indica si el ID de dispositivo usará un UUID generado aleatoriamente. |
iosForwardUniversalLinks |
boolean | Solo iOS. Especifica si el SDK debe reconocer y reenviar automáticamente los enlaces universales a los métodos del sistema (predeterminado: false). Cuando está habilitado, el SDK reenviará automáticamente los enlaces universales a los métodos del sistema definidos en Compatibilidad con enlaces universales en tu aplicación. Introducido en React Native SDK v11.1.0 y Expo Plugin v3.2.0. |
El siguiente fragmento de código muestra un ejemplo de configuración de app.json:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"baseUrl": "YOUR-SDK-ENDPOINT",
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
],
]
}
}
Configuración de iconos de notificación push en Android
Al usar androidNotificationLargeIcon y androidNotificationSmallIcon, sigue estas prácticas recomendadas para que los iconos se muestren correctamente:
Ubicación y formato de los iconos
Para usar iconos de notificación push personalizados con el plugin de Braze Expo:
- Crea tus archivos de icono siguiendo los requisitos de icono enumerados en Requisitos de icono.
- Colócalos en los directorios nativos de Android de tu proyecto en
android/app/src/main/res/drawable-<density>/(por ejemplo,android/app/src/main/res/drawable-mdpi/,drawable-hdpi/o similar). - Alternativamente, si estás gestionando activos en tu directorio de React Native, puedes usar la configuración de icono de app.json de Expo o crear un plugin de configuración de Expo para copiar los iconos a las carpetas drawable de Android durante el prebuild.
El plugin de Braze Expo referencia estos iconos usando el sistema de recursos drawable de Android.
Requisitos de icono
- Icono pequeño: Debe ser una silueta blanca sobre un fondo transparente (esto es un requisito de la plataforma Android)
- Icono grande: Puede ser una imagen a todo color.
- Formato: Se recomienda el formato PNG.
- Nomenclatura: Usa solo letras minúsculas, números y guiones bajos (por ejemplo,
my_large_icon.png)
Configuración en app.json
El siguiente fragmento de código muestra cómo referenciar iconos de notificación de Android en app.json usando el prefijo @drawable/:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}

No uses rutas de archivo relativas (como src/assets/images/icon.png) ni incluyas la extensión del archivo al referenciar iconos. El plugin de Expo requiere el prefijo @drawable/ para localizar correctamente los iconos en las carpetas nativas de Android después del proceso de prebuild.
Cómo funciona
El plugin de Braze Expo referencia tus archivos de icono desde los directorios drawable de Android. Cuando ejecutas npx expo prebuild, Expo genera la estructura del proyecto nativo de Android. Tus iconos deben estar presentes en las carpetas drawable de Android (ya sea colocados manualmente o copiados mediante un plugin de configuración) antes del proceso de compilación. Luego, el plugin configura el SDK de Braze para usar estos recursos drawable por sus nombres (sin ruta ni extensión), por eso se requiere el prefijo @drawable/ en tu configuración.
Para obtener más información sobre iconos de notificación de Android, consulta las directrices de iconos de notificación de Android.
Paso 2.3: Compila y ejecuta tu aplicación
Precompilar tu aplicación genera los archivos nativos necesarios para que funcione el plugin de Braze Expo.
El siguiente fragmento de código muestra el comando para precompilar tu aplicación:
npx expo prebuild
Ejecuta tu aplicación como se especifica en la documentación de Expo. Ten en cuenta que, si realizas cambios en las opciones de configuración, deberás precompilar y ejecutar la aplicación de nuevo.
Método 2: Uso de React Native CLI
Configurar Android
Paso 2.1: Añade el plugin Kotlin de Gradle
El siguiente fragmento de código muestra cómo añadir el plugin Kotlin de Gradle en el build.gradle de nivel superior de tu proyecto en buildscript > dependencies:
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
Esto añade Kotlin a tu proyecto.
Paso 2.2: Configura el SDK de Braze
Para conectarte a los servidores de Braze, crea un archivo braze.xml en la carpeta res/values de tu proyecto. El siguiente fragmento de código muestra un ejemplo de configuración de braze.xml. Reemplaza la clave de API y el endpoint con tus valores:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
El siguiente fragmento de código muestra los permisos requeridos para tu archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

En la versión 12.2.0 o posterior del SDK de Braze para Android, puedes incluir automáticamente la biblioteca android-sdk-location configurando importBrazeLocationLibrary=true en tu archivo gradle.properties.
Paso 2.3: Implementa el seguimiento de sesiones de usuario
Las llamadas a openSession() y closeSession() se gestionan automáticamente.
El siguiente fragmento de código muestra qué añadir al método onCreate() de tu clase MainApplication:
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
Paso 2.4: Gestiona las actualizaciones de intent
Si tu MainActivity tiene android:launchMode configurado como singleTask, el siguiente fragmento de código muestra qué añadir a tu clase MainActivity:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
Configurar iOS
Paso 2.5: (Opcional) Configura el Podfile para XCFrameworks dinámicos
Para importar ciertas bibliotecas de Braze, como BrazeUI, en un archivo Objective-C++, debes usar la sintaxis #import. A partir de la versión 7.4.0 del SDK Swift de Braze, los binarios tienen un canal de distribución opcional como XCFrameworks dinámicos, que son compatibles con esta sintaxis.
Si deseas usar este canal de distribución, anula manualmente las ubicaciones de origen de CocoaPods en tu Podfile. El siguiente fragmento de código muestra un ejemplo de anulación. Reemplaza {your-version} con la versión relevante que deseas importar:
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
Paso 2.6: Instala los pods
Dado que React Native vincula automáticamente las bibliotecas a la plataforma nativa, puedes instalar el SDK con la ayuda de CocoaPods.
El siguiente fragmento de código muestra cómo instalar los pods desde la carpeta raíz del proyecto:
# To install using the React Native New Architecture
cd ios && pod install
# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install
Paso 2.7: Configura el SDK de Braze
El siguiente fragmento de código muestra cómo importar el SDK de Braze en la parte superior del archivo AppDelegate.swift:
import BrazeKit
import braze_react_native_sdk
En el método application(_:didFinishLaunchingWithOptions:), reemplaza la clave de API y el endpoint con los valores de tu aplicación. Luego, crea la instancia de Braze usando la configuración y crea una propiedad estática en el AppDelegate para un acceso fácil.

Nuestro ejemplo asume una implementación de RCTAppDelegate, que proporciona varias abstracciones en la configuración de React Native. Si estás usando una configuración diferente para tu aplicación, asegúrate de ajustar tu implementación según sea necesario.
El siguiente fragmento de código muestra un ejemplo de configuración de AppDelegate.swift:
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "{BRAZE_API_KEY}",
endpoint: "{BRAZE_ENDPOINT}")
// Enable logging and customize the configuration here.
configuration.logger.level = .info
let braze = BrazeReactBridge.perform(
#selector(BrazeReactBridge.initBraze(_:)),
with: configuration
).takeUnretainedValue() as! Braze
AppDelegate.braze = braze
/* Other configuration */
return true
}
// MARK: - AppDelegate.braze
static var braze: Braze? = nil
El siguiente fragmento de código muestra cómo importar el SDK de Braze en la parte superior del archivo AppDelegate.m:
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"
En el método application:didFinishLaunchingWithOptions:, reemplaza la clave de API y el endpoint con los valores de tu aplicación. Luego, crea la instancia de Braze usando la configuración y crea una propiedad estática en el AppDelegate para un acceso fácil.

Nuestro ejemplo asume una implementación de RCTAppDelegate, que proporciona varias abstracciones en la configuración de React Native. Si estás usando una configuración diferente para tu aplicación, asegúrate de ajustar tu implementación según sea necesario.
El siguiente fragmento de código muestra un ejemplo de configuración de AppDelegate.m:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
endpoint:@"{BRAZE_ENDPOINT}"];
// Enable logging and customize the configuration here.
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
/* Other configuration */
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
Paso 3: Inicializa el SDK
El siguiente fragmento de código muestra cómo importar la biblioteca en tu código de React Native:
import Braze from "@braze/react-native-sdk";

React Native SDK 19.2.0+ admite la inicialización de Braze desde la capa de React Native o desde las capas nativas de iOS y Android. Inicializa desde la capa de React Native para usar la inicialización diferida, que inicia el SDK después de un evento como el consentimiento o el inicio de sesión. Si tu aplicación inicializa Braze en las capas nativas actualmente, puedes mantener esa configuración cuando actualices. Para confirmar cómo se comportan las notificaciones en cada configuración, consulta Notificaciones push en arranque en frío.
Luego llama a Braze.initialize() con tu clave de API del identificador de la aplicación y el endpoint del SDK para crear la instancia de Braze. Consulta las siguientes opciones sobre dónde llamar a este método en el flujo de tu aplicación.
Inicialización estándar
El siguiente fragmento de código muestra cómo inicializar el SDK cuando tu aplicación se inicia llamando a Braze.initialize() en un useEffect:
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}, []);
return (
// Your app components
);
};
Inicialización diferida
El siguiente fragmento de código muestra cómo diferir la inicialización del SDK hasta más adelante en la sesión. Por ejemplo, después de que el usuario otorgue su consentimiento o complete el inicio de sesión:
function onUserConsent() {
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}

En iOS, las notificaciones push recibidas antes de Braze.initialize() se ponen en cola y se procesan después de la inicialización. En Android, Braze no resuelve los vínculos profundos de las notificaciones push mientras el SDK espera ser inicializado. Para mantener las notificaciones funcionando cuando una de ellas lanza tu aplicación, consulta Notificaciones push en arranque en frío.
Claves de API específicas por plataforma
El siguiente fragmento de código muestra cómo usar la detección de plataforma cuando tus aplicaciones de Android e iOS usan diferentes claves de API:
import { Platform } from "react-native";
import Braze from "@braze/react-native-sdk";
const apiKey = Platform.select({
android: "YOUR-ANDROID-API-KEY",
ios: "YOUR-IOS-API-KEY",
}) ?? "";
Braze.initialize(apiKey, "YOUR-SDK-ENDPOINT");
Reinicialización
Puedes llamar a Braze.initialize() varias veces para reinicializar el SDK con una clave de API y endpoint diferentes durante la misma sesión. Cada llamada destruye la instancia anterior de Braze y crea una nueva.

Todas las llamadas a métodos del SDK realizadas antes de Braze.initialize() se ignoran en iOS, así que llama a Braze.initialize() antes de usar cualquier otro método de Braze.
Notificaciones push en arranque en frío
Cuando una notificación lanza tu aplicación desde un estado terminado, Braze almacena la carga útil de la notificación en la capa nativa antes de que React Native se cargue. Debido a esto, inicializar desde la capa de React Native no cambia si la carga útil llega a tu aplicación. Para gestionar estas notificaciones, añade los hooks nativos y luego lee la carga útil en tu código de React Native.
En Android, llama a BrazeReactUtils.populateInitialPushPayloadFromIntent(intent) en el método onCreate() de tu clase MainActivity:
import com.braze.reactbridge.BrazeReactUtils
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
}
En iOS, llama a populateInitialPayload(fromLaunchOptions:) en el método application(_:didFinishLaunchingWithOptions:) de tu AppDelegate:
if let launchOptions {
BrazeReactUtils.sharedInstance().populateInitialPayload(fromLaunchOptions: launchOptions)
}
Luego, lee la carga útil en tu código de React Native:
Braze.getInitialPushPayload((pushPayload) => {
if (pushPayload) {
// Handle the notification, such as navigating to the pushPayload.url value
}
});

Cuando la inicialización diferida está habilitada en Android, Braze abre tu actividad principal en lugar de resolver el vínculo profundo en la notificación, y luego pasa los datos de la notificación a esa actividad. Gestiona la navegación en tu código de React Native usando el valor url de Braze.getInitialPushPayload().
Tu configuración de registro push permanece en tu configuración nativa para ambas ubicaciones de inicialización, y Braze la aplica cuando se ejecuta Braze.initialize():
- En Android, establece
com_braze_firebase_cloud_messaging_registration_enabledycom_braze_firebase_cloud_messaging_sender_idenbraze.xml. - En iOS, establece las propiedades
pushen el objeto de configuración dentro del cierreconfigureque pasas aBrazeReactInitializer.configure.
Si tu aplicación depende de vínculos profundos de notificaciones que la lanzan desde un estado terminado, usa React Native SDK 21.1.0 o posterior. Estas versiones incluyen correcciones para capturar la carga útil push inicial y resolver los vínculos profundos push en Android. Para ver la lista completa de cambios, consulta el registro de cambios del SDK de React Native.
Para React Native SDK 19.1.0 y anterior, la inicialización nativa ocurre en el paso 2. Importa la biblioteca en tu código de React Native para llamar a los métodos de Braze. Para más detalles, consulta nuestro proyecto de ejemplo.
import Braze from "@braze/react-native-sdk";
Paso 4: Prueba la integración (opcional)
Puedes verificar que el SDK está integrado revisando las estadísticas de sesión en el panel. Si ejecutas tu aplicación en cualquier plataforma, deberías ver una nueva sesión en el panel (en la sección Resumen).
El siguiente fragmento de código muestra cómo abrir una sesión para un usuario en particular en tu aplicación:
import Braze from "@braze/react-native-sdk";
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
Braze.changeUser("{some-user-id}");
Busca al usuario con {some-user-id} en el panel en Audiencia > Buscar usuarios. Allí puedes verificar que se hayan registrado los datos de sesión y dispositivo.
Para probar tu integración del SDK, el siguiente fragmento de código muestra cómo iniciar una nueva sesión en cualquier plataforma para un usuario.
Braze.changeUser("userId");
El siguiente fragmento de código muestra un ejemplo de asignación del ID de usuario al iniciar la aplicación:
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.changeUser("some-user-id");
}, []);
return (
<div>
...
</div>
)
En el panel de Braze, ve a Búsqueda de usuarios y busca al usuario con el ID que coincida con some-user-id. Allí puedes verificar que se hayan registrado los datos de sesión y dispositivo.
Pruebas con Jest
Las pruebas unitarias de React Native que importan el SDK de Braze necesitan mocks para los módulos nativos y el Turbo Module de Braze. El repositorio del SDK de Braze para React Native incluye una configuración de referencia de Jest en __tests__/jest.setup.js. Añade ese archivo (o una copia adaptada) a setupFiles en tu configuración de Jest para que NativeEventEmitter, TurboModuleRegistry y BrazeReactBridge se simulen (mock) cuando pruebes componentes que llaman a las API de Braze.
Próximos pasos
Después de integrar el SDK de Braze, puedes empezar a implementar características comunes de mensajería:
- Notificaciones push: Configura y envía notificaciones push a tus usuarios.
- In-App Messages: Muestra mensajes contextuales dentro de tu aplicación.
- Banners: Muestra banners persistentes en la interfaz de tu aplicación.
Integración del SDK de Roku
Paso 1: Añadir archivos
Los archivos del SDK de Braze se encuentran en el directorio sdk_files del repositorio del SDK de Braze para Roku.
- Añade
BrazeSDK.brsa tu aplicación en el directoriosource. - Añade
BrazeTask.brsyBrazeTask.xmla tu aplicación en el directoriocomponents.
Paso 2: Añadir referencias
Añade una referencia a BrazeSDK.brs en tu escena principal utilizando el siguiente elemento script:
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>
Paso 3: Configurar
Dentro de main.brs, establece la configuración de Braze en el nodo global:
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})
Puedes encontrar tu punto final de SDK y tu clave de API en el panel de Braze.
Paso 4: Inicializar Braze
Inicializa la instancia de Braze:
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)
Configuraciones opcionales
Registro
Para depurar tu integración de Braze, puedes ver la consola de depuración de Roku para los registros de Braze. Consulta Depuración de código de Roku Developers para obtener más información.
Acerca del SDK de Braze para Unity
Para ver una lista completa de tipos, funciones, variables y más, consulta el archivo de declaraciones de Unity. Además, si ya integraste Unity manualmente para iOS, puedes cambiar a una integración automatizada.
Integrar el SDK de Unity
Requisitos previos
Antes de comenzar, verifica que tu entorno sea compatible con la versión más reciente del SDK de Braze para Unity.
Paso 1: Elige tu paquete de Braze para Unity
El .unitypackage de Braze incluye enlaces nativos para las plataformas Android e iOS, junto con una interfaz C#.
Hay varios paquetes de Braze para Unity disponibles para descargar en la página de versiones de Braze Unity:
Appboy.unitypackage- Este paquete incluye los SDK de Braze para Android e iOS y la dependencia SDWebImage para el SDK de iOS, que es necesaria para el correcto funcionamiento de los mensajes dentro de la aplicación de Braze y las características de Content Cards en iOS. El framework SDWebImage se utiliza para descargar y mostrar imágenes, incluyendo GIF. Si pretendes utilizar toda la funcionalidad de Braze, descarga e importa este paquete.
Appboy-nodeps.unitypackage- Este paquete es similar a
Appboy.unitypackage, excepto que el framework SDWebImage no está presente. Este paquete es útil si no deseas que el framework SDWebImage esté presente en tu aplicación iOS.
- Este paquete es similar a

A partir de Unity 2.6.0, el artefacto del SDK de Braze para Android incluido requiere dependencias de AndroidX. Si anteriormente estabas usando un jetified unitypackage, puedes pasar de forma segura al unitypackage correspondiente.
Si las compilaciones de Android fallan con “This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled”, habilita Custom Gradle Properties Template en tu configuración de publicación de Unity. Luego abre Assets/Plugins/Android/gradleTemplate.properties y establece android.useAndroidX=true. Para una plantilla funcional, consulta la aplicación de ejemplo de Braze para Unity y su archivo gradleTemplate.properties.
El .unitypackage de Braze incluye enlaces nativos para las plataformas Android e iOS, junto con una interfaz C#.
El paquete de Braze para Unity está disponible para descargar en la página de versiones de Braze Unity con dos opciones de integración:
- Solo
Appboy.unitypackage- Este paquete incluye los SDK de Braze para Android e iOS sin ninguna dependencia adicional. Con este método de integración, no habrá un correcto funcionamiento de los mensajes dentro de la aplicación de Braze ni de las características de Content Cards en iOS. Si pretendes utilizar toda la funcionalidad de Braze sin código personalizado, usa la siguiente opción en su lugar.
- Para utilizar esta opción de integración, asegúrate de que la casilla junto a
Import SDWebImage dependencyesté desmarcada en la interfaz de Unity bajo “Braze Configuration”.
Appboy.unitypackageconSDWebImage- Esta opción de integración incluye los SDK de Braze para Android e iOS y la dependencia SDWebImage para el SDK de iOS, que es necesaria para el correcto funcionamiento de los mensajes dentro de la aplicación de Braze y las características de Content Cards en iOS. El framework
SDWebImagese utiliza para descargar y mostrar imágenes, incluyendo GIF. Si pretendes utilizar toda la funcionalidad de Braze, descarga e importa este paquete. - Para importar automáticamente
SDWebImage, asegúrate de marcar la casilla junto aImport SDWebImage dependencyen la interfaz de Unity bajo “Braze Configuration”.
- Esta opción de integración incluye los SDK de Braze para Android e iOS y la dependencia SDWebImage para el SDK de iOS, que es necesaria para el correcto funcionamiento de los mensajes dentro de la aplicación de Braze y las características de Content Cards en iOS. El framework

Para ver si necesitas la dependencia SDWebImage para tu proyecto iOS, visita la documentación de mensajes dentro de la aplicación para iOS.
Paso 2: Importa el paquete
En el editor de Unity, importa el paquete a tu proyecto de Unity navegando a Assets > Import Package > Custom Package. A continuación, haz clic en Import.
Alternativamente, sigue las instrucciones de importación de paquetes de activos de Unity para una guía más detallada sobre la importación de paquetes personalizados de Unity.

Si solo deseas importar el plugin de iOS o Android, desmarca el subdirectorio Plugins/Android o Plugins/iOS al importar el .unitypackage de Braze.
En el editor de Unity, importa el paquete a tu proyecto de Unity navegando a Assets > Import Package > Custom Package. A continuación, haz clic en Import.
Alternativamente, sigue las instrucciones de importación de paquetes de activos de Unity para una guía más detallada sobre la importación de paquetes personalizados de Unity.

Si solo deseas importar el plugin de iOS o Android, desmarca el subdirectorio Plugins/Android o Plugins/iOS al importar el .unitypackage de Braze.
Paso 3: Configura el SDK
Paso 3.1: Configura AndroidManifest.xml
Configura AndroidManifest.xml para que el SDK de Braze pueda funcionar. 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 siguientes secciones faltantes se añadan a tu AndroidManifest.xml existente.
- Ve al directorio
Assets/Plugins/Android/y abre tu archivoAndroidManifest.xml. Esta es la ubicación predeterminada en el editor de Unity. - En tu
AndroidManifest.xml, añade los permisos y actividades necesarios de la siguiente plantilla. - Cuando hayas terminado, tu
AndroidManifest.xmldebería contener únicamente una sola Activity con"android.intent.category.LAUNCHER"presente.
<?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" />
<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:theme="@style/UnityThemeSelector"
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>
<!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>

Todas las clases Activity registradas en tu archivo AndroidManifest.xml deben estar completamente integradas con el SDK de Braze para Android, de lo contrario no se recopilarán tus análisis. Si añades tu propia clase Activity, asegúrate de extender el reproductor de Unity de Braze para evitar esto.
Paso 3.2: Actualiza AndroidManifest.xml con tu nombre de paquete
Para encontrar tu nombre de paquete, haz clic en File > Build Settings > Player Settings > Android Tab.

En tu AndroidManifest.xml, todas las instancias de REPLACE_WITH_YOUR_PACKAGE_NAME deben reemplazarse con tu Package Name del paso anterior.
Paso 3.3: Añade dependencias de gradle
Para añadir dependencias de gradle a tu proyecto de Unity, primero habilita “Custom Main Gradle Template” en tu configuración de publicación. Esto creará un archivo gradle de plantilla que tu proyecto utilizará. Un archivo gradle se encarga de configurar las dependencias y otras opciones del proyecto en tiempo de compilación. Para más información, consulta el archivo mainTemplate.gradle de la aplicación de ejemplo de Braze para Unity.
Se requieren las siguientes dependencias:
implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"
implementation 'androidx.core:core:1.6.0'
También puedes configurar estas dependencias usando el External Dependency Manager.
Paso 3.4: Automatiza la integración de Unity para Android
Braze proporciona una solución nativa de Unity para automatizar la integración de Unity para Android.
- En el editor de Unity, abre la configuración de Braze navegando a Braze > Braze Configuration.
- Marca la casilla Automate Unity Android Integration.
- En el campo Braze API Key, introduce la clave de API de tu aplicación que se encuentra en Administrar configuración en el panel de Braze.

Esta integración automática no debe usarse con un archivo braze.xml creado manualmente, ya que los valores de configuración pueden entrar en conflicto durante la compilación del proyecto. Si necesitas un braze.xml manual, desactiva la integración automática.
Paso 3.1: Configura tu clave de API
Braze proporciona una solución nativa de Unity para automatizar la integración de Unity para iOS. Esta solución modifica el proyecto Xcode compilado usando PostProcessBuildAttribute de Unity y crea una subclase de UnityAppController usando la macro IMPL_APP_CONTROLLER_SUBCLASS.
- En el editor de Unity, abre la configuración de Braze navegando a Braze > Braze Configuration.
- Marca la casilla Automate Unity iOS Integration.
- En el campo Braze API Key, introduce la clave de API de tu aplicación que se encuentra en Administrar configuración.

Si tu aplicación ya está usando otra subclase de UnityAppController, necesitarás fusionar tu implementación de subclase con AppboyAppDelegate.mm.
Personalización del paquete de Unity
Paso 1: Clona el repositorio
En tu terminal, clona el repositorio de GitHub del SDK Unity de Braze y, a continuación, navega hasta esa carpeta:
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk
Paso 2: Exporta el paquete desde el repositorio
Primero, inicia Unity y mantenlo ejecutándose en segundo plano. Luego, en la raíz del repositorio, ejecuta el siguiente comando para exportar el paquete a braze-unity-sdk/unity-package/.
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit

Si experimentas algún problema después de ejecutar estos comandos, consulta Unity: Argumentos de línea de comandos.
Paso 3: Importa el paquete en Unity
- En Unity, importa el paquete deseado en tu proyecto de Unity navegando a Assets > Import Package > Custom Package.
- Si hay algún archivo que no quieras importar, deselecciónalo ahora.
- Personaliza el paquete de Unity exportado ubicado en
Assets/Editor/Build.cs.
Cambiar a una integración automatizada (solo Swift)
Para aprovechar la integración automatizada de iOS que ofrece el SDK de Unity de Braze, sigue estos pasos para pasar de una integración manual a una automatizada.
- Elimina todo el código relacionado con Braze de la subclase
UnityAppControllerde tu proyecto Xcode. - Elimina las bibliotecas de Braze para iOS de tu proyecto Unity o Xcode (como
Appboy_iOS_SDK.frameworkySDWebImage.framework). - Importa de nuevo el paquete Braze Unity a tu proyecto. Para un recorrido completo, consulta Paso 2: Importa el paquete.
- Vuelve a configurar tu clave de API. Para un recorrido completo, consulta Paso 3.1: Configura tu clave de API.
Configuraciones opcionales
Registro detallado
Para habilitar el registro detallado en el Editor de Unity, haz lo siguiente:
- Abre los ajustes de configuración de Braze navegando a Braze > Braze Configuration.
- Haz clic en el desplegable Show Braze Android Settings.
- En el campo SDK Log Level, introduce el valor “0”.
Compatibilidad con Prime 31
Para usar el plugin de Unity de Braze con los plugins de Prime31, edita el archivo AndroidManifest.xml de tu proyecto para usar las clases de actividad compatibles con Prime31. Cambia todas las referencias de
com.braze.unity.BrazeUnityPlayerActivity a com.braze.unity.prime31compatible.BrazeUnityPlayerActivity
Amazon Device Messaging (ADM)
Braze admite la integración de push de ADM en aplicaciones Unity. Si quieres integrar push de ADM, crea un archivo llamado api_key.txt que contenga tu clave de API de ADM y colócalo en la carpeta Plugins/Android/assets/. Para más información sobre la integración de ADM con Braze, visita nuestras instrucciones de integración de push de ADM.
Extensión del reproductor Unity de Braze (solo Android)
El archivo de ejemplo AndroidManifest.xml proporcionado tiene una clase de actividad registrada, BrazeUnityPlayerActivity. Esta clase está integrada con el SDK de Braze y extiende UnityPlayerActivity con manejo de sesiones, registro de mensajes dentro de la aplicación, registro de análisis de notificaciones push, y más. Consulta Unity para más información sobre la extensión de la clase UnityPlayerActivity.
Si estás creando tu propia UnityPlayerActivity personalizada en un proyecto de biblioteca o plugin, necesitarás extender nuestra BrazeUnityPlayerActivity para integrar tu funcionalidad personalizada con Braze. Antes de comenzar a trabajar en la extensión de BrazeUnityPlayerActivity, sigue nuestras instrucciones para integrar Braze en tu proyecto de Unity.
- Añade el SDK de Android de Braze como dependencia a tu proyecto de biblioteca o plugin como se describe en las instrucciones de integración del SDK de Android de Braze.
- Integra nuestro
.aarde Unity, que contiene nuestra funcionalidad específica de Unity, a tu proyecto de biblioteca de Android que estás compilando para Unity. Elappboy-unity.aarestá disponible en nuestro repositorio público. Después de que nuestra biblioteca de Unity se haya integrado correctamente, modifica tuUnityPlayerActivitypara que extiendaBrazeUnityPlayerActivity. - Exporta tu proyecto de biblioteca o plugin y colócalo en
/<your-project>/Assets/Plugins/Androidcomo de costumbre. No incluyas ningún código fuente de Braze en tu biblioteca o plugin, ya que estarán presentes en/<your-project>/Assets/Plugins/Android. - Edita tu
/<your-project>/Assets/Plugins/Android/AndroidManifest.xmlpara especificar tu subclase deBrazeUnityPlayerActivitycomo la actividad principal.
Ahora deberías poder empaquetar un .apk desde el IDE de Unity que esté completamente integrado con Braze y contenga la funcionalidad de tu UnityPlayerActivity personalizada.
Solución de problemas
Error: “File could not be read”
Los errores similares al siguiente pueden ignorarse de forma segura. El software de Apple utiliza una extensión PNG propietaria llamada CgBI, que Unity no reconoce. Estos errores no afectarán a tu compilación de iOS ni a la correcta visualización de las imágenes asociadas en el paquete de Braze.
Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read
Integración del SDK de .NET MAUI
La integración del SDK Braze .NET MAUI (antes Xamarin) te proporcionará funciones básicas de análisis, así como mensajes dentro de la aplicación con los que podrás interactuar con tus usuarios.
Requisitos previos
Antes de integrar el SDK .NET MAUI de Braze, asegúrate de que cumples los siguientes requisitos:
- A partir de la
version 3.0.0, este SDK requiere el uso de .NET 6+ y elimina la compatibilidad con proyectos que utilicen el framework Xamarin. - A partir de la
version 4.0.0, este SDK dejó de ser compatible con Xamarin y Xamarin.Forms y añadió compatibilidad con .NET MAUI. Consulta la política de Microsoft sobre el fin del soporte para Xamarin.
Paso 1: Obtén el binding de .NET MAUI
Un binding de .NET MAUI es una forma de utilizar bibliotecas nativas en aplicaciones .NET MAUI. La implementación de un binding consiste en crear una interfaz C# para la biblioteca y luego utilizar esa interfaz en tu aplicación. Consulta la documentación de .NET MAUI. Hay dos formas de incluir el binding del SDK de Braze: utilizando NuGet o compilando desde el código fuente.
El método de integración más sencillo consiste en obtener el SDK de Braze del repositorio central NuGet.org. En la barra lateral de Visual Studio, haz clic con el botón derecho en la carpeta Packages y haz clic en Add Packages.... Busca “Braze” e instala el paquete BrazePlatform.BrazeAndroidBinding en tu proyecto.
Para utilizar los servicios de ubicación y geovallas de Braze, instala también el paquete BrazePlatform.BrazeAndroidLocationBinding.
El segundo método de integración consiste en incluir el código fuente del binding. En appboy-component/src/androidnet6 encontrarás nuestro código fuente del binding; al añadir una referencia de proyecto al BrazeAndroidBinding.csproj en tu aplicación .NET MAUI, el binding se compilará con tu proyecto y te dará acceso al SDK de Braze para Android.
Para utilizar los servicios de ubicación y geovallas de Braze, añade también una referencia de proyecto al BrazeAndroidLocationBinding.csproj que se encuentra en appboy-component/src/androidnet6/BrazeAndroidLocationBinding.

Los bindings de iOS para .NET MAUI SDK versión 4.0.0 y posteriores utilizan el SDK Braze Swift, mientras que las versiones anteriores utilizan el SDK AppboyKit heredado.
Un binding de .NET MAUI es una forma de utilizar bibliotecas nativas en aplicaciones .NET MAUI. La implementación de un binding consiste en crear una interfaz C# para la biblioteca y luego utilizar esa interfaz en tu aplicación. Hay dos formas de incluir el binding del SDK de Braze: utilizando NuGet o compilando desde el código fuente.
El método de integración más sencillo consiste en obtener el SDK de Braze del repositorio central NuGet.org. En la barra lateral de Visual Studio, haz clic con el botón derecho en la carpeta Packages y haz clic en Add Packages.... Busca “Braze” e instala los últimos paquetes NuGet de .NET MAUI iOS: Braze.iOS.BrazeKit, Braze.iOS.BrazeUI y Braze.iOS.BrazeLocation en tu proyecto.
También proporcionamos los paquetes de bibliotecas de compatibilidad: Braze.iOS.BrazeKitCompat y Braze.iOS.BrazeUICompat, para facilitar tu migración a .NET MAUI.
El segundo método de integración consiste en incluir el código fuente del binding. En appboy-component/src/iosnet6 encontrarás nuestro código fuente del binding; al añadir una referencia de proyecto al BrazeiOSBinding.csproj en tu aplicación .NET MAUI, el binding se compilará con tu proyecto y te dará acceso al SDK de Braze para iOS. Asegúrate de que BrazeiOSBinding.csproj aparece en la carpeta “Reference” de tu proyecto.
Paso 2: Configura tu instancia de Braze
Paso 2.1: Configura el SDK de Braze en Braze.xml
Ahora que las bibliotecas están integradas, tienes que crear un archivo Braze.xml en la carpeta Resources/values de tu proyecto. El contenido de ese archivo debe parecerse al siguiente fragmento de código:

Asegúrate de sustituir YOUR_API_KEY por la clave de API que se encuentra en Configuración > Claves de API en el panel de Braze.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
<string-array name="com_braze_internal_sdk_metadata">
<item>XAMARIN</item>
<item>NUGET</item>
</string-array>
</resources>
Si incluyes manualmente el código fuente del binding, elimina <item>NUGET</item> de tu código.

Paso 2.2: Añade los permisos necesarios al manifiesto de Android
Ahora que has añadido tu clave de API, tienes que añadir los siguientes permisos a tu archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
Para ver un ejemplo de tu AndroidManifest.xml, consulta la aplicación de ejemplo MAUI de Android.
Paso 2.3: Seguimiento de las sesiones de usuario y registro de mensajes dentro de la aplicación
Para habilitar el seguimiento de la sesión del usuario y registrar tu aplicación para mensajes dentro de la aplicación, añade la siguiente llamada al método del ciclo de vida OnCreate() de la clase Application de tu aplicación:
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
Cuando configures tu instancia de Braze, añade el siguiente fragmento de código para configurar tu instancia:

Asegúrate de sustituir YOUR_API_KEY por la clave de API que se encuentra en Configuración > Claves de API en el panel de Braze.
var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);
Consulta el archivo App.xaml.cs en la aplicación de ejemplo MAUI de iOS.
Paso 3: Prueba la integración
Ahora puedes iniciar tu aplicación y ver las sesiones que se registran en el panel de Braze (junto con la información del dispositivo y otros análisis). Para profundizar en las mejores prácticas para la integración básica del SDK, consulta las instrucciones de integración de Android.
Ahora puedes iniciar tu aplicación y ver las sesiones que se registran en el panel de Braze. Para profundizar en las mejores prácticas para la integración básica del SDK, consulta las instrucciones de integración de iOS.

Nuestro binding público actual de .NET MAUI para el SDK de iOS no se conecta al SDK de Facebook para iOS (vinculación de datos de redes sociales) y no incluye el envío del IDFA a Braze.
Integración de la aplicación ChatGPT
Configuración
Paso 1: Obtener el archivo de integración de Braze
Copia el archivo braze.js de nuestro repositorio de integración de aplicaciones ChatGPT a tu proyecto. Este archivo contiene toda la configuración necesaria del SDK de Braze y las funciones auxiliares.
Paso 2: Instalar dependencias
Instala nuestro SDK Web para disfrutar del conjunto de características más actualizado de Braze:
Para la integración del lado del cliente:
npm install @braze/web-sdk
Implementation
There are two ways to integrate Braze with your ChatGPT app depending on your use case:
Client-side integration (custom widgets)

Recommended Approach: This method enables rich messaging experiences and real-time user interaction tracking within your ChatGPT app widgets.
For displaying Braze messaging and tracking user interactions within your custom ChatGPT app widgets, use the Web SDK integration. A full messaging example can be found in our sample repository here.
Configure widget metadata
Add the following metadata to your MCP server file to allow Braze domains, ensuring to update the CDN domain based on your region:
"openai/widgetCSP": {
connect_domains: ["https://YOUR-SDK-ENDPOINT"],
resource_domains: [
"https://appboy-images.com",
"https://braze-images.com",
"https://cdn.braze.eu",
"https://use.fontawesome.com"
],
}
Reemplaza YOUR-SDK-ENDPOINT por tu punto final de SDK de Braze real.
Configurar el hook useBraze
import { useBraze } from "./utils/braze";
function YourWidget() {
const braze = useBraze({
apiKey: "your-braze-api-key",
baseUrl: "your-braze-endpoint.braze.com",
});
useEffect(() => {
if (!braze.isInitialized) {
return;
}
// Set user identity
braze.changeUser("user-id-123");
// Log widget interactions
braze.logCustomEvent("viewed_pizzaz_list");
}, [braze.isInitialized]);
return (
// Your widget JSX
);
}
Mostrar Content Cards de Braze
const [cards, setCards] = useState([]);
useEffect(() => {
// Get cached content cards
setCards(braze.getCachedContentCards()?.cards ?? []);
// Subscribe to content card updates
braze.subscribeToContentCardsUpdates((contentCards) => {
setCards(contentCards.cards);
});
// Open session
braze.openSession();
return () => {
braze.removeAllSubscriptions();
}
}, []);
Realizar seguimiento de eventos de widgets
// Track user interactions within your widget
const handleButtonClick = () => {
braze.logCustomEvent("widget_button_clicked", {
button_type: "save_list",
widget_name: "pizza_list"
});
};
const handleItemInteraction = (itemId) => {
braze.logCustomEvent("item_interacted", {
item_id: itemId,
interaction_type: "view_details"
});
};
Integración del lado del servidor (servidor MCP)
Si también necesitas una integración del lado del servidor para la funcionalidad de mensajería en tu servidor MCP, ponte en contacto con [email protected]. Para realizar el seguimiento de eventos y compras desde tu servidor MCP, utiliza nuestra REST API.
Acerca del SDK Braze Vega
El SDK Braze Vega te permite recopilar análisis y mostrar mensajes enriquecidos dentro de la aplicación a tus usuarios. La mayoría de los métodos en el SDK Braze Vega son asíncronos y devuelven promesas que deben ser esperadas o resueltas.
Integración del SDK Braze Vega
Paso 1: Instala la biblioteca de Braze
Instala el SDK Braze Vega utilizando tu gestor de paquetes preferido.
Si tu proyecto utiliza NPM, puedes añadir el SDK Braze Vega como dependencia.
npm install @braze/vega-sdk --save
Después de la instalación, puedes importar los métodos que necesites:
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
Si tu proyecto utiliza Yarn, puedes añadir el SDK Braze Vega como dependencia.
yarn add @braze/vega-sdk
Después de la instalación, puedes importar los métodos que necesites:
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
Paso 2: Inicializa el SDK
Después de añadir el SDK Braze Vega a tu proyecto, inicializa la biblioteca con la clave de API y la URL del punto final de SDK que se encuentran en Configuración > Configuración de la aplicación dentro de tu panel de Braze.

Debes esperar o resolver la promesa de changeUser antes de llamar a otros métodos de Braze, o los eventos y atributos podrían asignarse al usuario incorrecto.
import { useEffect } from "react-native";
import {
initialize,
changeUser,
logCustomEvent,
openSession,
setCustomUserAttribute,
setUserCountry
} from "@braze/vega-sdk";
const App = () => {
useEffect(() => {
const initBraze = async () => {
// Initialize the SDK
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60,
appVersionNumber: "1.2.3.4",
enableLogging: true, // set to `true` for debugging
});
// Change user
await changeUser("user-id-123");
// Start a session
await openSession();
// Log custom events and set user attributes
logCustomEvent("visited-page", { pageName: "home" });
setCustomUserAttribute("my-attribute", "my-attribute-value");
setUserCountry("USA");
};
initBraze();
}, []);
return (
// Your app components
);
};

Los usuarios anónimos pueden contabilizarse en tus MAU. Como resultado, es posible que quieras cargar o inicializar el SDK de forma condicional para excluir a estos usuarios de tu recuento de MAU.
Configuraciones opcionales
Registro
Puedes habilitar el registro del SDK para ayudar con la depuración y la solución de problemas. Existen múltiples formas de habilitar el registro.
Habilitar el registro durante la inicialización
Pasa enableLogging: true a initialize() para registrar mensajes de depuración en la consola:
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
enableLogging: true
});

Los registros básicos son visibles para todos los usuarios, así que considera deshabilitar el registro antes de lanzar tu código a producción.
Habilitar el registro después de la inicialización
Usa toggleLogging() para habilitar o deshabilitar el registro del SDK después de la inicialización:
import { toggleLogging } from "@braze/vega-sdk";
// Enable logging
toggleLogging();
Registro personalizado
Usa setLogger() para proporcionar una función de registro personalizada y tener más control sobre cómo se gestionan los registros del SDK:
import { setLogger } from "@braze/vega-sdk";
setLogger((message) => {
console.log("Braze Custom Logger: " + message);
// Add your custom logging logic here
});
Opciones de configuración
Puedes pasar opciones de configuración adicionales a initialize() para personalizar el comportamiento del SDK:
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60, // Configure session timeout (default is 1800 seconds)
appVersionNumber: "1.2.3.4", // Set your app version
enableLogging: true, // Enable SDK logging
});
Actualización del SDK
Cuando haces referencia al SDK de Braze Vega desde NPM o Yarn, puedes actualizar a la última versión actualizando la dependencia de tu paquete:
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk
Prueba de tu integración
Para verificar que tu integración del SDK funciona correctamente:
- Inicializa el SDK con
enableLogging: truepara ver mensajes de depuración en la consola - Asegúrate de llamar a
await changeUser()antes de llamar a otros métodos del SDK - Llama a
await openSession()para iniciar una sesión - Comprueba en tu panel de Braze en Resumen que los datos de sesión se están registrando
- Prueba a registrar un evento personalizado y verifica que aparece en tu panel

Mientras realizas el control de calidad de tu integración de SDK, utiliza el Depurador de SDK para solucionar problemas sin necesidad de activar el registro detallado en tu aplicación.