Skip to content

Logotipo de Braze Integrar el SDK de Braze

Aprende a realizar la integración del 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: Visión general de la integración.

Acerca del SDK de Web Braze

El SDK de Web Braze te permite recopilar datos de análisis y mostrar mensajes enriquecidos dentro de la aplicación, mensajes push y mensajes de tarjetas de contenido a tus usuarios web. Para obtener más información, consulta la documentación de referencia de Braze JavaScript.

Integrar el SDK Web

Puedes realizar la integración del SDK de Web Braze utilizando los siguientes métodos. Para ver opciones adicionales, consulta otros métodos de integración.

  • Integración basada en código: Integra el SDK de Web Braze directamente en tu código base utilizando tu administrador de paquetes preferido o el CDN de Braze. Esto te permite controlar totalmente cómo se carga y configura el SDK.
  • Google Tag Manager: Una solución sin código que te permite realizar la integración del SDK de Web Braze sin modificar el código de tu sitio web. Para obtener más información, consulta Google Tag Manager con el SDK de Braze.

Paso 1: Instala la biblioteca Braze

Puedes instalar la biblioteca Braze utilizando uno de los siguientes métodos. Sin embargo, si tu sitio web utiliza un Content-Security-Policy, revisa la Política de seguridad de contenidos antes de continuar.

Si tu sitio utiliza los administradores de paquetes NPM o Yarn, puedes añadir el paquete NPM de Braze como dependencia.

A partir de la versión 3.0.0, se incluyen definiciones tipográficas. Para obtener notas sobre la actualización de 2.x a 3.x, consulta nuestro registro de cambios.

1
2
3
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk

Una vez instalado, puedes import o require la biblioteca de la forma típica:

1
2
3
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");

Añade el SDK Braze Web directamente a tu HTML haciendo referencia a nuestro script alojado en CDN, que carga la biblioteca de forma asíncrona.

Paso 2: Inicializar el SDK

Una vez añadido Braze Web SDK a tu sitio web, inicializa la biblioteca con la clave de API y la URL del punto final SDK que se encuentran en Configuración > Configuración de la aplicación dentro de tu panel de Braze. Para obtener una lista completabraze.initialize() de opciones, junto con nuestros otros métodos JavaScript, consulta la documentación de Braze JavaScript.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 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();

Solución de problemas relacionados con sesiones perdidas para usuarios anónimos

Si observas un comportamiento de «sesión perdida» o no puedes realizar el seguimiento de la sesión de los usuarios anónimos en la Web, asegúrate de que tu integración realiza llamadasbraze.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 en blanco o faltan.
  • Causa: La implementación no llama abraze.openSession() .
  • Resolución: Siempre llamabraze.openSession() después de la inicialización (y después debraze.changeUser() si estableces un ID externo).

Para obtener más información, consulta el Paso 2: Inicializa el SDK.

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: Abrir la galería de plantillas de etiquetas

En Google Tag Manager, elige tu espacio de trabajo y, a continuación, selecciona Plantillas. En el panel Plantilla de etiqueta, selecciona Buscar galería.

La página de plantillas para un espacio de trabajo de ejemplo en Google Tag Manager.

Paso 2: Añade la plantilla de etiqueta de inicialización.

En la galería de plantillas, busca braze-incy selecciona la etiqueta de inicialización de Braze.

La galería de plantillas que muestra las distintas plantillas de «Braze-inc».

Selecciona Añadir al espacio de trabajo > Añadir.

La página «Etiqueta de inicialización de Braze» en Google Tag Manager.

Paso 3: Configura la etiqueta.

En la sección Plantillas, selecciona la plantilla que acabas de añadir.

La página «Plantillas» de Google Tag Manager muestra la plantilla de etiqueta de inicialización de Braze.

Selecciona el icono del lápiz para abrir el menú desplegable Configuración de etiquetas.

El mosaico Configuración de etiquetas con el icono del «lápiz» mostrado.

Introduce la información mínima requerida:

Para obtener configuraciones de inicialización adicionales, selecciona Opciones de inicialización de Braze y elige las opciones que necesites.

La lista de opciones de inicialización de Braze se encuentra en «Configuración de etiquetas».

Paso 4: Elige las opciones de inicialización

La etiqueta de inicialización de Braze muestra las siguientes opciones. La mayoría de ellas están mapeadas directamente al SDK webInitializationOptions, 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
Permitir mensajes HTML dentro de la aplicación 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.
Número de versión de la aplicación appVersion, appVersionNumber Versión de la aplicación para segmentación (por ejemplo, 1.2.3.4).
Abrir automáticamente una nueva sesión braze.openSession() Abre una nueva sesión después de que el SDK se inicialice llamando a este método por ti.
Mostrar automáticamente los mensajes nuevos dentro de la aplicación 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.
Desactivar el mantenimiento automático de tokens de notificaciones push disablePushTokenMaintenance Impide que el SDK sincronice los tokens de notificaciones push con el backend de Braze en las nuevas sesiones.
Desactivar el registro automático de prestadores de servicios manageServiceWorkerExternally Úsalo si tú mismo realizas el registro y controlas el prestador de servicios.
Desactivar las cookies noCookies Utiliza localStorage en lugar de cookies para los datos de usuario/sesión. Evita el reconocimiento entre subdominios.
Desactivar Font Awesome doNotLoadFontAwesome Evita que el SDK cargue Font Awesome desde el CDN. Úsalo si tu sitio web tiene su propio Font Awesome.
Habilitar la autenticación SDK enableSdkAuthentication Habilita la autenticación del SDK.
Habilitar el registro del SDK Web enableLogging Habilita el registro de la consola para la depuración. Eliminar antes de la producción del producto.
Intervalo mínimo entre mensajes desencadenados minimumIntervalBetweenTriggerActionsInSeconds Segundos mínimos entre acciones desencadenantes (predeterminado: 30).
Abrir tarjetas en una nueva pestaña 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.
Ubicación del prestador de servicios serviceWorkerLocation Ruta personalizada para el archivo del prestador de servicios (predeterminado: /service-worker.js).
Tiempo de espera de la sesión (segundos) sessionTimeoutInSeconds Tiempo de espera de la sesión en segundos (predeterminado: 1800).

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: Configurar para desencadenar 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.

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 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, ahora se debe definir la biblioteca window.brazeglobal.

Filtrado del tráfico de bots

Los MAU pueden incluir un porcentaje de usuarios bot, lo que infla tu recuento de usuarios activos al mes. 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 identidad del usuario: Los bots sofisticados pueden imitar a 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

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:

Requiere 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.

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:

1
2
3
4
5
6
7
8
// 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 usuarios activos mensuales (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 para filtrar 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. También puedes habilitar el registro básico o personalizado. Para obtener un resumen centralizado de todas las plataformas, consulta Registro detallado.

Registro básico

UtilizaenableLogging para registrar mensajes básicos de depuración en la consola de JavaScript antes de que se inicialice el SDK.

1
enableLogging: true

Tu método debe ser similar al siguiente

1
2
3
4
5
braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
    enableLogging: true
});
braze.openSession();

Utilizabraze.toggleLogging() para registrar mensajes básicos de depuración en la consola JavaScript después de inicializar el SDK. Tu método debe ser similar al siguiente

1
2
3
4
5
6
braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

Registro personalizado

UtilizasetLogger 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.

1
setLogger(loggerFunction: (message: STRING) => void): void

Sustituye STRING por tu mensaje como parámetro de una sola cadena. Tu método debe ser similar al siguiente

1
2
3
4
5
braze.initialize('API-KEY');
braze.setLogger(function(message) {
    console.log("Braze Custom Logger: " + message);
});
braze.openSession();

Actualizar el SDK

Cuando haces referencia al SDK web de Braze desde nuestra red de entrega de contenidos, por ejemplo,https://js.appboycdn.com/web-sdk/a.a/braze.min.js (tal y como recomiendan nuestras instrucciones de integración predeterminadas), tus usuarios reciben actualizaciones menores (correcciones de errores y características compatibles con versiones anteriores, versionesa.a.a hastaa.a.z en los ejemplos anteriores) automáticamente cuando actualizan tu sitio.

Sin embargo, cuando lanzamos cambios importantes, es necesario que actualices manualmente el SDK Web de Braze para garantizar que los cambios significativos no afecten a tu integración. Además, si descargas nuestro SDK y lo alojas tú mismo, no recibirás ninguna actualización de versión automáticamente y deberás actualizarlo manualmente para disfrutar de las últimas características y correcciones de errores.

Puedes mantenerte al día de nuestra última versión siguiendo nuestra fuente de versiones con el lector RSS o el servicio que prefieras, y consultar nuestro registro de cambios para conocer el historial completo de versiones de nuestro SDK para la Web. Para actualizar el SDK Web de Braze:

  • Actualiza la versión de la biblioteca 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 administrador de paquetes.
  • Si tienes integrado el push web, actualiza el archivo del prestador de servicios en tu sitio: por defecto, se encuentra en /service-worker.js, en 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 que funcionen correctamente.

Otros métodos de integración

Páginas móviles aceleradas (AMP)

See more

Paso 1: Incluir script de notificación push web AMP

Añade la siguiente etiqueta de script asíncrono a tu cabecera:

1
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>

Paso 2: Añadir 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 las notificaciones push.

1
2
3
4
5
6
7
8
9
<!-- 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ñadirhelper-iframe y permission-dialog

El componente AMP de notificación push web 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: Crear un archivo de prestador de servicios

Crea unservice-worker.jsarchivo en el directorio raíz de tu sitio web y añade el siguiente fragmento de código:

Paso 5: Configurar el elemento HTML de notificación push web de AMP

Añade el siguiente elementoamp-web-push HTML al cuerpo de tu HTML. Ten en cuenta que debes añadir ybaseUrlapiKey como parámetros de consulta a service-worker-URL.

1
2
3
4
5
6
7
<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ódulo asíncrono (AMD)

Desactivar soporte técnico

Si tu sitio utiliza RequireJS u otro cargador de módulos AMD, pero prefieres cargar el SDK Web de Braze a través de una de las otras opciones de esta lista, puedes cargar una versión de la biblioteca que no incluya compatibilidad con AMD. Esta versión de la biblioteca puede cargarse desde la siguiente ubicación CDN:

Cargador de módulos

Si utilizas RequireJS u otros cargadores de módulos AMD, te recomendamos que autoalojes una copia de nuestra biblioteca y la referencies como harías con otros recursos:

1
2
3
4
5
6
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();
});

Electrón

Electron no admite oficialmente notificaciones push web (consulta esta incidencia de GitHub). Hay otras soluciones de código abierto que puedes probar y que no han sido probadas por Braze.

Marco Jest

Al utilizar Jest, es posible que aparezca un error similar a SyntaxError: Unexpected token 'export'. Para solucionarlo, ajusta tu configuración en package.json para ignorar el SDK de Braze:

1
2
3
4
5
"jest": {
  "transformIgnorePatterns": [
    "/node_modules/(?!@braze)"
  ]
}

Marcos SSR

Si utilizas un marco de trabajo de renderizado del lado del servidor (SSR), como Next.js, es posible que encuentres errores, ya que el SDK está diseñado para ejecutarse en un entorno de navegador. Puedes resolver estos problemas importando dinámicamente el SDK.

Puedes conservar las ventajas de la arborescencia al hacerlo exportando las partes del SDK que necesites en un archivo aparte y luego importando dinámicamente ese archivo en tu componente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// MyComponent/braze-exports.js
// export the parts of the SDK you need here
export { initialize, openSession } from "@braze/web-sdk";

// MyComponent/MyComponent.js
// import the functions you need from the braze exports file
useEffect(() => {
    import("./braze-exports.js").then(({ initialize, openSession }) => {
        initialize("YOUR-API-KEY-HERE", {
            baseUrl: "YOUR-SDK-ENDPOINT",
            enableLogging: true,
        });
        openSession();
    });
}, []);

Alternativamente, si utilizas webpack para empaquetar tu aplicación, puedes aprovechar sus comentarios mágicos para importar dinámicamente sólo las partes del SDK que necesites.

1
2
3
4
5
6
7
8
9
10
11
12
13
// 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();
    });
}, []);

Tealium iQ

Tealium iQ ofrece una integración básica de Braze llave en mano. Para configurar la integración, busca Braze en la interfaz de gestión de etiquetas de Tealium y proporciona la clave de API de SDK Web desde tu panel.

Para obtener más detalles o asistencia detallada sobre la configuración de Tealium, consulta nuestra documentación sobre integración o ponte en contacto con tu director de cuentas de Tealium.

Vite

Si utilizas Vite y ves una advertencia sobre dependencias circulares o Uncaught TypeError: Class extends value undefined is not a constructor or null, puede que necesites excluir el SDK de Braze de su descubrimiento de dependencias:

1
2
3
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. Ponte en contacto con 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 el nivel superior build.gradle), añademavenCentral() a tu lista de repositorios. Esta sintaxis es la misma tanto para Groovy como para Kotlin DSL.

1
2
3
repositories {
  mavenCentral()
}

A continuación, añade Braze a tus dependencias. En los siguientes ejemplos, sustituyeSDK_VERSION por la versión actual de tu SDK de Android Braze. Para ver la lista completa de versiones, consulta los registros de cambios.

Si no tienes pensado utilizar los componentes de la interfaz de usuario de Braze, añade lo siguiente a tus dependencias.

1
2
3
4
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.
}
1
2
3
4
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 tugradle/libs.versions.tomlarchivo:

1
2
3
4
5
6
[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" }

A continuación, en tu build.gradlearchivo build.gradle.ktso , añade las siguientes dependencias. Esta sintaxis es la misma tanto para Groovy como para Kotlin DSL.

1
2
3
4
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 pensado utilizar componentes de la interfaz de usuario de Braze, añade lo siguiente a tus dependencias.

1
2
3
4
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.
}
1
2
3
4
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 tugradle/libs.versions.tomlarchivo:

1
2
3
4
5
6
[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" }

A continuación, en tu build.gradlearchivo build.gradle.ktso , añade las siguientes dependencias. Esta sintaxis es la misma tanto para Groovy como para Kotlin DSL.

1
2
3
4
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

Crea unbraze.xmlarchivo en la carpetares/values de tu proyecto. Si estás en un clúster de datos específico o tienes un punto final personalizado preexistente, tienes que especificar también el punto final en tu archivo braze.xml.

El contenido de ese archivo debe 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 la dirección de tu clúster.

1
2
3
4
5
<?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ñadir permisos a AndroidManifest.xml

A continuación, añade los siguientes permisos a tu AndroidManifest.xml:

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Paso 4: Habilitar la inicialización diferida (opcional)

Para utilizar la inicialización diferida, se requiere la versión mínima del SDK de Braze:

Paso 4.1: Actualiza tu braze.xml

La inicialización diferida está desactivada de forma predeterminada. Para habilitarlo, utiliza una de las siguientes opciones:

En el archivobraze.xml de tu proyecto, establececom_braze_enable_delayed_initialization en true.

1
<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.

1
Braze.enableDelayedInitialization(context);
1
Braze.enableDelayedInitialization(context)

Paso 4.2: Configura el 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 o descartar explícitamente los análisis push.

Cola explícita

Para poner explícitamente en cola los análisis push, elige una de las siguientes opciones:

En tubraze.xmlarchivo, establececom_braze_delayed_initialization_analytics_behaviorcomo QUEUE:

1
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>

AñadeQUEUE a tuBraze.enableDelayedInitialization() método:

1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
Soltar

Para eliminar los análisis push, elige una de las siguientes opciones:

En tubraze.xmlarchivo, establececom_braze_delayed_initialization_analytics_behaviorcomo DROP:

1
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>

AñadeDROP alBraze.enableDelayedInitialization() método:

1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)

Paso 4.3: Inicializa manualmente el SDK.

Tras el periodo de retraso elegido, utiliza elBraze.disableDelayedInitialization()método para inicializar manualmente el SDK.

1
Braze.disableDelayedInitialization(context);
1
Braze.disableDelayedInitialization(context)

Paso 5: Habilitar el seguimiento de sesiones de usuario

Cuando habilitas el seguimiento de sesiones de usuario, las llamadas a openSession(), closeSession(),ensureSubscribedToInAppMessageEvents(), yInAppMessageManager registro se pueden gestionar automáticamente.

Para el registro de las devoluciones de llamada del ciclo de vida de la actividad, añade el siguiente código alonCreate()método de tuApplicationclase.

1
2
3
4
5
6
7
public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
  }
}
1
2
3
4
5
6
class MyApplication : Application() {
  override fun onCreate() {
    super.onCreate()
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
  }
}

Para ver la lista de parámetros disponibles, consulta BrazeActivityLifecycleCallbackListener.

Probar el seguimiento de la sesión

Si experimentas problemas durante las pruebas, habilita el registro detallado y, a continuación, utiliza logcat para detectar llamadas closeSessiony queopenSession faltan en tus actividades.

  1. En Braze, ve a «Resumen», selecciona tu aplicación y, a continuación, en el menú desplegable «Display Data For» (Mostrar datos para), selecciona «Today» (Hoy). La página «Resumen» de Braze, con el campo «Mostrar datos para» configurado en «Hoy».
  2. Abre tu aplicación y actualiza el panel de Braze. Comprueba que tus métricas hayan aumentado en 1.
  3. Navega por tu aplicación y comprueba que solo se ha registrado una sesión en Braze.
  4. Envía la aplicación al segundo plano durante al menos 10 segundos y, a continuación, vuelve a ponerla en primer plano. Verifica que se haya registrado una nueva sesión.

Configuraciones opcionales

Configuración de tiempo de ejecución

Para configurar las opciones de Braze en el código en lugar de enbraze.xmlel archivo, utiliza la configuración en tiempo de ejecución. Si existe un valor en ambos lugares, se utilizará el valor de tiempo de ejecución. Una vez que se haya proporcionado toda la configuración necesaria en tiempo de ejecución, puedes eliminar tubraze.xml archivo.

En el siguiente ejemplo, se crea un objeto constructor y luego se pasa a Braze.configure(). Nota: solo se muestran algunas de las opciones de tiempo de ejecución disponibles; consulta nuestro KDoc para ver la lista completa.

1
2
3
4
5
6
7
8
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);
1
2
3
4
5
6
7
8
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 identificador opcional específico del usuario, anónimo, único y restablecible para fines publicitarios, proporcionado por los servicios de Google Play. GAID ofrece a los usuarios la posibilidad de restablecer su identificador, excluirse voluntariamente de los anuncios basados en intereses dentro de las aplicaciones de Google Play, y proporciona a los desarrolladores un sistema sencillo y estándar para seguir monetizando sus aplicaciones.

El SDK de Braze no recopila automáticamente el ID de publicidad de Google, por lo que debe establecerse manualmente mediante el método Braze.setGoogleAdvertisingId().

1
2
3
4
5
6
7
8
9
10
11
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();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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()
    }
  }
}

Seguimiento de la ubicación

Para habilitar la recopilación de ubicación de Braze, configuracom_braze_enable_location_collection entrue en tubraze.xmlarchivo:

1
<bool name="com_braze_enable_location_collection">true</bool>

Registro

De manera predeterminada, el nivel de registro del SDK de Braze para Android está predeterminado en INFO. Puedes suprimir estos registros o establecer un nivel de registro diferente, como VERBOSE, DEBUG, o WARN.

Habilitar registros

Para ayudar con la solución de problemas en tu aplicación o reducir los tiempos de respuesta con el soporte de Braze, puedes habilitar los registros detallados para el SDK. Cuando envíes registros detallados al soporte de Braze, asegúrate de que empiezan en cuanto inicias la aplicación y terminan mucho después de que se produzca el problema. Para obtener un resumen centralizado, consulta Registro detallado. Para aprender a interpretar la salida del registro, consulta Lectura de registros detallados.

Ten en cuenta que los registros detallados sólo están pensados para tu entorno de desarrollo, por lo que deberás desactivarlos antes de publicar tu aplicación.

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.

1
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
1
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL

Sustituye MIN_LOG_LEVEL por la Constante del nivel de registro que quieras establecer como nivel mínimo de registro. Cualquier registro en un nivel >= a tu configuración MIN_LOG_LEVEL se reenviará al método predeterminado de Android Log. Se descartará cualquier registro < de tu configuración MIN_LOG_LEVEL.

Por ejemplo, el siguiente código reenviará los niveles de registro 2, 3, 4, 5, 6 y 7 al método Log.

1
BrazeLogger.setLogLevel(Log.VERBOSE);
1
BrazeLogger.logLevel = Log.VERBOSE

Para habilitar los registros en braze.xml, añade lo siguiente a tu archivo:

1
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>

Sustituye MIN_LOG_LEVEL por el valor del nivel de registro que quieras establecer como nivel de registro mínimo. Cualquier registro en un nivel >= a tu configuración MIN_LOG_LEVEL se reenviará al método predeterminado de Android Log. Se descartará cualquier registro < de tu configuración MIN_LOG_LEVEL.

Por ejemplo, el siguiente código reenviará los niveles de registro 2, 3, 4, 5, 6 y 7 al método Log.

1
<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 lo hace, es que se han habilitado correctamente los registros detallados. Por ejemplo:

1
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 Braze para Android, establece el nivel de registro enBrazeLogger.SUPPRESS en el métodoonCreate() de tu aplicación antes que cualquier otro método.

1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
1
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 de lanzamiento.

Para cambiar fácilmente entre varias claves de API en tus construcciones, te recomendamos que crees un archivo braze.xml distinto para cada variante de construcción relevante. Una variante de fabricación es una combinación del tipo de fabricación y la variante de producto. De forma predeterminada, los nuevos proyectos de Android se configuran con los tipos de debugcompilaciónrelease y y sin variantes de producto.

Para cada variante de compilación relevante, crea un nuevobraze.xml en elsrc/<build variant name>/res/values/directorio . Cuando se compile la variante de compilación, utilizará la nueva clave de API.

1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>

Mensaje exclusivo dentro de la aplicación TalkBack

En cumplimiento de las directrices de accesibilidad de Android, el SDK de Braze para Android ofrece Android Talkback de forma predeterminada. Para garantizar 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 de TalkBack.

Para habilitar el modo exclusivo para los mensajes dentro de la aplicación:

1
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
1
2
3
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());

R8 y ProGuard

La configuración de la reducción de código se incluye automáticamente con tu integración Braze.

Las aplicaciones cliente que ofuscan el código Braze deben almacenar archivos de mapeado de liberación para que Braze pueda interpretar las trazas de pila. Si quieres seguir conservando todo el código Braze, añade lo siguiente a tu archivo ProGuard:

1
2
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }

Integración del SDK de Swift

Puedes integrar y personalizar el SDK de Braze Swift utilizando Swift Package Manager (SPM), CocoaPods o métodos de integración manuales. Para obtener más información sobre los distintos símbolos del SDK, consulta la documentación de referencia de Braze SWIFT.

Requisitos previos

Antes de empezar, comprueba que tu entorno es compatible con la última versión del SDK de Braze SWIFT.

Paso 1: Instala el SDK de Braze SWIFT.

Recomendamos utilizar Swift Package Manager (SwiftPM) o CocoaPods para instalar el SDK de Braze Swift. También puedes instalar el SDK manualmente.

Paso 1.1: Importar versión del SDK

Abre tu proyecto y ve a la configuración del mismo. Selecciona la pestaña Paquetes Swift y haz clic en el botón añadir debajo de la lista de paquetes.

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 Regla de dependencia, selecciona la versión del SDK. Por último, haz clic en Añadir paquete.

Paso 1.2: Selecciona tus paquetes

El SDK de Swift de Braze separa las características en bibliotecas independientes para proporcionar a los desarrolladores un mayor control sobre qué características importar a 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 el análisis de la ubicación y la supervisión del geovallado.
BrazeUI Biblioteca de interfaz de usuario proporcionada por Braze para mensajes dentro de la aplicación, tarjetas de contenido y banners. Importa esta biblioteca si deseas utilizar los componentes predeterminados de la interfaz de usuario.
Acerca de las bibliotecas de extensión
Paquete Detalles
BrazeNotificationService Biblioteca de extensión de servicios de notificación que proporciona soporte para notificaciones push enriquecidas.
BrazePushStory Biblioteca de extensión de contenido de notificaciones que ofrece soporte para historias push.

Selecciona el paquete que mejor se adapte a tus necesidades y haz clic en Añadir paquete. Asegúrate de seleccionar BrazeKit como mínimo.

Paso 1.1: Instalar CocoaPods

Para obtener una guía completa, consulta la Guía de introducción de CocoaPods. De lo contrario, puedes ejecutar el siguiente comando para empezar rápidamente:

1
$ sudo gem install cocoapods

Si te quedas atascado, consulta la Guía de solución de problemas de CocoaPods.

Paso 1.2: Construir el archivo de bibliotecas

A continuación, crea un archivo en el directorio de tu proyecto Xcode con el nombre Podfile.

Añade la siguiente línea a tu archivo de bibliotecas:

1
2
3
target 'YourAppTarget' do
  pod 'BrazeKit'
end

BrazeKit contiene la biblioteca principal del SDK, que proporciona soporte para análisis y notificaciones push.

Te sugerimos que versiones Braze para que las actualizaciones de vainas cojan automáticamente cualquier cosa menor que una actualización de versión menor. Esto parece pod 'BrazeKit' ~> Major.Minor.Build. Si quieres integrar automáticamente la última versión del SDK de Braze, incluso con cambios importantes, puedes utilizar pod 'BrazeKit' en tu archivo de bibliotecas.

Acerca de bibliotecas adicionales

El SDK de Swift de Braze separa las características en bibliotecas independientes para proporcionar a los desarrolladores un mayor control sobre qué características importar a sus proyectos. Además de BrazeKit, puedes añadir las siguientes bibliotecas a tu archivo de bibliotecas:

Biblioteca Detalles
pod 'BrazeLocation' Biblioteca de ubicación que proporciona soporte para el análisis de la ubicación y la supervisión del geovallado.
pod 'BrazeUI' Biblioteca de interfaz de usuario proporcionada por Braze para mensajes dentro de la aplicación, tarjetas de contenido y banners. Importa esta biblioteca si deseas utilizar los componentes predeterminados de la interfaz de usuario.
Bibliotecas de extensión

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, tendrás que crear objetivos de extensión independientes para cada uno de estos módulos e importar los módulos Braze en sus objetivos correspondientes.

Biblioteca Detalles
pod 'BrazeNotificationService' Biblioteca de extensión de servicios de notificación que proporciona soporte para notificaciones push enriquecidas.
pod 'BrazePushStory' Biblioteca de extensión de contenido de notificaciones que ofrece soporte para historias push.

Paso 1.3: Instalar el SDK

Para instalar el SDK de Braze CocoaPod, navega hasta el directorio del proyecto de tu aplicación en Xcode dentro de tu terminal y ejecuta el siguiente comando:

1
pod install

En este punto, deberías poder abrir el nuevo espacio de trabajo del proyecto Xcode creado por CocoaPods. Asegúrate de utilizar este espacio de trabajo de Xcode en lugar de tu proyecto de Xcode.

Una carpeta de ejemplo de Braze expandida para mostrar el nuevo «BrazeExample.workspace.

Actualización del SDK mediante CocoaPods

Para actualizar un CocoaPod, simplemente ejecuta el siguiente comando dentro del directorio de tu proyecto:

1
pod update

Paso 1.1: Descargar el SDK de Braze

Ve a la página de lanzamiento del SDK de Braze en GitHub y descarga braze-swift-sdk-prebuilt.zip.

Página de lanzamiento del SDK de Braze en GitHub.

Paso 1.2: Elige tus marcos

El SDK Swift de Braze contiene diversos XCFrameworks independientes, lo que te da libertad para integrar las características que desees, sin necesidad de integrarlos todos. Consulta la tabla siguiente para elegir tus XCFrameworks:

Paquete ¿Es necesario? Descripción
BrazeKit 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 control de geovallas.
BrazeUI No Biblioteca de interfaz de usuario proporcionada por Braze para mensajes dentro de la aplicación, tarjetas de contenido y banners. Importa esta biblioteca si deseas utilizar los componentes predeterminados de la interfaz de usuario.
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, añade en su lugar la biblioteca BrazeNotificationService por separado.
BrazePushStory No Biblioteca de extensión de contenido de notificaciones que proporciona soporte para historias push. No añadas esta biblioteca directamente al objetivo principal de tu aplicación, añade en su lugar la biblioteca BrazePushStory por separado.
BrazeKitCompat No Biblioteca de compatibilidad que contiene todas las clases y métodos de Appboy y ABK* que estaban disponibles en la versión 4 de Appboy-iOS-SDK.X.X. Para conocer los 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 de ABK* que estaban disponibles en la biblioteca AppboyUI a partir de la versión 4 de Appboy-iOS-SDK.X.X. Para conocer los detalles de uso, consulta el escenario de migración mínima en la guía de migración.
SDWebImage No Dependencia utilizada sólo por BrazeUICompat en el escenario de migración mínima.

Decide si quieres utilizar XCFrameworks estáticos o dinámicos, y luego prepara tus archivos:

  1. Crea un directorio temporal para tus XCFrameworks.
  2. En braze-swift-sdk-prebuilt, abre el directorio dynamic y mueve BrazeKit.xcframework a tu directorio. Tu directorio debe ser similar al siguiente
    1
    2
    
     temp_dir
     └── BrazeKit.xcframework
    
  3. Mueve cada uno de los XCFrameworks que hayas elegido a tu directorio temporal. Tu directorio debe ser similar al siguiente
    1
    2
    3
    4
    5
    
     temp_dir
     ├── BrazeKit.xcframework
     ├── BrazeKitCompat.xcframework
     ├── BrazeLocation.xcframework
     └── SDWebImage.xcframework
    

Paso 1.4: Integra tus marcos de trabajo

A continuación, integra los XCFrameworks dinámicos o estáticos que preparaste anteriormente:

En tu proyecto Xcode, selecciona tu objetivo de compilación y, a continuación, General. En Frameworks, Bibliotecas y Contenido incrustado, arrastra y suelta los archivos que preparaste anteriormente.

Un ejemplo de proyecto Xcode con cada biblioteca Braze configurada en «Embed&Sign».

Errores comunes de los proyectos Objective-C

Si tu proyecto Xcode sólo contiene archivos Objective-C, es posible que aparezcan errores de “símbolo ausente” cuando intentes compilar tu proyecto. Para solucionar estos errores, abre tu proyecto y añade un archivo Swift vacío a tu árbol de archivos. Esto forzará a tu cadena de herramientas de compilación a incrustar Swift Runtime y enlazar con los frameworks apropiados durante el tiempo de compilación.

1
FILE_NAME.swift

Sustituye FILE_NAME por cualquier cadena no espaciada. Tu archivo debe tener un aspecto similar al siguiente

1
empty_swift_file.swift

Paso 2: Configurar la inicialización diferida (opcional)

Puedes optar por retrasar la inicialización del SDK de Braze SWIFT, lo cual resulta ú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 garantiza que las notificaciones push y los tokens de notificaciones push de Braze recibidos antes de la inicialización del SDK se pongan en cola y se procesen una vez que se haya inicializado el SDK.

Para utilizar la inicialización diferida, se requiere la versión mínima del SDK de Braze:

Paso 2.1: Prepárate para una inicialización retrasada.

LlamaBraze.prepareForDelayedInitialization()lo antes posible en el ciclo de vida de tu aplicación, idealmente en o antes de application(_:didFinishLaunchingWithOptions:). Esto garantiza que las notificaciones push recibidas antes de que se inicialice el SDK se capturen y procesen correctamente más tarde.

1
2
3
4
5
6
7
8
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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@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
  }
}
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Prepare the SDK for delayed initialization
  [Braze prepareForDelayedInitialization];
  
  // ... Additional non-Braze setup code

  return YES;
}

Cuando se utiliza la inicialización diferida, la automatización de las notificaciones push se habilita de forma implícita. Puedes personalizar la configuración de la automatización push pasando unpushAutomationparámetro.

Paso 2.2: Configura el comportamiento de 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 o descartar explícitamente los análisis push.

Cola explícita

Para poner explícitamente en cola los análisis push (comportamiento predeterminado), pasa.queue alanalyticsBehaviorparámetro . Los eventos de análisis push que estén en cola antes de la inicialización se procesarán y se enviarán al servidor tras la inicialización.

1
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
Soltar

Para descartar los análisis push recibidos antes de la inicialización del SDK, pasa.drop alanalyticsBehaviorparámetro . Con esta opción, cualquier evento de análisis push que se produzca mientras el SDK no esté inicializado será ignorado.

1
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];

Paso 2.3: Personalizar la automatización de notificaciones push (opcional)

Puedes personalizar la configuración de la automatización push pasando unpushAutomationparámetro. De forma predeterminada, todas las características de automatización están habilitadas excepto requestAuthorizationAtLaunch.

1
2
3
4
5
6
7
8
// 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)
1
2
3
4
5
6
7
8
// 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: Inicializar el SDK

Tras el periodo de retraso elegido (por ejemplo, después de obtener la configuración de un servidor o tras el consentimiento del usuario), inicializa el SDK como de costumbre:

1
2
3
4
5
6
7
8
9
10
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
}
1
2
3
4
5
6
7
8
9
10
- (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;
}

Paso 3: Actualiza el delegado de tu aplicación

Añade la siguiente línea de código a tu archivo AppDelegate.swift para importar las características incluidas en el SDK de Swift de Braze:

1
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 de tu aplicación:

1
2
3
class AppDelegate: UIResponder, UIApplicationDelegate {
  static var braze: Braze? = nil
}

Por último, en AppDelegate.swift, añade el siguiente fragmento de código a tu método application:didFinishLaunchingWithOptions::

1
2
3
4
5
6
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 desde la página de configuración de tu aplicación. Consulta nuestros tipos de identificadores de API para obtener más información sobre dónde encontrar la clave de API de tu identificador de aplicación.

Añade la siguiente línea de código a tu archivo AppDelegate.m:

1
@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 de tu aplicación:

1
2
3
4
5
6
7
8
9
10
11
static Braze *_braze;

@implementation AppDelegate
+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}
@end

Por último, dentro de tu archivo AppDelegate.m, añade el siguiente fragmento de código dentro de tu método application:didFinishLaunchingWithOptions::

1
2
3
4
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 desde tu página Administrar configuración. Consulta nuestra documentación sobre la API para obtener más información sobre dónde encontrar la clave de API del identificador de tu aplicación.

Configuraciones opcionales

Registro

Para obtener un resumen centralizado de 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 de Braze SWIFT 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 Registrar información de depuración +.info + .error.
.info BRZLoggerLevelInfo Registra la información general del SDK (cambios de usuario, etc.) + .error.
.error BRZLoggerLevelError Errores de registro.
.disabled BRZLoggerLevelDisabled No se produce ningún registro.

Puedes asignar el nivel de registro en tiempo de ejecución en tuBraze.Configurationobjeto. Para obtener información detallada sobre su uso, consulta Braze.Configuration.Logger.

1
2
3
4
5
6
7
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)
1
2
3
4
5
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 empezar, comprueba que tu entorno es compatible con la última versión del SDK de Cordova de Braze.

Paso 1: Añade el SDK a tu proyecto

Si utilizas Cordova 6 o posterior, puedes añadir el SDK directamente desde GitHub. También puedes descargar un ZIP del repositorio de GitHub y añadir el SDK manualmente.

Si no piensas utilizar la recopilación de ubicaciones ni las geovallas, utiliza la rama master de GitHub.

1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master

Si piensas utilizar la recopilación de ubicaciones y geovallas, utiliza la página geofence-branch de GitHub.

1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

Paso 2: Configura tu proyecto

A continuación, añade las siguientes preferencias al elemento platform del archivo config.xml de tu proyecto.

1
2
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
1
2
<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:

El elemento platform de tu archivo config.xml debe ser similar al siguiente:

1
2
3
4
<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>
1
2
3
4
<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 trata sobre la sintaxis específica de la plataforma cuando se utiliza Cordova con iOS o Android.

Enteros

Las preferencias de enteros se leen como representaciones de cadenas, como en el siguiente ejemplo:

1
2
3
4
<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 marco Cordova 8.0.0+ gestiona las preferencias, las preferencias de sólo números enteros (como los ID de remitente) deben establecerse en cadenas precedidas de str_, como en el siguiente ejemplo:

1
2
3
4
<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

El SDK lee las preferencias booleanas utilizando las palabras clave YES y NO como representación de cadena, como en el siguiente ejemplo:

1
2
3
4
<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>

El SDK lee las preferencias booleanas utilizando las palabras clave true y false como representación de cadena, como en el siguiente ejemplo:

1
2
3
4
<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:

A continuación se muestra un archivo config.xml de ejemplo con configuraciones adicionales:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<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 la sesión, añade la siguiente preferencia al elemento platform del archivo config.xml de tu proyecto:

1
2
3
<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 sólo se hará un seguimiento de las sesiones iniciadas después de la siguiente Activity.onStart().

Acerca del SDK de Flutter Braze

Después de integrar el SDK de Braze Flutter en Android e iOS, podrás utilizar la API de Braze en tus aplicaciones Flutter escritas en Dart. Este complemento proporciona una funcionalidad básica de análisis y te permite integrar mensajes dentro de la aplicación y Tarjetas de contenido 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 Braze Flutter, deberás completar lo siguiente:

Paso 1: Integrar la biblioteca de Braze

Añade el paquete del SDK de Braze Flutter desde la línea de comandos. Esto añadirá la línea correspondiente a tu pubspec.yaml.

1
flutter pub add braze_plugin

Paso 2: Completar la configuración del SDK nativo

2.1 Configurar 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 punto final 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:

1
2
3
4
5
<?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:

1
2
3
4
5
6
7
8
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:

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.2 Configurar iOS

Dentro de tu método application(_:didFinishLaunchingWithOptions:) existente, añade una llamada a BrazePlugin.configure(_:postInitialization:) para almacenar tu configuración. La instancia de Braze se crea más tarde cuando se llama a initialize() desde Dart. La clave de API y el punto final no se configuran aquí.

Añade el siguiente código a tu AppDelegate.swift:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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;
}

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 punto final por tus valores:

1
2
3
4
5
<?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:

1
2
<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:

1
2
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 punto final 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 AppDelegate para facilitar el acceso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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:

1
2
@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 punto final 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 AppDelegate para facilitar el acceso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (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 complemento

Importa el complemento y crea una única instancia de BrazePlugin:

1
2
3
import 'package:braze_plugin/braze_plugin.dart';

final BrazePlugin braze = BrazePlugin();

Luego llama a initialize() con tu clave de API del identificador de aplicación y el punto final de SDK para crear la instancia de Braze. Consulta las opciones a continuación para saber dónde llamar a este método en tu aplicación.

Inicialización estándar

Para inicializar el SDK cuando tu aplicación se inicia, llama a initialize() en initState():

1
2
3
4
5
@override
void initState() {
  super.initState();
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

Inicialización diferida

Para aplazar la inicialización del SDK hasta un momento 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:

1
2
3
4
// ...
void onUserConsent() {
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

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:

1
2
3
4
5
6
7
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 punto final diferentes durante la sesión. Cada llamada destruye la instancia de Braze anterior y crea una nueva.

Para importar el complemento en tu código Dart, utiliza lo siguiente:

1
import 'package:braze_plugin/braze_plugin.dart';

A continuación, inicializa una instancia del complemento de Braze llamando a new BrazePlugin() como en nuestra aplicación de ejemplo.

Probar la integración

Puedes verificar que el SDK está integrado comprobando las estadísticas de sesión en el dashboard. Si ejecutas tu aplicación en cualquiera de las dos plataformas, deberías ver una nueva sesión en el dashboard (en la sección Resumen).

Abre una sesión para un usuario concreto llamando al siguiente código en tu aplicación.

1
2
3
BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");

Busca al usuario con {some-user-id} en el dashboard, en Audiencia > Buscar usuarios. Allí podrás comprobar que se han registrado los datos de sesión y de dispositivo.

Acerca del SDK de Braze para React Native

La integración del SDK de React Native Braze proporciona funciones básicas de análisis y te permite integrar mensajes dentro de la aplicación y tarjetas de contenido tanto para iOS como para Android con un solo código base.

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 módulo React Native Turbo, que es compatible tanto con la nueva arquitectura como con la arquitectura puente heredada, lo que significa que no se requiere ninguna configuración adicional.

Integración del SDK de React Native

Requisitos previos

Para la integración del SDK, se requiere React Native versión 0.71 o posterior. Para ver la lista completa de versiones compatibles, consulta nuestro repositorio GitHub del SDK para React Native.

Paso 1: Integrar la biblioteca Braze

1
npm install @braze/react-native-sdk
1
yarn add @braze/react-native-sdk

Paso 2: Elige una opción de configuración

Puedes administrar el SDK de Braze utilizando el complemento Braze Expo o a través de una de las capas nativas. Con el complemento Expo, puedes configurar ciertas características del SDK sin necesidad de escribir código en ninguna de las capas nativas. Elige la opción que mejor se adapte a las necesidades de tu aplicación.

Paso 2.1: Instala el plugin Braze Expo

Asegúrate de que tu SDK de React Native de Braze sea de la versión 1.37.0 en adelante. Para ver la lista completa de versiones compatibles, consulta el repositorio de Braze React Native.

Para instalar el complemento Braze Expo, ejecuta el siguiente comando:

1
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 Braze Expo. Puedes proporcionar las siguientes opciones de configuración:

Ejemplo de configuración:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  "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 los iconos de notificaciones push en Android

Cuando utilicesandroidNotificationLargeIcon y androidNotificationSmallIcon, sigue estas prácticas recomendadas para que los iconos se muestren correctamente:

Ubicación y formato de los iconos

Para utilizar iconos de notificaciones push personalizados con el complemento Braze Expo:

  1. Crea tus archivos de iconos siguiendo los requisitos de Android que se detallan en Requisitos de los iconos.
  2. Colócalos en los directorios nativos de Android de tu proyecto enandroid/app/src/main/res/drawable-<density>/ (por ejemplo, android/app/src/main/res/drawable-mdpi/, drawable-hdpi/, o similar).
  3. Como alternativa, si administras activos en tu directorio React Native, puedes utilizar la configuración deapp.jsoniconos de Expo o crear un complemento de configuración de Expo para copiar los iconos a las carpetas de dibujos de Android durante la precompilación.

El complemento Braze Expo hace referencia a estos iconos utilizando el sistema de recursos dibujables de Android.

Requisitos de los iconos
  • Icono pequeño: Debe ser una silueta blanca sobre un fondo transparente (este es un requisito de la plataforma Android).
  • Icono grande: Puede ser una imagen a todo color.
  • Formato: Se recomienda el formato PNG.
  • Denominación: Utiliza solo letras minúsculas, números y guiones bajos (por ejemplo, my_large_icon.png)
Configuración en app.json

Utiliza el@drawable/prefijo seguido del nombre del archivo sin la extensión. Por ejemplo, si tu archivo de icono se llama large_icon.png, haz referencia a él como @drawable/large_icon:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidNotificationLargeIcon": "@drawable/large_icon",
          "androidNotificationSmallIcon": "@drawable/small_icon"
        }
      ]
    ]
  }
}
Cómo funciona

El complemento Braze Expo hace referencia a tus archivos de iconos desde los directorios drawablede Android. Cuando ejecutas npx expo prebuild, Expo genera la estructura nativa del proyecto Android. Tus iconos deben estar presentes en las carpetas dedrawable Android (ya sea colocados manualmente o copiados a través de un complemento de configuración) antes del proceso de compilación. A continuación, el complemento configura el SDK de Braze para utilizar estos recursos dibujables por sus nombres (sin ruta ni extensión), por lo que es necesario incluir el@drawable/prefijo en tu configuración.

Para obtener más información sobre los iconos de notificación de Android, consulta las directrices sobre iconos de notificación de Android.

Paso 2.3: Construye y ejecuta tu aplicación

La precompilación de tu aplicación genera los archivos nativos necesarios para que el complemento Braze Expo funcione.

1
npx expo prebuild

Ejecuta tu aplicación como se especifica en los documentos de la Expo. Ten en cuenta que, si realizas algún cambio en las opciones de configuración, tendrás que volver a compilar y ejecutar la aplicación.

Paso 2.1: Añade nuestro repositorio

En tu proyecto de nivel superior build.gradle, añade lo siguiente en buildscript > dependencies:

1
2
3
4
5
6
7
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: Configurar el SDK de Braze

Para conectarte a los servidores de Braze, crea un archivo braze.xml en la carpeta res/values de tu proyecto. Pega el siguiente código y sustituye la clave de API y el punto final por tus valores:

1
2
3
4
5
<?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>

Añade los permisos necesarios a tu archivo AndroidManifest.xml:

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Paso 2.3: Implementar el seguimiento de la sesión del usuario

Las llamadas a openSession() y closeSession() se gestionan automáticamente. Añade el siguiente código al método onCreate() de tu clase MainApplication:

1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;

@Override
public void onCreate() {
    super.onCreate();
    ...
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener

override fun onCreate() {
    super.onCreate()
    ...
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}

Paso 2.4: Maneja las actualizaciones de intención

Si tu MainActivity tiene android:launchMode configurado en singleTask, añade el siguiente código a tu clase MainActivity:

1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}

Paso 2.1: (Opcional) Configurar archivo de bibliotecas para XCFrameworks dinámicos

Para importar determinadas bibliotecas de Braze, como BrazeUI, a un archivo Objective-C++, debes utilizar la#importsintaxis . 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 quieres utilizar este canal de distribución, anula manualmente las ubicaciones de las fuentes de CocoaPods en tu archivo de bibliotecas. Consulta el ejemplo que aparece a continuación y sustituye {your-version} por la versión correspondiente que desees importar:

1
2
3
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.2: Instalar pods

Dado que React Native vincula automáticamente las bibliotecas a la plataforma nativa, puedes instalar el SDK con la ayuda de CocoaPods.

Desde la carpeta raíz del proyecto:

1
2
3
4
5
# 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.3: Configurar el SDK de Braze

Importa el SDK de Braze en la parte superior del archivo AppDelegate.swift:

1
2
import BrazeKit
import braze_react_native_sdk

En el método application(_:didFinishLaunchingWithOptions:), sustituye la clave de API y el punto final 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 la dirección AppDelegate para facilitar el acceso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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

Importa el SDK de Braze en la parte superior del archivo AppDelegate.m:

1
2
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"

En el método application:didFinishLaunchingWithOptions:, sustituye la clave de API y el punto final 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 la dirección AppDelegate para facilitar el acceso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (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: Importar la biblioteca

A continuación,importla biblioteca en tu código React Native. Para obtener más información, consulta nuestro proyecto de ejemplo.

1
import Braze from "@braze/react-native-sdk";

Paso 4: Prueba la integración (opcional)

Para probar la integración de SDK, inicia una nueva sesión en cualquiera de las dos plataformas para un usuario llamando al siguiente código en tu aplicación.

1
Braze.changeUser("userId");

Por ejemplo, puedes asignar el ID de usuario al iniciar la aplicación:

1
2
3
4
5
6
7
8
9
10
11
12
13
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 correspondientesome-user-id. Aquí puedes verificar que se hayan registrado los datos de la sesión y los datos de dispositivo.

Próximos pasos

Después de integrar el SDK de Braze, puedes empezar a implementar características de mensajería comunes:

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 Roku de Braze.

  1. Añade BrazeSDK.brs a tu aplicación en el directorio source.
  2. Añade BrazeTask.brs y BrazeTask.xml a tu aplicación en el directorio components.

Paso 2: Añadir referencias

Añade una referencia a BrazeSDK.brs en tu escena principal utilizando el siguiente elemento script:

1
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>

Paso 3: Configura

En main.brs, establece la configuración de Braze en el nodo global:

1
2
3
4
5
6
7
8
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 SDK y tu clave de API en el panel de Braze.

Paso 4: Inicializar Braze

Inicializa la instancia de Braze:

1
2
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)

Configuraciones opcionales

Registro

Para depurar tu integración Braze, puedes ver los registros de la consola de depuración de Roku para Braze. Consulta el código de depuración de los desarrolladores de Roku para obtener más información.

Acerca del SDK de Unity Braze

Para ver una lista completa de tipos, funciones, variables y demás, consulta el Archivo de Declaraciones de Unity. Además, si ya has integrado Unity manualmente para iOS, puedes cambiar a una integración automatizada.

Integración del SDK de Unity

Requisitos previos

Antes de empezar, comprueba que tu entorno es compatible con la última versión del SDK de Unity de Braze.

Paso 1: Elige tu paquete Braze Unity

El .unitypackage de Braze incluye enlaces nativos para las plataformas Android e iOS, junto con una interfaz en C#.

Hay varios paquetes de Braze Unity disponibles para su descarga en la página de versiones de Braze Unity:

  • Appboy.unitypackage
    • Este paquete incluye los SDK para Android e iOS de Braze y la dependencia SDWebImage para el SDK de iOS, que es necesaria para el correcto funcionamiento de la mensajería dentro de la aplicación de Braze y las características de las tarjetas de contenido en iOS. El framework SDWebImage se utiliza para descargar y mostrar imágenes, incluidos los GIF. Si pretendes utilizar todas las funciones de Braze, descarga e importa este paquete.
  • Appboy-nodeps.unitypackage
    • Este paquete es similar a Appboy.unitypackage, salvo que no está presente el marco SDWebImage. Este paquete es útil si no quieres que el framework SDWebImage esté presente en tu aplicación iOS.

El .unitypackage de Braze incluye enlaces nativos para las plataformas Android e iOS, junto con una interfaz en C#.

El paquete Braze Unity está disponible para su descarga en la página de versiones de Braze Unity con dos opciones de integración:

  1. Appboy.unitypackage solo
    • Este paquete incluye los SDK de Braze para Android e iOS sin dependencias adicionales. Con este método de integración, no funcionarán correctamente las características de mensajería dentro de la aplicación de Braze ni las tarjetas de contenido en iOS. Si quieres utilizar todas las funciones de Braze sin código personalizado, utiliza la opción siguiente.
    • Para utilizar esta opción de integración, asegúrate de que la casilla junto a Import SDWebImage dependency no está marcada en la interfaz de usuario de Unity, en “Configuración de Braze”.
  2. Appboy.unitypackage con SDWebImage
    • Esta opción de integración incluye los SDK de Braze para Android e iOS y la dependencia de SDWebImage para el SDK de iOS, que es necesaria para el correcto funcionamiento de la mensajería dentro de la aplicación de Braze y las características de las tarjetas de contenido en iOS. El framework SDWebImage se utiliza para descargar y mostrar imágenes, incluidos los GIF. Si pretendes utilizar todas las funciones de Braze, descarga e importa este paquete.
    • Para importar automáticamente SDWebImage, asegúrate de marcar la casilla junto a Import SDWebImage dependency en la interfaz de usuario de Unity, en “Configuración de Braze”.

Paso 2: Importa el paquete

En el editor de Unity, importa el paquete a tu proyecto de Unity yendo a Assets (Activos) > Import Package (Importar paquete) > Custom Package (Paquete personalizado). A continuación, haz clic en Importar.

También puedes seguir las instrucciones de importación de paquetes de activos de Unity para obtener una guía más detallada sobre la importación de paquetes de Unity personalizados.

En el editor de Unity, importa el paquete a tu proyecto de Unity yendo a Assets (Activos) > Import Package (Importar paquete) > Custom Package (Paquete personalizado). A continuación, haz clic en Importar.

También puedes seguir las instrucciones de importación de paquetes de activos de Unity para obtener una guía más detallada sobre la importación de paquetes de Unity personalizados.

Paso 3: Configura el SDK

Paso 3.1: Configura AndroidManifest.xml

Cumplir AndroidManifest.xml funcionar. Si tu aplicación no tiene una dirección AndroidManifest.xml, puedes utilizar la siguiente plantilla. De lo contrario, si ya tienes un AndroidManifest.xml, asegúrate de que cualquiera de las siguientes secciones que faltan se añaden a tu AndroidManifest.xml existente.

  1. Ve al directorio Assets/Plugins/Android/ y abre tu archivo AndroidManifest.xml. Esta es la ubicación predeterminada en el editor de Unity.
  2. En tu AndroidManifest.xml, añade los permisos y actividades necesarios de la siguiente plantilla.
  3. Cuando hayas terminado, tu AndroidManifest.xml sólo debe contener una única Actividad con "android.intent.category.LAUNCHER" presente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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>

Paso 3.2: Actualiza AndroidManifest.xml con el nombre de tu paquete.

Para encontrar el nombre de tu paquete, haz clic en Archivo > Configuración de compilación > Configuración del reproductor > pestaña Android.

En tu AndroidManifest.xml, todas las instancias de REPLACE_WITH_YOUR_PACKAGE_NAME deben sustituirse por tu Package Name del paso anterior.

Paso 3.3: Añadir dependencias gradle

Para añadir dependencias gradle a tu proyecto Unity, habilita primero “Plantilla Gradle principal personalizada” en tu configuración de publicación. Esto creará un archivo gradle de plantilla que utilizará tu proyecto. Un archivo gradle se encarga de establecer las dependencias y otras configuraciones del proyecto en tiempo de compilación. Para más información, consulta el ejemplo de aplicación de Unity de Braze mainTemplate.gradle.

Se necesitan las siguientes dependencias:

1
2
3
4
5
6
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 establecer estas dependencias utilizando el Administrador de dependencias externas.

Paso 3.4: Automatización de la integración de Unity en Android

Braze proporciona una solución nativa de Unity para automatizar la integración de Unity con Android.

  1. En el editor de Unity, abre los Ajustes de configuración de Braze navegando hasta Braze > Braze Configuration (Configuración de Braze).
  2. Marca la casilla Automatizar la integración de Android en Unity.
  3. En el campo Clave de API de Braze, introduce la clave de API de tu aplicación que se encuentra en Administrar configuración desde el panel de Braze.

Paso 3.1: Configura tu clave de API

Braze proporciona una solución nativa de Unity para automatizar la integración de Unity en iOS. Esta solución modifica el proyecto creado en Xcode utilizando PostProcessBuildAttribute de Unity y subclasifica el UnityAppController utilizando la macro IMPL_APP_CONTROLLER_SUBCLASS.

  1. En el editor de Unity, abre los Ajustes de configuración de Braze navegando hasta Braze > Braze Configuration (Configuración de Braze).
  2. Marca la casilla Automatizar la integración de Unity iOS.
  3. En el campo Clave de API de Braze, introduce la clave de API de tu aplicación que se encuentra en Administrar configuración.

Si tu aplicación ya está utilizando otra subclase de UnityAppController, tendrás que fusionar la implementación de tu subclase con AppboyAppDelegate.mm.

Personalizar el paquete Unity

Paso 1: Clonar el repositorio

En tu terminal, clona el repositorio de GitHub del SDK de Unity de Braze y, a continuación, navega hasta esa carpeta:

1
2
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
1
2
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk

Paso 2: Exportar paquete desde repositorio

Primero, inicia Unity y mantenlo en ejecución en segundo plano. A continuación, en la raíz del repositorio, ejecuta el siguiente comando para exportar el paquete a braze-unity-sdk/unity-package/.

1
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
1
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit	

Paso 3: Importar paquete a Unity

  1. En Unity, importa el paquete deseado a tu proyecto Unity navegando a Activos > Importar paquete > Paquete personalizado.
  2. Si hay algún archivo que no quieres importar, desactívalo ahora.
  3. Personaliza el paquete Unity exportado ubicado en Assets/Editor/Build.cs.

Cambiar a una integración automatizada (sólo Swift)

Para aprovechar la integración automatizada de iOS que ofrece el SDK Braze Unity, sigue estos pasos para pasar de una integración manual a una automatizada.

  1. Elimina todo el código relacionado con Braze de la subclase UnityAppController de tu proyecto Xcode.
  2. Elimina las bibliotecas Braze iOS de tu proyecto Unity o Xcode (como Appboy_iOS_SDK.framework y SDWebImage.framework).
  3. Importa de nuevo el paquete Braze Unity a tu proyecto. Para un recorrido completo, consulta Paso 2: Importa el paquete.
  4. 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:

  1. Abre los ajustes de configuración de Braze navegando hasta Braze > Configuración de Braze.
  2. Haz clic en el menú desplegable Mostrar configuración de Android Braze.
  3. En el campo Nivel de registro SDK, introduce el valor “0”.

Compatibilidad con Prime 31

Para utilizar el plugin Unity de Braze con los plugins de Prime31, edita la página AndroidManifest.xml de tu proyecto para utilizar las clases de Actividad compatibles con Prime31. Cambia todas las referencias de com.braze.unity.BrazeUnityPlayerActivity a com.braze.unity.prime31compatible.BrazeUnityPlayerActivity

Mensajería de dispositivos de Amazon (ADM)

Braze soporta la integración de ADM push en aplicaciones Unity. Si quieres integrar ADM push, 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 push de ADM.

Ampliar el reproductor Braze Unity (sólo Android)

El archivo de ejemplo AndroidManifest.xml proporcionado tiene registrada una clase de Actividad, BrazeUnityPlayerActivity. Esta clase está integrada con el SDK de Braze y amplía UnityPlayerActivity con gestión de sesiones, registro de mensajes dentro de la aplicación, registro de análisis de notificaciones push y mucho más. Consulta Unity para obtener más información sobre la ampliación de la clase UnityPlayerActivity.

Si estás creando tu propio UnityPlayerActivity personalizado en un proyecto de biblioteca o de plugin, tendrás que ampliar nuestro BrazeUnityPlayerActivity para integrar tu funcionalidad personalizada con Braze. Antes de empezar a trabajar en la ampliación de BrazeUnityPlayerActivity, sigue nuestras instrucciones para integrar Braze en tu proyecto Unity.

  1. Añade el SDK para Android de Braze como dependencia a tu proyecto de biblioteca o plugin, tal y como se describe en las instrucciones de integración de SDK para Android de Braze.
  2. Integra nuestro Unity .aar, que contiene nuestra funcionalidad específica de Unity, a tu proyecto de biblioteca Android que estás construyendo para Unity. El appboy-unity.aar está disponible en nuestro repositorio público. Una vez que nuestra biblioteca Unity se haya integrado correctamente, modifica tu UnityPlayerActivity para ampliar BrazeUnityPlayerActivity.
  3. Exporta tu proyecto de biblioteca o plugin y colócalo en /<your-project>/Assets/Plugins/Android de la forma habitual. No incluyas ningún código fuente de Braze en tu biblioteca o plugin, ya que ya estarán presentes en /<your-project>/Assets/Plugins/Android.
  4. Edita tu /<your-project>/Assets/Plugins/Android/AndroidManifest.xml para especificar tu subclase BrazeUnityPlayerActivity como actividad principal.

Ahora deberías poder empaquetar un .apk desde el IDE de Unity que esté totalmente integrado con Braze y contenga tu funcionalidad personalizada de UnityPlayerActivity.

Solución de problemas

Error: “No se ha podido leer el archivo”

Los errores parecidos a los siguientes pueden ignorarse con seguridad. 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 Braze.

1
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 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 version 4.0.0, este SDK dejó de ser compatible con Xamarin &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 enlace .NET MAUI

Un enlace .NET MAUI es una forma de utilizar bibliotecas nativas en aplicaciones .NET MAUI. La implementación de una vinculación 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 la vinculación 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 elBrazePlatform.BrazeAndroidLocationBindingpaquete.

El segundo método de integración consiste en incluir la fuente vinculante. Enappboy-component/src/androidnet6 encontrarás nuestro código fuente vinculante; al añadir una referencia de proyecto alBrazeAndroidBinding.csproj en tu aplicación .NET MAUI, se creará el vínculo con tu proyecto y podrás acceder 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 a laBrazeAndroidLocationBinding.csproj que se encuentra en appboy-component/src/androidnet6/BrazeAndroidLocationBinding.

Un enlace .NET MAUI es una forma de utilizar bibliotecas nativas en aplicaciones .NET MAUI. La implementación de una vinculación consiste en crear una interfaz C# para la biblioteca y luego utilizar esa interfaz en tu aplicación. Hay dos formas de incluir la vinculación 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 pulsa Add Packages.... Busca «Braze» e instala los últimos paquetes NuGet de .NET MAUI iOS:Braze.iOS.BrazeUIBraze.iOS.BrazeKit , yBraze.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 la fuente vinculante. Enappboy-component/src/iosnet6 encontrarás nuestro código fuente de enlace; al añadir una referencia de proyecto alBrazeiOSBinding.csproj en tu aplicación .NET MAUI, el enlace se creará con tu proyecto y te dará acceso al SDK de Braze para iOS. Asegúrate de que BrazeiOSBinding.csproj aparece en la carpeta “Referencia” 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:

1
2
3
4
5
6
7
8
9
  <?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 de la vinculación, 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:

1
<uses-permission android:name="android.permission.INTERNET" />

Para ver un ejemplo de tu AndroidManifest.xml, consulta el ejemplo de aplicación 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:

1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());

Cuando configures tu instancia de Braze, añade el siguiente fragmento de código para configurar tu instancia:

1
2
3
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 del SDK básica, consulta las instrucciones de integración de Android.

Ahora puedes lanzar tu aplicación y ver las sesiones que se registran en el panel Braze. Para profundizar en las mejores prácticas para la integración del SDK básica, consulta las instrucciones de integración de iOS.

Integración de la aplicación ChatGPT

Configuración

Paso 1: Obtener el archivo de integración de Braze

Copia elbraze.jsarchivo 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:

1
npm install @braze/web-sdk

Aplicación

Hay dos formas de realizar la integración de Braze con tu aplicación ChatGPT, dependiendo de tu caso de uso:

Integración del lado del cliente (widgets personalizados)

Para mostrar mensajes de Braze y realizar el seguimiento de las interacciones de los usuarios dentro de los widgets personalizados de tu aplicación ChatGPT, utiliza la integración de SDK web. Puedes encontrar un ejemplo completo de mensajería en nuestro repositorio de muestras aquí.

Configurar los metadatos del widget

Añade los siguientes metadatos al archivo del servidor MCP para permitir los dominios de Braze, asegurándote de actualizar el dominio CDN según tu región:

1
2
3
4
5
6
7
8
9
"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"
  ],
}

ReemplazaYOUR-SDK-ENDPOINT por tu punto final SDK de Braze real.

Configura el gancho useBraze.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 tarjetas de contenido de Braze

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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();
  }
}, []);

Seguir eventos de widgets

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 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 los eventos y las compras desde tu servidor MCP, utiliza nuestra API REST.

Acerca del SDK de Braze Vega

El SDK de Braze Vega te permite recopilar datos de análisis y mostrar mensajes enriquecidos dentro de la aplicación a tus usuarios. La mayoría de los métodos del SDK de Braze Vega son asíncronos y devuelven promesas que deben esperarse o resolverse.

Integración del SDK de Braze Vega

Paso 1: Instala la biblioteca Braze

Instala el SDK de Braze Vega utilizando tu administrador de paquetes preferido.

Si tu proyecto utiliza NPM, puedes añadir el SDK de Braze Vega como dependencia.

1
npm install @braze/vega-sdk --save

Después de la instalación, puedes importar los métodos que necesites:

1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";

Si tu proyecto utiliza Yarn, puedes añadir el SDK de Braze Vega como dependencia.

1
yarn add @braze/vega-sdk

Después de la instalación, puedes importar los métodos que necesites:

1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";

Paso 2: Inicializar el SDK

Una vez añadido el SDK de Braze Vega a tu proyecto, inicializa la biblioteca con la clave de API de SDK y la URL del punto final SDK que se encuentran en Configuración > Configuración de la aplicación dentro de tu panel de Braze.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
  );
};

Configuraciones opcionales

Registro

Puedes habilitar el registro del SDK para facilitar la depuración y la solución de problemas. Hay varias formas de habilitar el registro.

Habilitar el registro durante la inicialización

PasaenableLogging: true ainitialize() para registrar los mensajes de depuración en la consola:

1
2
3
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  enableLogging: true
});

Habilitar el registro después de la inicialización

UtilizatoggleLogging() para habilitar o deshabilitar el registro del SDK después de la inicialización:

1
2
3
4
import { toggleLogging } from "@braze/vega-sdk";

// Enable logging
toggleLogging();

Registro personalizado

UtilizasetLogger() para proporcionar una función de registro personalizada que te permita controlar mejor cómo se gestionan los registros del SDK:

1
2
3
4
5
6
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 ainitialize() para personalizar el comportamiento del SDK:

1
2
3
4
5
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  sessionTimeoutInSeconds: 60,        // Configure session timeout (default is 30 seconds)
  appVersionNumber: "1.2.3.4",        // Set your app version
  enableLogging: true,                 // Enable SDK logging
});

Actualizar el SDK

Cuando hagas referencia al SDK de Braze Vega desde NPM o Yarn, podrás actualizar a la última versión actualizando la dependencia del paquete:

1
2
3
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk

Prueba de tu integración

Para verificar que la integración de SDK funciona correctamente:

  1. Inicializa el SDK conenableLogging: true para ver los mensajes de depuración en la consola.
  2. Asegúrate deawait changeUser() antes de llamar a otros métodos SDK.
  3. Llamaawait openSession()para iniciar una sesión.
  4. Comprueba tu panel de Braze en la sección «Resumen» para verificar que se están registrando los datos de la sesión.
  5. Prueba el registro de un evento personalizado y comprueba que aparece en tu panel.
New Stuff!