Integre o SDK da Braze
Aprenda como integrar o SDK da Braze. Cada SDK é hospedado em seu próprio repositório público no GitHub, que inclui apps de exemplo totalmente compiláveis que você pode usar para testar os recursos da Braze ou implementar junto com suas próprias aplicações. Para saber mais, veja Referências, repositórios e apps de exemplo. Para mais informações gerais sobre o SDK, veja Introdução: Visão geral da integração.
Para conteúdo espelhado do README do SDK na documentação, veja Guias de repositório.

Após integrar o SDK, você pode ativar a autenticação do SDK para adicionar uma camada adicional de segurança, impedindo solicitações não autorizadas ao SDK. A autenticação do SDK está disponível para Web, Android, Swift, React Native, Flutter, Unity, Cordova, .NET MAUI (Xamarin) e Expo.

Se a inicialização do SDK falhar com erros de confiança de certificado HTTPS (por exemplo, SSLHandshakeException com Trust anchor for certification path not found), consulte Solução de problemas de erros de confiança de certificado do SDK.
Sobre o Web Braze SDK
O Web Braze SDK permite coletar dados de análise e exibir mensagens no app avançadas, mensagens de push e Content Cards para os seus usuários web. Para saber mais, consulte a documentação de referência do JavaScript da Braze.

Este guia usa exemplos de código do SDK da Braze para Web 4.0.0+. Para fazer upgrade para a versão mais recente do SDK para Web, consulte o Guia de atualização do SDK.
Integre o Web SDK
Você pode integrar o Web Braze SDK usando os seguintes métodos. Para opções adicionais, veja outros métodos de integração.
- Integração baseada em código: Integre o Web Braze SDK diretamente no seu código usando seu gerenciador de pacotes preferido ou o CDN da Braze. Isso dá a você controle total sobre como o SDK é carregado e configurado.
- Google Tag Manager: Uma solução sem código que permite integrar o Web Braze SDK sem modificar o código do seu site. Para saber mais, veja Google Tag Manager com o SDK da Braze.

Recomendamos usar o método de integração NPM. Os benefícios incluem armazenar as bibliotecas do SDK localmente no seu website, oferecer imunidade contra extensões de bloqueio de anúncios e contribuir para tempos de carregamento mais rápidos como parte do suporte a bundlers.
Etapa 1: Instale a biblioteca da Braze
Você pode instalar a biblioteca da Braze usando um dos seguintes métodos. No entanto, se o seu site usa uma Content-Security-Policy, revise a Content Security Policy antes de continuar.

Embora a maioria dos bloqueadores de anúncios não bloqueie o Web Braze SDK, alguns bloqueadores mais restritivos podem causar problemas.
Se o seu site usa gerenciadores de pacotes NPM ou Yarn, você pode adicionar o pacote NPM da Braze como dependência.
As definições de Typescript estão incluídas a partir da v3.0.0. Para notas sobre a atualização de 2.x para 3.x, veja nosso changelog.
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk
Uma vez instalada, você pode importar (import) ou requerer (require) a biblioteca da maneira habitual:
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");
Adicione o Web Braze SDK diretamente ao seu HTML referenciando nosso script hospedado no CDN, que carrega a biblioteca de forma assíncrona.

A configuração padrão de Impedir rastreamento entre sites no Safari pode impedir que tipos de mensagens no app, como Banners e Content Cards, sejam exibidos ao usar o método de integração por CDN. Para evitar esse problema, use o método de integração NPM para que o Safari não classifique essas mensagens como tráfego entre sites e seus usuários web possam vê-las em todos os navegadores compatíveis.
Etapa 2: Inicialize o SDK
Após adicionar o Web Braze SDK ao seu website, inicialize a biblioteca com a chave de API e a URL do endpoint do SDK encontrados em Configurações > Configurações do app no dashboard da Braze. Para uma lista completa de opções para braze.initialize(), junto com nossos outros métodos JavaScript, veja a documentação JavaScript da Braze.

Domínios personalizados para solicitações do Web SDK não são suportados: o baseUrl do Web SDK deve ser um endpoint de SDK da Braze (por exemplo, sdk.iad-05.braze.com). A Braze não suporta o roteamento de tráfego do Web SDK por meio de um domínio de propriedade do cliente via registros CNAME. Se você precisa que as solicitações do Web SDK se originem do seu próprio domínio, entre em contato com o suporte da Braze.
// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
enableLogging: false, // set to `true` for debugging
allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});
// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();
// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
// cards have been updated
});
// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
braze.changeUser(userIdentifier);
}
// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();

Exibição de In-App Messages: Para exibir In-App Messages automaticamente quando são disparadas, você deve chamar braze.automaticallyShowInAppMessages(). Sem essa chamada, as In-App Messages não são exibidas automaticamente. Se você deseja gerenciar a exibição de mensagens manualmente, remova essa chamada e use braze.subscribeToInAppMessage() em vez disso. Para saber mais, veja Desativando disparos automáticos.
Solução de problemas com sessões ausentes para usuários anônimos
Se você está enfrentando comportamento de “sessão ausente”, ou se não consegue rastrear a sessão de usuários que permanecem anônimos na web, verifique se sua integração chama braze.openSession() durante a inicialização.
- Cenário: Usuários anônimos podem retornar um ID da Braze, mas os dados da sessão estão em branco ou ausentes.
- Causa: A implementação não chama
braze.openSession(). - Resolução: Sempre chame
braze.openSession()após a inicialização (e apósbraze.changeUser()se você definir um ID externo).
Para saber mais, veja Etapa 2: Inicialize o SDK.

Usuários anônimos em dispositivos móveis ou web podem ser contabilizados no seu MAU. Como resultado, você pode querer carregar ou inicializar o SDK condicionalmente para excluir esses usuários da sua contagem de MAU.
Pré-requisitos
Antes de usar este método de integração, você precisará criar uma conta e um contêiner para o Google Tag Manager.
Etapa 1: Abra a galeria de modelos de tag
No Google Tag Manager, escolha seu espaço de trabalho e selecione Templates. No painel Tag Template, selecione Search Gallery.

Etapa 2: Adicione o modelo de tag de inicialização
Na galeria de modelos, procure por braze-inc e selecione Braze Initialization Tag.

Selecione Add to workspace > Add.

Etapa 3: Configure a tag
Na seção Templates, selecione o modelo recém-adicionado.

Selecione o ícone de lápis para abrir o menu suspenso Tag Configuration.

Insira as informações mínimas necessárias:
| Campo | Descrição |
|---|---|
| API Key | Sua chave de API da Braze, encontrada no dashboard da Braze em Settings > App Settings. |
| API Endpoint | A URL do seu endpoint REST. Seu endpoint dependerá da URL da Braze para sua instância. |
| SDK Version | A versão MAJOR.MINOR mais recente do SDK Web da Braze listada no changelog. Por exemplo, se a versão mais recente for 4.1.2, digite 4.1. Para saber mais, consulte Sobre o gerenciamento de versões do SDK. |
Para configurações adicionais de inicialização, selecione Braze Initialization Options e escolha as opções que você precisar.

Etapa 4: Escolha as opções de inicialização
A Braze Initialization Tag expõe as seguintes opções. A maioria delas mapeia diretamente para as InitializationOptions do SDK Web, e algumas correspondem a métodos do SDK Web que a tag chamará durante a inicialização. Selecione as opções que correspondem às suas necessidades de integração:
| Opção GTM | Configuração ou método do SDK Web | Descrição |
|---|---|---|
| Allow HTML In-App Messages | allowUserSuppliedJavascript |
Ativa mensagens no app em HTML, Banners e ações de clique em JavaScript fornecidas pelo usuário. Necessário para mensagens no app em HTML e Banners que usam HTML personalizado. Ative isso apenas quando confiar no conteúdo HTML e JavaScript, pois permite a execução de JavaScript fornecido pelo usuário. |
| App Version Number | appVersion, appVersionNumber |
Versão do app para segmentação (por exemplo, 1.2.3.4). |
| Automatically Open New Session | braze.openSession() |
Abre uma nova sessão após o SDK ser inicializado, chamando este método automaticamente. |
| Automatically show new in app messages | braze.automaticallyShowInAppMessages() |
Exibe automaticamente novas mensagens no app quando elas chegam do servidor, chamando este método após a inicialização. |
| Disable Automatic Push Token Maintenance | disablePushTokenMaintenance |
Impede que o SDK sincronize tokens por push com o backend da Braze em novas sessões. |
| Disable Automatic Service Worker Registration | manageServiceWorkerExternally |
Use se você registrar e controlar o service worker por conta própria. |
| Disable Cookies | noCookies |
Usa localStorage em vez de cookies para dados de usuário/sessão. Impede o reconhecimento entre subdomínios. |
| Disable Font Awesome | doNotLoadFontAwesome |
Impede que o SDK carregue o Font Awesome da rede de distribuição de conteúdo (CDN). Use se seu site já tiver o Font Awesome. |
| Enable SDK Authentication | enableSdkAuthentication |
Ativa a autenticação do SDK. |
| Enable Web SDK Logging | enableLogging |
Ativa o registro no console para depuração. Remova antes de ir para produção. |
| Minimum Interval Between Triggered Messages | minimumIntervalBetweenTriggerActionsInSeconds |
Segundos mínimos entre ações-gatilho (padrão: 30). |
| Open Cards in New Tab | openCardsInNewTab |
Abre links de cartões de conteúdo em uma nova guia ao usar a interface padrão do feed. |
| Service Worker Location | serviceWorkerLocation |
Caminho personalizado para o arquivo do service worker (padrão: /service-worker.js). |
| Session Timeout (seconds) | sessionTimeoutInSeconds |
Tempo limite da sessão em segundos (padrão: 1800). |

Para ativar mensagens no app em HTML personalizado ao usar a Braze Initialization Tag no Google Tag Manager, selecione Allow HTML In-App Messages em Braze Initialization Options. Essa caixa de seleção mapeia para a opção de inicialização allowUserSuppliedJavascript em braze.initialize() e a define como true. A Braze Initialization Tag do Google Tag Manager usa esse rótulo em vez do nome da opção.
Para opções não expostas no modelo GTM (como contentSecurityNonce, localization ou devicePropertyAllowlist), use a inicialização em tempo de execução.
Etapa 5: Defina para disparar em todas as páginas
A tag de inicialização deve ser executada em todas as páginas do seu site. Isso permite que você use métodos do SDK da Braze e registre análise de dados de web push.

Sequenciamento de tags: A Braze Initialization Tag deve ser disparada antes de qualquer outra tag que chame métodos do SDK da Braze (como braze.getUser() ou braze.logCustomEvent()). Se eventos personalizados, atributos de usuário ou outras chamadas de métodos da Braze forem disparados antes de o SDK ser inicializado, você poderá encontrar erros como Uncaught TypeError: Cannot read properties of undefined (reading 'getUser'). Para garantir o sequenciamento correto, configure sua Braze Initialization Tag como uma tag de configuração ou use o recurso de sequenciamento de tags do GTM para garantir que ela seja disparada primeiro. Para saber mais, consulte Sequenciamento de tags para tags de ação da Braze.
Etapa 6: Verifique sua integração
Você pode verificar sua integração usando qualquer uma das seguintes opções:
- Opção 1: Usando a ferramenta de depuração do Google Tag Manager, você pode verificar se a Braze Initialization Tag está disparando corretamente nas suas páginas ou eventos configurados.
- Opção 2: Verifique se há solicitações de rede feitas para a Braze a partir da sua página web. Além disso, a biblioteca global
window.brazedeve agora estar definida.
Filtrando tráfego de bots
O MAU pode incluir uma porcentagem de usuários bots, o que inflaciona sua contagem de usuários ativos mensais. Embora o SDK Braze para Web inclua detecção integrada para alguns crawlers web comuns (como bots de motores de busca e bots de pré-visualização de redes sociais), é especialmente importante permanecer proativo com soluções robustas para detectar bots, já que atualizações do SDK sozinhas não podem detectar consistentemente todos os novos bots.
Limitações da detecção de bots do lado do SDK
O Web SDK inclui detecção básica de bots baseada em user-agent que filtra crawlers conhecidos. No entanto, essa abordagem tem limitações:
- Novos bots surgem constantemente: Empresas de IA e outros atores criam regularmente novos bots que podem se disfarçar para evitar a detecção.
- Falsificação de user-agent: Bots sofisticados podem imitar user-agents de navegadores legítimos.
- Bots personalizados: Usuários não técnicos agora podem criar facilmente bots usando grandes modelos de linguagem (LLMs), tornando o comportamento dos bots imprevisível.
Implementando filtragem de bots

As soluções descritas abaixo são sugestões gerais. Adapte a lógica de filtragem de bots ao seu ambiente e padrões de tráfego únicos.
A solução mais robusta é implementar sua própria lógica de filtragem de bots antes de inicializar o SDK da Braze. As abordagens comuns incluem:
Exigir interação do usuário
Considere atrasar a inicialização do SDK até que um usuário realize uma interação significativa, como aceitar um banner de consentimento de cookies, rolar ou clicar. Essa abordagem é frequentemente mais fácil de implementar e pode ser altamente eficaz na filtragem de tráfego de bots.

Atrasar a inicialização do SDK até a interação do usuário pode fazer com que Banners e Content Cards também não sejam exibidos até que essa interação ocorra.
Detecção personalizada de bots
Implemente detecção personalizada com base em seus padrões específicos de tráfego de bots, como:
- Analisando strings de user-agent em busca de padrões que você identificou no seu tráfego
- Verificando indicadores de navegador headless
- Usando serviços de detecção de bots de terceiros
- Monitorando sinais comportamentais específicos do seu site
Exemplo de inicialização condicional:
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE"
});
braze.automaticallyShowInAppMessages();
braze.openSession();
}
Melhores práticas
- Analise regularmente seus dados de MAU e padrões de tráfego da web para identificar novos comportamentos de bots.
- Teste minuciosamente para garantir que seu filtro de bots não impeça que usuários legítimos sejam rastreados.
- Atualize sua lógica de filtragem com base nos padrões de tráfego de bots que você observa em seu ambiente.
Configurações opcionais
Registro de logs
Para ativar rapidamente o registro de logs, você pode adicionar ?brazeLogging=true como um parâmetro na URL do seu website. Alternativamente, você pode ativar o registro básico ou personalizado. Para uma visão geral centralizada em todas as plataformas, consulte Registro detalhado.
Registro básico
Use enableLogging para registrar mensagens básicas de depuração no console JavaScript antes de o SDK ser inicializado.
enableLogging: true
Seu método deve ser semelhante ao seguinte:
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
enableLogging: true
});
braze.openSession();
Use braze.toggleLogging() para registrar mensagens básicas de depuração no console JavaScript após o SDK ser inicializado. Seu método deve ser semelhante ao seguinte:
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

Os logs básicos são visíveis para todos os usuários, então considere desativá-los ou mudar para setLogger antes de liberar seu código para produção.
Registro personalizado
Use setLogger para registrar mensagens de depuração personalizadas no console JavaScript. Diferentemente dos logs básicos, esses logs não são visíveis para os usuários.
setLogger(loggerFunction: (message: STRING) => void): void
Substitua STRING pela sua mensagem como um único parâmetro de string. Seu método deve ser semelhante ao seguinte:
braze.initialize('API-KEY');
braze.setLogger(function(message) {
console.log("Braze Custom Logger: " + message);
});
braze.openSession();
Fazendo upgrade do SDK

Este guia usa exemplos de código do SDK da Braze para Web 4.0.0+. Para fazer upgrade para a versão mais recente do SDK para Web, consulte o Guia de atualização do SDK.
Quando você referencia o SDK da Braze para Web a partir de nossa rede de distribuição de conteúdo (CDN), por exemplo, https://js.appboycdn.com/web-sdk/a.a/braze.min.js (conforme recomendado por nossas instruções padrão de integração), seus usuários recebem automaticamente atualizações menores (correções de bugs e recursos compatíveis com versões anteriores, versões a.a.a até a.a.z neste exemplo) quando atualizam seu site.
No entanto, quando lançamos alterações importantes, exigimos que você faça o upgrade do SDK da Braze para Web manualmente, para garantir que mudanças que possam causar incompatibilidades não afetem sua integração. Além disso, se você baixar nosso SDK e hospedá-lo por conta própria, não receberá nenhuma atualização de versão automaticamente e deverá fazer o upgrade manualmente para receber os recursos e correções de bugs mais recentes.
Você pode se manter atualizado com nossos lançamentos mais recentes acompanhando nosso feed de lançamentos com o leitor de RSS ou serviço de sua preferência, e consultar nosso changelog para um registro completo do histórico de lançamentos do SDK para Web. Para fazer upgrade do SDK da Braze para Web:
- Atualize a versão da biblioteca da Braze alterando o número da versão em
https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.js, ou nas dependências do seu gerenciador de pacotes. - Se você tem web push integrado, atualize o arquivo do service worker em seu site. Por padrão, ele está localizado em
/service-worker.jsno diretório raiz do seu site, mas o local pode ser personalizado em algumas integrações. Você precisa ter acesso ao diretório raiz para hospedar um arquivo de service worker.
Você precisa atualizar esses dois arquivos de forma coordenada para garantir o funcionamento correto.
Outros métodos de integração
Accelerated Mobile Pages (AMP)
Saiba mais
Etapa 1: Incluir o script de web push AMP
Adicione a seguinte tag de script assíncrono ao seu head:
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>
Etapa 2: Adicionar widgets de inscrição
Adicione um widget ao body do seu HTML que permita aos usuários se inscrever e cancelar a inscrição de push.
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>
<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>
Etapa 3: Adicionar helper-iframe e permission-dialog
O componente AMP Web Push cria um popup para gerenciar inscrições de push, então você precisa adicionar os seguintes arquivos auxiliares ao seu projeto para ativar esse recurso:
Etapa 4: Criar um arquivo de service worker
Crie um arquivo service-worker.js no diretório raiz do seu website e adicione o seguinte snippet:
Etapa 5: Configurar o elemento HTML de web push AMP
Adicione o seguinte elemento HTML amp-web-push ao body do seu HTML. Lembre-se de que você precisa adicionar sua apiKey e baseUrl como parâmetros de consulta ao service-worker-URL.
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>
Asynchronous Module Definition (AMD)
Desativar suporte
Se o seu site usa RequireJS ou outro carregador de módulos AMD, mas você prefere carregar o SDK Web da Braze por meio de uma das outras opções desta lista, é possível carregar uma versão da biblioteca que não inclui suporte a AMD. Essa versão da biblioteca pode ser carregada a partir do seguinte local de CDN:
Carregador de módulos
Se você usa RequireJS ou outros carregadores de módulos AMD, recomendamos hospedar localmente uma cópia da nossa biblioteca e referenciá-la como você faria com outros recursos:
require(['path/to/braze.min.js'], function(braze) {
braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
// Required if you want in-app messages to display automatically
braze.automaticallyShowInAppMessages();
braze.openSession();
});
Electron
O Electron não oferece suporte oficial a notificações web push (consulte esta issue no GitHub). Existem outras soluções alternativas de código aberto que você pode experimentar, mas que não foram testadas pela Braze.
Framework Jest
Ao usar o Jest, você pode ver um erro semelhante a SyntaxError: Unexpected token 'export'. Para corrigir isso, ajuste a configuração no package.json para ignorar o SDK da Braze:
"jest": {
"transformIgnorePatterns": [
"/node_modules/(?!@braze)"
]
}
Frameworks SSR
O Web SDK é executado em um ambiente de navegador. Em frameworks SSR, inicialize a Braze em um componente exclusivamente do lado do cliente para que seu servidor nunca execute o código do SDK.
Importação dinâmica agnóstica de framework
Se o seu framework não está listado nesta seção, você pode importar a Braze dinamicamente a partir de um hook de ciclo de vida exclusivo do cliente.
// MyComponent/braze-exports.js
// Export the parts of the SDK that you need.
export { initialize, openSession } from "@braze/web-sdk";
// MyComponent/MyComponent.js
useEffect(() => {
import("./braze-exports.js").then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Se você está usando webpack, é possível importar dinamicamente apenas exportações específicas do SDK.
// MyComponent.js
useEffect(() => {
import(
/* webpackExports: ["initialize", "openSession"] */
"@braze/web-sdk"
).then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Hook compartilhado para Next.js e Remix
Crie um hook reutilizável useBraze e chame-o próximo à raiz do seu app.
// hooks/useBraze.ts
import { useEffect, useRef } from "react";
export function useBraze() {
const didInit = useRef(false);
useEffect(() => {
if (didInit.current) {
return;
}
didInit.current = true;
import("@braze/web-sdk")
.then((braze) => {
const initialized = braze.initialize("YOUR-API-KEY-HERE", {
// Use your Braze Web SDK endpoint, such as sdk.iad-01.braze.com.
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: false,
});
if (!initialized) {
return;
}
// Optional: Identify signed-in users before opening a session.
// braze.changeUser("external-id");
// Optional: Automatically display in-app messages.
// braze.automaticallyShowInAppMessages();
braze.openSession();
})
.catch((error) => {
console.error("Unable to load Braze SDK:", error);
});
}, []);
}
Next.js (App Router)
Chame useBraze em um componente de cliente que envolve seu app.
// app/components/AppRoot.tsx
"use client";
import type { ReactNode } from "react";
import { useBraze } from "../hooks/useBraze";
export function AppRoot({ children }: { children: ReactNode }) {
useBraze();
return <>{children}</>;
}
// app/layout.tsx
import type { ReactNode } from "react";
import { AppRoot } from "./components/AppRoot";
export default function RootLayout({
children,
}: {
children: ReactNode;
}) {
return (
<html lang="en">
<body>
<AppRoot>{children}</AppRoot>
</body>
</html>
);
}
Next.js (Pages Router)
Chame useBraze no topo do seu componente de app personalizado.
// pages/_app.tsx
import type { AppProps } from "next/app";
import { useBraze } from "../hooks/useBraze";
export default function App({ Component, pageProps }: AppProps) {
useBraze();
return (
<Component {...pageProps} />
);
}
Remix
Chame useBraze no topo do componente da rota raiz.
Para exemplos de validação local do Remix, execute PORT=4013 npm run dev.
// app/root.tsx
import { Outlet } from "@remix-run/react";
import { useBraze } from "./hooks/useBraze";
export default function App() {
useBraze();
return <Outlet />;
}
Registrando eventos e atualizando usuários
Depois que useBraze inicializa o SDK na raiz do seu app, outros componentes do lado do cliente podem chamar métodos da Braze. Um padrão comum é chamá-los dentro de ações do usuário, como onClick ou onSubmit. No exemplo, os métodos do SDK são carregados dentro do manipulador de clique em vez de no topo do arquivo. Isso mantém o Web SDK fora do código do servidor e carrega apenas o necessário para aquela ação. O comentário webpackExports informa ao webpack quais métodos incluir, mantendo seu bundle menor.
// app/components/BuyButton.tsx
"use client";
export function BuyButton() {
const handleClick = async () => {
const { logCustomEvent, logPurchase, getUser } = await import(
/* webpackExports: ["logCustomEvent", "logPurchase", "getUser"] */
"@braze/web-sdk"
);
getUser()?.setCustomUserAttribute("last_purchase_date", "2026-05-04");
logCustomEvent("clicked_buy", { source: "product_page" });
logPurchase("sku_123", 19.99, "USD");
};
return <button onClick={handleClick}>Buy</button>;
}
Este exemplo mostra um componente BuyButton que registra atividade quando alguém clica em Buy. Primeiro, ele importa apenas logCustomEvent, logPurchase e getUser no momento do clique. Em seguida, atualiza um atributo do usuário, registra um evento personalizado e registra uma compra. Esse padrão ajuda a manter a inicialização centralizada em useBraze, enquanto ainda rastreia ações significativas de qualquer componente do lado do cliente.
Se você está usando Remix com Vite e as importações pela raiz do pacote falham em tempo de execução, use a solução alternativa existente do Vite. Para saber mais, consulte Vite.
Para uma lista completa dos métodos disponíveis, consulte a documentação de referência JavaScript da Braze.
Tealium iQ
O Tealium iQ oferece uma integração básica e pronta para uso com a Braze. Para configurar a integração, procure Braze na interface do Tealium Tag Management e forneça a chave de API do Web SDK a partir do seu dashboard.
Para mais detalhes ou suporte aprofundado de configuração do Tealium, confira nossa documentação de integração ou entre em contato com o seu gerente de conta do Tealium.
Vite
Se você usa Vite e vê um aviso sobre dependências circulares ou Uncaught TypeError: Class extends value undefined is not a constructor or null, pode ser necessário excluir o SDK da Braze da descoberta de dependências:
optimizeDeps: {
exclude: ['@braze/web-sdk']
},
Outros gerenciadores de tags
A Braze também pode ser compatível com outras soluções de gerenciamento de tags seguindo nossas instruções de integração em uma tag HTML personalizada. Entre em contato com um representante da Braze se precisar de ajuda para avaliar essas soluções.
Integrando o SDK para Android
Etapa 1: Atualize a configuração de build do Gradle
No repositório de configuração do seu projeto (por exemplo, settings.gradle, settings.gradle.kts ou build.gradle de nível superior), adicione mavenCentral() à sua lista de repositórios. Essa sintaxe é a mesma tanto para Groovy quanto para Kotlin DSL.
repositories {
mavenCentral()
}
Em seguida, adicione a Braze às suas dependências. Nos exemplos a seguir, substitua SDK_VERSION pela versão atual do seu SDK Android da Braze. Para a lista completa de versões, consulte os Changelogs.

- Para Kotlin DSL (
build.gradle.kts), use a sintaxeimplementation("..."). - Para Groovy (
build.gradle), use a sintaxeimplementation '...'. - Para catálogos de versão, adicione entradas ao seu arquivo
gradle/libs.versions.tomle faça referência a elas usando os acessores gerados.
Se você não planeja usar os componentes de interface da Braze, adicione o seguinte às suas dependências.
dependencies {
implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
dependencies {
implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
No seu arquivo gradle/libs.versions.toml:
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
Em seguida, no seu arquivo build.gradle ou build.gradle.kts, adicione as seguintes dependências. Essa sintaxe é a mesma tanto para Groovy quanto para Kotlin DSL.
dependencies {
implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
Se você planeja usar os componentes de interface da Braze, adicione o seguinte às suas dependências.
dependencies {
implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
dependencies {
implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
No seu arquivo gradle/libs.versions.toml:
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
Em seguida, no seu arquivo build.gradle ou build.gradle.kts, adicione as seguintes dependências. Essa sintaxe é a mesma tanto para Groovy quanto para Kotlin DSL.
dependencies {
implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
Etapa 2: Configure seu braze.xml

Desde dezembro de 2019, endpoints personalizados não são mais fornecidos. Se você possui um endpoint personalizado pré-existente, pode continuar a usá-lo. Para saber mais, consulte nossa lista de endpoints disponíveis.
Crie um arquivo braze.xml na pasta res/values do seu projeto. Se você estiver em um cluster de dados específico ou tiver um endpoint personalizado pré-existente, também será necessário especificar o endpoint no seu arquivo braze.xml.
O conteúdo desse arquivo deve ser semelhante ao trecho de código a seguir. Substitua YOUR_APP_IDENTIFIER_API_KEY pelo identificador encontrado na página Manage Settings do dashboard da Braze. Faça login em dashboard.braze.com para encontrar o endereço do seu cluster.
<?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>
Etapa 3: Adicione permissões ao AndroidManifest.xml
Em seguida, adicione as seguintes permissões ao seu AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Com o lançamento do Android M, o Android mudou de um modelo de permissões no momento da instalação para um modelo de permissões em tempo de execução. No entanto, ambas as permissões são permissões normais e são concedidas automaticamente se listadas no manifesto do app. Para saber mais, consulte a documentação de permissões do Android.
Etapa 4: Ative a inicialização atrasada (opcional)
Para usar a inicialização atrasada, é necessária a versão mínima do SDK da Braze:

Enquanto a inicialização atrasada estiver ativada, todas as conexões de rede serão canceladas, impedindo que o SDK envie dados para os servidores da Braze.
Etapa 4.1: Atualize seu braze.xml
A inicialização atrasada é desativada por padrão. Para ativá-la, use uma das seguintes opções:
No arquivo braze.xml do seu projeto, defina com_braze_enable_delayed_initialization como true.
<bool name="com_braze_enable_delayed_initialization">true</bool>
Para ativar a inicialização atrasada em tempo de execução, use o seguinte método.
Braze.enableDelayedInitialization(context);
Braze.enableDelayedInitialization(context)

Quando a inicialização atrasada está ativada e uma notificação por push contém uma ação de deep link, o deep link não é resolvido.
Etapa 4.2: Configure a análise de dados de push (opcional)
Quando a inicialização atrasada está ativada, a análise de dados de push é enfileirada por padrão. No entanto, você pode optar por enfileirar explicitamente ou descartar a análise de dados de push.
Enfileirar explicitamente
Para enfileirar explicitamente a análise de dados de push, escolha uma das seguintes opções:
No seu arquivo braze.xml, defina com_braze_delayed_initialization_analytics_behavior como QUEUE:
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>
Adicione QUEUE ao seu método Braze.enableDelayedInitialization():
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
Descartar
Para descartar a análise de dados de push, escolha uma das seguintes opções:
No seu arquivo braze.xml, defina com_braze_delayed_initialization_analytics_behavior como DROP:
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>
Adicione DROP ao método Braze.enableDelayedInitialization():
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)
Etapa 4.3: Inicialize o SDK manualmente
Após o período de atraso escolhido, use o método Braze.disableDelayedInitialization() para inicializar o SDK manualmente.
Braze.disableDelayedInitialization(context);
Braze.disableDelayedInitialization(context)
Etapa 5: Ative o rastreamento de sessão do usuário
Quando você ativa o rastreamento de sessão do usuário, as chamadas para openSession(), closeSession(), ensureSubscribedToInAppMessageEvents() e o registro do InAppMessageManager podem ser tratados automaticamente.
Para registrar os retornos de chamada do ciclo de vida da atividade, adicione o seguinte código ao método onCreate() da classe Application do seu projeto.
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
}
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
}
Para a lista de parâmetros disponíveis, consulte BrazeActivityLifecycleCallbackListener.
Testando o rastreamento de sessões

Se você tiver problemas durante os testes, ative o registro detalhado e use o logcat para detectar chamadas openSession e closeSession ausentes em suas atividades.
- Na Braze, acesse Overview, selecione seu app e, no menu suspenso Display Data For, escolha Today.

- Abra seu app e atualize o dashboard da Braze. Verifique se suas métricas aumentaram em 1.
- Navegue pelo seu app e verifique se apenas uma sessão foi registrada na Braze.
- Envie o app para o segundo plano por pelo menos 10 segundos e depois traga-o de volta para o primeiro plano. Verifique se uma nova sessão foi registrada.
Configurações opcionais
Configuração em tempo de execução
Para definir suas opções da Braze em código em vez de usar o arquivo braze.xml, use a configuração em tempo de execução. Se um valor existir em ambos os locais, o valor em tempo de execução será usado. Depois que todas as configurações necessárias forem fornecidas em tempo de execução, você pode excluir o arquivo braze.xml.
No exemplo a seguir, um objeto builder é criado e então passado para Braze.configure(). Observe que apenas algumas das opções de tempo de execução disponíveis são mostradas — consulte nosso KDoc para a lista completa.
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build()
Braze.configure(this, brazeConfig)

Google Advertising ID
O Google Advertising ID (GAID) é um ID opcional, específico do usuário, anônimo, exclusivo e redefinível para publicidade, fornecido pelos serviços do Google Play. O GAID permite que os usuários redefinam seu identificador, optem por não receber anúncios baseados em interesses nos apps do Google Play e fornece aos desenvolvedores um sistema simples e padronizado para continuar a monetizar seus apps.
O Google Advertising ID não é coletado automaticamente pelo SDK da Braze e deve ser definido manualmente por meio do método Braze.setGoogleAdvertisingId().
new Thread(new Runnable() {
@Override
public void run() {
try {
AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
suspend fun fetchAndSetAdvertisingId(
context: Context,
scope: CoroutineScope = GlobalScope
) {
scope.launch(Dispatchers.IO) {
try {
val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
Braze.getInstance(context).setGoogleAdvertisingId(
idInfo.id,
idInfo.isLimitAdTrackingEnabled
)
} catch (e: Exception) {
e.printStackTrace()
}
}
}

O Google exige que o Advertising ID seja coletado em uma thread que não seja de UI.
Monitoramento de localização
Para ativar a coleta de localização da Braze, defina com_braze_enable_location_collection como true no seu arquivo braze.xml:
<bool name="com_braze_enable_location_collection">true</bool>

A partir da versão 3.6.0 do SDK Android da Braze, a coleta de localização está desativada por padrão.
Registro de logs
Por padrão, o nível de log do SDK Android da Braze é definido como INFO. Você pode suprimir esses logs ou definir um nível de log diferente, como VERBOSE, DEBUG ou WARN.
Ativando logs
Para ajudar a solucionar problemas no seu app, ou reduzir o tempo de resposta com o suporte da Braze, você pode ativar logs detalhados para o SDK. Ao enviar logs detalhados para o suporte da Braze, certifique-se de que eles comecem assim que você iniciar seu aplicativo e terminem bem depois que o problema ocorrer. Para uma visão geral centralizada, consulte Registro detalhado. Para saber como interpretar a saída de logs, consulte Lendo logs detalhados.
Tenha em mente que logs detalhados são destinados apenas ao seu ambiente de desenvolvimento, então você deve desativá-los antes de publicar seu app.

Ative os logs detalhados antes de qualquer outra chamada em Application.onCreate() para garantir que seus logs sejam os mais completos possíveis.
Para ativar os logs diretamente no seu app, adicione o seguinte ao método onCreate() do seu aplicativo antes de qualquer outro método.
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL
Substitua MIN_LOG_LEVEL pela Constante do nível de log que você deseja definir como seu nível mínimo de log. Quaisquer logs em um nível >= ao seu MIN_LOG_LEVEL definido serão encaminhados para o método padrão Log do Android. Quaisquer logs < ao seu MIN_LOG_LEVEL definido serão descartados.
| Constante | Valor | Descrição |
|---|---|---|
VERBOSE |
2 | Registra as mensagens mais detalhadas para depuração e desenvolvimento. |
DEBUG |
3 | Registra mensagens descritivas para depuração e desenvolvimento. |
INFO |
4 | Registra mensagens informativas para destaques gerais. |
WARN |
5 | Registra mensagens de alerta para identificar situações potencialmente prejudiciais. |
ERROR |
6 | Registra mensagens de erro para indicar falhas no aplicativo ou problemas graves. |
ASSERT |
7 | Registra mensagens de asserção quando condições são falsas durante o desenvolvimento. |
Por exemplo, o código a seguir encaminhará os níveis de log 2, 3, 4, 5, 6 e 7 para o método Log.
BrazeLogger.setLogLevel(Log.VERBOSE);
BrazeLogger.logLevel = Log.VERBOSE
Para ativar os logs no braze.xml, adicione o seguinte ao seu arquivo:
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>
Substitua MIN_LOG_LEVEL pelo Valor do nível de log que você deseja definir como seu nível mínimo de log. Quaisquer logs em um nível >= ao seu MIN_LOG_LEVEL definido serão encaminhados para o método padrão Log do Android. Quaisquer logs < ao seu MIN_LOG_LEVEL definido serão descartados.
| Constante | Valor | Descrição |
|---|---|---|
VERBOSE |
2 | Registra as mensagens mais detalhadas para depuração e desenvolvimento. |
DEBUG |
3 | Registra mensagens descritivas para depuração e desenvolvimento. |
INFO |
4 | Registra mensagens informativas para destaques gerais. |
WARN |
5 | Registra mensagens de alerta para identificar situações potencialmente prejudiciais. |
ERROR |
6 | Registra mensagens de erro para indicar falhas no aplicativo ou problemas graves. |
ASSERT |
7 | Registra mensagens de asserção quando condições são falsas durante o desenvolvimento. |
Por exemplo, o código a seguir encaminhará os níveis de log 2, 3, 4, 5, 6 e 7 para o método Log.
<integer name="com_braze_logger_initial_log_level">2</integer>
Verificando logs detalhados
Para verificar se seus logs estão definidos como VERBOSE, verifique se V/Braze aparece em algum lugar nos seus logs. Se aparecer, os logs detalhados foram ativados com sucesso. Por exemplo:
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started
Suprimindo logs
Para suprimir todos os logs do SDK Android da Braze, defina o nível de log como BrazeLogger.SUPPRESS no método onCreate() do seu aplicativo antes de qualquer outro método.
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)
Múltiplas chaves de API
O caso de uso mais comum para múltiplas chaves de API é separar as chaves de API para variantes de build de debug e release.
Para alternar facilmente entre múltiplas chaves de API nos seus builds, recomendamos criar um arquivo braze.xml separado para cada variante de build relevante. Uma variante de build é uma combinação de tipo de build e flavor de produto. Por padrão, novos projetos Android são configurados com tipos de build debug e release e sem flavors de produto.
Para cada variante de build relevante, crie um novo braze.xml no diretório src/<build variant name>/res/values/. Quando a variante de build for compilada, ela usará a nova chave de API.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>

Para saber como configurar a chave de API no seu código, consulte Configuração em tempo de execução.
TalkBack exclusivo para mensagens no app
Em conformidade com as diretrizes de acessibilidade do Android, o SDK Android da Braze oferece o Android Talkback por padrão. Para garantir que apenas o conteúdo das mensagens no app seja lido em voz alta — sem incluir outros elementos da tela, como a barra de título do app ou a navegação — você pode ativar o modo exclusivo para o TalkBack.
Para ativar o modo exclusivo para mensagens no app:
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());
R8 e ProGuard
A configuração de redução de código é incluída automaticamente com a integração da Braze.
Apps clientes que ofuscam o código da Braze devem armazenar os arquivos de mapeamento de release para que a Braze possa interpretar stack traces. Se você quiser manter todo o código da Braze, adicione o seguinte ao seu arquivo ProGuard:
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }
Integrando o SDK Swift
Você pode integrar e personalizar o SDK Swift da Braze usando o Swift Package Manager (SPM), CocoaPods ou métodos de integração manual. Para saber mais sobre os diversos símbolos do SDK, consulte a documentação de referência do Braze Swift.
Pré-requisitos
Antes de começar, verifique se o seu ambiente é compatível com a versão mais recente do SDK Swift da Braze.
Etapa 1: Instale o SDK Swift da Braze
Recomendamos usar o Swift Package Manager (SwiftPM) ou o CocoaPods para instalar o SDK Swift da Braze. Como alternativa, você pode instalar o SDK manualmente.
Etapa 1.1: Importe a versão do SDK
Abra seu projeto e navegue até as configurações do projeto. Selecione a guia Swift Packages e clique no botão de adicionar abaixo da lista de pacotes.


A partir da versão 7.4.0, o SDK Swift da Braze possui canais de distribuição adicionais como XCFrameworks estáticos e XCFrameworks dinâmicos. Se você quiser usar qualquer um desses formatos, siga as instruções de instalação do respectivo repositório.
Insira a URL do nosso repositório do SDK Swift para iOS https://github.com/braze-inc/braze-swift-sdk no campo de texto. Na seção Dependency Rule, selecione a versão do SDK. Por fim, clique em Add Package.

Etapa 1.2: Selecione seus pacotes
O SDK Swift da Braze separa os recursos em bibliotecas independentes para oferecer aos desenvolvedores mais controle sobre quais recursos importar em seus projetos.
| Pacote | Detalhes |
|---|---|
BrazeKit |
Biblioteca principal do SDK, com suporte para análise de dados e notificações por push. |
BrazeLocation |
Biblioteca de localização com suporte para análise de localização e monitoramento de geofence. |
BrazeUI |
Biblioteca de interface do usuário fornecida pela Braze para In-App Messages, Content Cards e Banners. Importe esta biblioteca se pretender usar os componentes de UI padrão. |
Sobre as bibliotecas de extensão

BrazeNotificationService e BrazePushStory são módulos de extensão que fornecem funcionalidade adicional e não devem ser adicionados diretamente ao target principal do seu aplicativo. Em vez disso, siga os guias vinculados para integrá-los separadamente em seus respectivos targets de extensão.
| Pacote | Detalhes |
|---|---|
BrazeNotificationService |
Biblioteca de extensão de serviço de notificação com suporte para notificações por push avançadas. |
BrazePushStory |
Biblioteca de extensão de conteúdo de notificação com suporte para Push Stories. |
Selecione o pacote que melhor atende às suas necessidades e clique em Add Package. Certifique-se de selecionar pelo menos o BrazeKit.

Etapa 1.1: Instale o CocoaPods
Para um passo a passo completo, consulte o guia de introdução do CocoaPods. Caso contrário, você pode executar o seguinte comando para começar rapidamente:
$ sudo gem install cocoapods
Se você tiver problemas, consulte o guia de solução de problemas do CocoaPods.
Etapa 1.2: Construindo o Podfile
Em seguida, crie um arquivo chamado Podfile no diretório do seu projeto Xcode.

A partir da versão 7.4.0, o SDK Swift da Braze possui canais de distribuição adicionais como XCFrameworks estáticos e XCFrameworks dinâmicos. Se você quiser usar qualquer um desses formatos, siga as instruções de instalação do respectivo repositório.
Adicione a seguinte linha ao seu Podfile:
target 'YourAppTarget' do
pod 'BrazeKit'
end
BrazeKit contém a biblioteca principal do SDK, com suporte para análise de dados e notificações por push.
Recomendamos versionar a Braze para que as atualizações de pod capturem automaticamente qualquer coisa menor que uma atualização de versão minor. Isso se parece com pod 'BrazeKit' ~> Major.Minor.Build. Se você deseja integrar automaticamente a versão mais recente do SDK da Braze, mesmo com alterações major, pode usar pod 'BrazeKit' no seu Podfile.
Sobre bibliotecas adicionais
O SDK Swift da Braze separa os recursos em bibliotecas independentes para oferecer aos desenvolvedores mais controle sobre quais recursos importar em seus projetos. Além do BrazeKit, você pode adicionar as seguintes bibliotecas ao seu Podfile:
| Biblioteca | Detalhes |
|---|---|
pod 'BrazeLocation' |
Biblioteca de localização com suporte para análise de localização e monitoramento de geofence. |
pod 'BrazeUI' |
Biblioteca de interface do usuário fornecida pela Braze para In-App Messages, Content Cards e Banners. Importe esta biblioteca se pretender usar os componentes de UI padrão. |
Bibliotecas de extensão
BrazeNotificationService e BrazePushStory são módulos de extensão que fornecem funcionalidade adicional e não devem ser adicionados diretamente ao target principal do seu aplicativo. Em vez disso, você precisará criar targets de extensão separados para cada um desses módulos e importar os módulos da Braze em seus targets correspondentes.
| Biblioteca | Detalhes |
|---|---|
pod 'BrazeNotificationService' |
Biblioteca de extensão de serviço de notificação com suporte para notificações por push avançadas. |
pod 'BrazePushStory' |
Biblioteca de extensão de conteúdo de notificação com suporte para Push Stories. |
Etapa 1.3: Instale o SDK
Para instalar o CocoaPod do SDK da Braze, navegue até o diretório do seu projeto de app Xcode no terminal e execute o seguinte comando:
pod install
Neste ponto, você deve conseguir abrir o novo workspace do projeto Xcode criado pelo CocoaPods. Certifique-se de usar este workspace do Xcode em vez do projeto Xcode padrão.

Atualizando o SDK usando CocoaPods
Para atualizar um CocoaPod, basta executar o seguinte comando no diretório do seu projeto:
pod update
Etapa 1.1: Baixe o SDK da Braze
Acesse a página de releases do SDK da Braze no GitHub e baixe braze-swift-sdk-prebuilt.zip.

Etapa 1.2: Escolha seus frameworks
O SDK Swift da Braze contém uma variedade de XCFrameworks independentes, o que lhe dá a liberdade de integrar os recursos que desejar—sem precisar integrar todos. Consulte a tabela a seguir para escolher seus XCFrameworks:
| Pacote | Obrigatório? | Descrição |
|---|---|---|
BrazeKit |
Sim | Biblioteca principal do SDK com suporte para análise de dados e notificações por push. |
BrazeLocation |
Não | Biblioteca de localização com suporte para análise de localização e monitoramento de geofence. |
BrazeUI |
Não | Biblioteca de interface do usuário fornecida pela Braze para In-App Messages, Content Cards e Banners. Importe esta biblioteca se pretender usar os componentes de UI padrão. |
BrazeNotificationService |
Não | Biblioteca de extensão de serviço de notificação com suporte para notificações por push avançadas. Não adicione esta biblioteca diretamente ao target principal do seu aplicativo; em vez disso, adicione a biblioteca BrazeNotificationService separadamente. |
BrazePushStory |
Não | Biblioteca de extensão de conteúdo de notificação com suporte para Push Stories. Não adicione esta biblioteca diretamente ao target principal do seu aplicativo; em vez disso, adicione a biblioteca BrazePushStory separadamente. |
BrazeKitCompat |
Não | Biblioteca de compatibilidade contendo todas as classes e métodos Appboy e ABK* que estavam disponíveis no Appboy-iOS-SDK versão 4.X.X. Para detalhes de uso, consulte o cenário de migração mínima no guia de migração. |
BrazeUICompat |
Não | Biblioteca de compatibilidade contendo todas as classes e métodos ABK* que estavam disponíveis na biblioteca AppboyUI do Appboy-iOS-SDK versão 4.X.X. Para detalhes de uso, consulte o cenário de migração mínima no guia de migração. |
SDWebImage |
Não | Dependência usada apenas pelo BrazeUICompat no cenário de migração mínima. |
Etapa 1.3: Prepare seus arquivos
Decida se deseja usar XCFrameworks estáticos ou dinâmicos e, em seguida, prepare seus arquivos:
- Crie um diretório temporário para seus XCFrameworks.
- Em
braze-swift-sdk-prebuilt, abra o diretóriodynamice movaBrazeKit.xcframeworkpara o seu diretório. O seu diretório deve ficar parecido com o seguinte:temp_dir └── BrazeKit.xcframework
- Mova cada um dos seus XCFrameworks escolhidos para o diretório temporário. O seu diretório deve ficar parecido com o seguinte:
temp_dir ├── BrazeKit.xcframework ├── BrazeKitCompat.xcframework ├── BrazeLocation.xcframework └── SDWebImage.xcframework
Etapa 1.4: Integre seus frameworks
Em seguida, integre os XCFrameworks dinâmicos ou estáticos que você preparou anteriormente:
No seu projeto Xcode, selecione o build target e depois General. Em Frameworks, Libraries, and Embedded Content, arraste e solte os arquivos que você preparou anteriormente.


A partir do SDK Swift 12.0.0, você deve sempre selecionar Embed & Sign para os XCFrameworks da Braze, tanto para as variantes estáticas quanto dinâmicas. Isso garante que os recursos dos frameworks sejam incorporados corretamente no bundle do seu app.

Para ativar o suporte a GIF, adicione SDWebImage.xcframework, localizado em braze-swift-sdk-prebuilt/static ou braze-swift-sdk-prebuilt/dynamic.
Erros comuns para projetos Objective-C
Se o seu projeto Xcode contém apenas arquivos Objective-C, você pode receber erros de “missing symbol” ao tentar compilar o projeto. Para corrigir esses erros, abra seu projeto e adicione um arquivo Swift vazio à sua árvore de arquivos. Isso forçará sua toolchain de build a incorporar o Swift Runtime e vincular aos frameworks apropriados durante o build.
FILE_NAME.swift
Substitua FILE_NAME por qualquer string sem espaços. Seu arquivo deve ficar parecido com o seguinte:
empty_swift_file.swift
Etapa 2: Configure a inicialização atrasada (opcional)
Você pode optar por atrasar quando o SDK Swift da Braze é inicializado, o que é útil se o seu app precisar carregar uma configuração ou aguardar o consentimento do usuário antes de iniciar o SDK. A inicialização atrasada garante que as notificações por push e tokens por push recebidos antes da inicialização do SDK sejam enfileirados e processados assim que o SDK for inicializado.
Para usar a inicialização atrasada, a versão mínima do SDK da Braze é obrigatória:
Etapa 2.1: Prepare para a inicialização atrasada
Chame Braze.prepareForDelayedInitialization() o mais cedo possível no ciclo de vida do seu app, idealmente em ou antes de application(_:didFinishLaunchingWithOptions:). Isso garante que as notificações por push recebidas antes da inicialização do SDK sejam capturadas corretamente e processadas posteriormente.

Isso se aplica apenas a notificações por push da Braze. Outras notificações por push são tratadas normalmente pelos delegates do sistema.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Prepare the SDK for delayed initialization
[Braze prepareForDelayedInitialization];
// ... Additional non-Braze setup code
return YES;
}
Ao usar a inicialização atrasada, a automação de push é ativada implicitamente. Você pode personalizar a configuração de automação de push passando um parâmetro pushAutomation.
Etapa 2.2: Configure o comportamento de análise de push (opcional)
Quando a inicialização atrasada está ativada, os dados de análise de push são enfileirados por padrão. No entanto, você pode optar por enfileirar ou descartar explicitamente os dados de análise de push.
Enfileirar explicitamente
Para enfileirar explicitamente os dados de análise de push (comportamento padrão), passe .queue para o parâmetro analyticsBehavior. Os eventos de análise de push enfileirados antes da inicialização serão processados e enviados ao servidor após a inicialização.
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
Descartar
Para descartar os dados de análise de push recebidos antes da inicialização do SDK, passe .drop para o parâmetro analyticsBehavior. Com esta opção, qualquer evento de análise de push que ocorra enquanto o SDK não estiver inicializado será ignorado.
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];
Etapa 2.3: Personalize a automação de push (opcional)
Você pode personalizar a configuração de automação de push passando um parâmetro pushAutomation. Por padrão, todos os recursos de automação estão ativados, exceto requestAuthorizationAtLaunch.
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)
// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];
// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];
Etapa 2.4: Inicialize o SDK
Após o período de atraso escolhido (por exemplo, após buscar a configuração de um servidor ou após o consentimento do usuário), inicialize o SDK normalmente:
func initializeBraze() {
let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = true
let braze = Braze(configuration: configuration)
// Store the Braze instance for later use
AppDelegate.braze = braze
}
- (void)initializeBraze {
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
// Store the Braze instance for later use
AppDelegate.braze = braze;
}

Quando o SDK é inicializado, todas as notificações por push, tokens por push e deep links enfileirados são processados automaticamente.
Etapa 3: Atualize o app delegate

O texto a seguir assume que você já adicionou um AppDelegate ao seu projeto (que não é gerado por padrão) e que não está usando o recurso de inicialização atrasada. Se você não planeja usar um AppDelegate, certifique-se de inicializar o SDK da Braze o mais cedo possível, como durante o lançamento do app. Se estiver usando o recurso de inicialização atrasada, consulte a Etapa 2.4 para inicializar o SDK e ignore esta etapa.
Adicione a seguinte linha de código ao seu arquivo AppDelegate.swift para importar os recursos incluídos no SDK Swift da Braze:
import BrazeKit
Em seguida, adicione uma propriedade estática à sua classe AppDelegate para manter uma referência forte à instância da Braze durante todo o ciclo de vida do seu aplicativo:
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
}
O SDK exige que o seu aplicativo mantenha uma referência forte à instância da Braze durante todo o seu uso. Para evitar efeitos colaterais inesperados, certifique-se de ter capturado completamente essa referência antes de acessar ou modificar quaisquer propriedades ou métodos na instância da Braze.
Por fim, em AppDelegate.swift, adicione o seguinte trecho ao seu método application:didFinishLaunchingWithOptions::
let configuration = Braze.Configuration(
apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
Atualize YOUR-APP-IDENTIFIER-API-KEY e YOUR-BRAZE-ENDPOINT com o valor correto na página App Settings. Consulte nossos tipos de identificadores de API para saber mais sobre onde encontrar a chave de API do identificador do app.
Adicione a seguinte linha de código ao seu arquivo AppDelegate.m:
@import BrazeKit;
Em seguida, adicione uma variável estática ao seu arquivo AppDelegate.m para manter uma referência à instância da Braze durante todo o ciclo de vida do seu aplicativo:
static Braze *_braze;
@implementation AppDelegate
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
O SDK exige que o seu aplicativo mantenha uma referência forte à instância da Braze durante todo o seu uso. Para evitar efeitos colaterais inesperados, certifique-se de ter capturado completamente essa referência antes de acessar ou modificar quaisquer propriedades ou métodos na instância da Braze.
Por fim, dentro do arquivo AppDelegate.m, adicione o seguinte trecho ao seu método application:didFinishLaunchingWithOptions::
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
Atualize YOUR-APP-IDENTIFIER-API-KEY e YOUR-BRAZE-ENDPOINT com o valor correto na página Manage Settings. Consulte nossa documentação de API para saber mais sobre onde encontrar a chave de API do identificador do app.

Braze.init retorna imediatamente na thread de chamada. O SDK processa o trabalho de inicialização em uma fila interna. A leitura de propriedades síncronas, como braze.deviceId, diretamente após init na thread principal bloqueará a thread de chamada até que o SDK tenha concluído suas operações pós-inicialização. Para contextos na thread principal ou sensíveis à latência, use braze.getDeviceId(_:) (Swift) ou [braze getDeviceIdWithCompletion:^(NSString *deviceId) { ... }] (Objective-C) para ler o valor sem bloquear.
Configurações opcionais
Registro de logs
Para uma visão geral centralizada em todas as plataformas, consulte Registro detalhado. Para saber como interpretar a saída dos logs, consulte Leitura de logs detalhados.
Níveis de log
O nível de log padrão do SDK Swift da Braze é .error—que também é o nível mínimo suportado quando os logs estão ativados. Veja a lista completa de níveis de log:
| Swift | Objective-C | Descrição |
|---|---|---|
.debug |
BRZLoggerLevelDebug |
Registra informações de depuração + .info + .error. |
.info |
BRZLoggerLevelInfo |
Registra informações gerais do SDK (alterações de usuário, etc.) + .error. |
.error |
BRZLoggerLevelError |
Registra erros. |
.disabled |
BRZLoggerLevelDisabled |
Nenhum registro ocorre. |
Definindo o nível de log
Você pode atribuir o nível de log em tempo de execução no seu objeto Braze.Configuration. Para detalhes completos de uso, consulte Braze.Configuration.Logger.
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
Integrando o SDK do Cordova
Pré-requisitos
Antes de começar, verifique se seu ambiente é compatível com a versão mais recente do SDK Cordova da Braze.
Etapa 1: Adicione o SDK ao seu projeto

Adicione o SDK Cordova da Braze apenas usando os métodos a seguir. Não tente instalar usando outros métodos, pois isso pode causar uma falha de segurança.
Se você está no Cordova 6 ou posterior, pode adicionar o SDK diretamente do GitHub. Como alternativa, você pode baixar um ZIP do repositório do GitHub e adicionar o SDK manualmente.
Se você não pretende usar coleta de localização e geofences, use o branch master do GitHub.
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master
Se você pretende usar coleta de localização e geofences, use o geofence-branch do GitHub.
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

Você pode alternar entre master e geofence-branch a qualquer momento repetindo esta etapa.
Etapa 2: Configure seu projeto
Em seguida, adicione as seguintes preferências ao elemento platform no arquivo config.xml do seu projeto.
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />
Substitua os seguintes valores:
| Valor | Descrição |
|---|---|
BRAZE_API_KEY |
Sua chave da API REST da Braze. |
CUSTOM_API_ENDPOINT |
Um endpoint de API personalizado. Esse endpoint é usado para direcionar os dados da sua instância da Braze para o grupo de apps correto no seu dashboard da Braze. |
O elemento platform no seu arquivo config.xml deve ser semelhante ao seguinte:
<platform name="ios">
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
<platform name="android">
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
Sintaxe específica por plataforma
A seção a seguir aborda a sintaxe específica por plataforma ao usar Cordova com iOS ou Android.
Inteiros
As preferências de inteiros são lidas como representações de string, como no exemplo a seguir:
<platform name="ios">
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_session_timeout" value="5" />
</platform>
Devido à forma como o framework do Cordova 8.0.0+ lida com preferências, as preferências somente de inteiros (como IDs de remetente) devem ser definidas como strings prefixadas com str_, como no exemplo a seguir:
<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
As preferências booleanas são lidas pelo SDK usando as palavras-chave YES e NO como representação de string, como no exemplo a seguir:
<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>
As preferências booleanas são lidas pelo SDK usando as palavras-chave true e false como representação de string, como no exemplo a seguir:
<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>
Configurações opcionais
Você pode adicionar qualquer uma das seguintes preferências ao elemento platform no arquivo config.xml do seu projeto:
| Método | Descrição |
|---|---|
ios_api_key |
Define a chave de API para seu aplicativo. |
ios_api_endpoint |
Define o endpoint de SDK para seu aplicativo. |
ios_disable_automatic_push_registration |
Define se o registro automático de push deve ser desativado. |
ios_disable_automatic_push_handling |
Define se o tratamento automático de push deve ser desativado. |
ios_enable_idfa_automatic_collection |
Define se o SDK da Braze deve coletar automaticamente as informações do IDFA. Para saber mais, consulte a documentação do método IDFA da Braze. |
enable_location_collection |
Define se a coleta automática de localização está ativada (se o usuário permitir). O geofence-branch |
geofences_enabled |
Define se os geofences estão ativados. |
ios_session_timeout |
Define o tempo limite da sessão da Braze para seu aplicativo em segundos. O padrão é 10 segundos. |
sdk_authentication_enabled |
Define se deve ativar o recurso de autenticação do SDK. |
display_foreground_push_notifications |
Define se as notificações por push devem ser exibidas enquanto o aplicativo está em primeiro plano. |
ios_disable_un_authorization_option_provisional |
Define se UNAuthorizationOptionProvisional deve ser desativado. |
trigger_action_minimum_time_interval_seconds |
Define o intervalo mínimo de tempo em segundos entre os acionamentos. O padrão é 30 segundos. |
ios_push_app_group |
Define o ID do grupo de apps para extensões de push no iOS. |
ios_forward_universal_links |
Define se o SDK reconhece automaticamente e encaminha links universais para os métodos do sistema. Necessário para que deep links de notificações por push funcionem no iOS. O padrão é desativado. |
ios_log_level |
Define o nível mínimo de registro para Braze.Configuration.Logger. |
ios_use_uuid_as_device_id |
Define se um UUID gerado aleatoriamente deve ser usado como o ID do dispositivo. |
ios_flush_interval_seconds |
Define o intervalo em segundos entre os envios automáticos de dados. O padrão é 10 segundos. |
ios_use_automatic_request_policy |
Define se a política de solicitação para Braze.Configuration.Api deve ser automática ou manual. |
should_opt_in_when_push_authorized |
Define se o estado de inscrição de notificações de um usuário deve ser automaticamente definido como optedIn quando as permissões de push forem autorizadas. |

| Método | Descrição |
|---|---|
android_api_key |
Define a chave de API para seu aplicativo. |
android_api_endpoint |
Define o endpoint de SDK para seu aplicativo. |
android_small_notification_icon |
Define o ícone pequeno da notificação. |
android_large_notification_icon |
Define o ícone grande da notificação. |
android_notification_accent_color |
Define a cor de destaque da notificação usando uma representação hexadecimal. |
android_default_session_timeout |
Define o tempo limite da sessão da Braze para seu aplicativo em segundos. O padrão é 10 segundos. |
android_handle_push_deep_links_automatically |
Define se o SDK da Braze lida automaticamente com deep links de push. Necessário para que os deep links de notificações por push funcionem no Android. O padrão é desativado. |
android_log_level |
Define o nível de registro para seu aplicativo. O nível de registro padrão é 4 e registrará minimamente as informações. Para ativar o registro detalhado para depuração, use o nível de registro 2. |
firebase_cloud_messaging_registration_enabled |
Define se deve usar o Firebase Cloud Messaging para notificações por push. |
android_fcm_sender_id |
Define o ID do remetente do Firebase Cloud Messaging. |
enable_location_collection |
Define se a coleta automática de localização está ativada (se o usuário permitir). |
geofences_enabled |
Define se os geofences estão ativados. |
android_disable_auto_session_tracking |
Desativa o rastreamento automático de sessões pelo plugin Cordova do Android. Para saber mais, veja Desativando o rastreamento automático de sessão. |
sdk_authentication_enabled |
Define se deve ativar o recurso de autenticação do SDK. |
trigger_action_minimum_time_interval_seconds |
Define o intervalo mínimo de tempo em segundos entre os acionamentos. O padrão é 30 segundos. |
is_session_start_based_timeout_enabled |
Define se o comportamento do tempo limite da sessão deve ser baseado em eventos de início ou fim da sessão. |
default_notification_channel_name |
Define o nome visível para o usuário conforme visto via NotificationChannel.getName para o NotificationChannel padrão da Braze. |
default_notification_channel_description |
Define a descrição visível para o usuário conforme visto via NotificationChannel.getDescription para o NotificationChannel padrão da Braze. |
does_push_story_dismiss_on_click |
Define se uma story por push é automaticamente descartada quando clicada. |
is_fallback_firebase_messaging_service_enabled |
Define se o uso de um fallback do Firebase Cloud Messaging Service está ativado. |
fallback_firebase_messaging_service_classpath |
Define o classpath para o fallback do Firebase Cloud Messaging Service. |
is_content_cards_unread_visual_indicator_enabled |
Define se a barra de indicação visual de não lidos dos Content Cards está ativada. |
is_firebase_messaging_service_on_new_token_registration_enabled |
Define se o SDK da Braze registrará automaticamente tokens em com.google.firebase.messaging.FirebaseMessagingService.onNewToken. |
is_push_deep_link_back_stack_activity_enabled |
Define se a Braze adicionará uma atividade à pilha de atividades ao seguir automaticamente deep links para push. |
push_deep_link_back_stack_activity_class_name |
Define a atividade que a Braze adicionará à pilha de atividades ao seguir automaticamente deep links para push. |
should_opt_in_when_push_authorized |
Define se a Braze deve automaticamente aceitar o opt-in do usuário quando o push é autorizado. |

A seguir, veja um exemplo de arquivo config.xml com configurações adicionais:
<platform name="ios">
<preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
<preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
<preference name="com.braze.enable_location_collection" value="NO"/"YES" />
<preference name="com.braze.geofences_enabled" value="NO"/"YES" />
<preference name="com.braze.ios_session_timeout" value="5" />
<preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
<preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
<preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
<preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
<preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
<preference name="com.braze.ios_log_level" value="2" />
<preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
<platform name="android">
<preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
<preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
<preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
<preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
<preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
<preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
<preference name="com.braze.enable_location_collection" value="true"/"false" />
<preference name="com.braze.geofences_enabled" value="true"/"false" />
<preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
<preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
<preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
<preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
<preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
<preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
<preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
<preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
<preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
<preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
<preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>
Desativando o rastreamento automático de sessão (apenas Android)
Por padrão, o plugin do Android Cordova rastreia automaticamente as sessões. Para desativar o rastreamento automático de sessão, adicione a seguinte preferência ao elemento platform no arquivo config.xml do seu projeto:
<platform name="android">
<preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>
Para começar a rastrear as sessões novamente, chame BrazePlugin.startSessionTracking(). Lembre-se de que somente as sessões iniciadas após o próximo Activity.onStart() serão rastreadas.
Configurando canais de notificação para notificações heads-up (somente Android)
No Android 8.0 (API nível 26) e versões posteriores, o comportamento das notificações é controlado por meio de canais de notificação. Para exibir notificações heads-up — alertas que aparecem brevemente no topo da tela enquanto o usuário está usando o dispositivo — você precisa criar um canal de notificação com NotificationManager.IMPORTANCE_HIGH no código da sua aplicação Android.
Embora o SDK Cordova permita definir o nome e a descrição padrão do canal de notificação por meio das preferências do config.xml (default_notification_channel_name e default_notification_channel_description), o nível de importância deve ser configurado programaticamente no seu código nativo Android.
Exemplo: Criando um canal de notificação de alta importância
Adicione o seguinte código ao método onCreate() da classe Application da sua aplicação Android:
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.os.Build
override fun onCreate() {
super.onCreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channelId = "high_priority_channel"
val channelName = "High Priority Notifications"
val importance = NotificationManager.IMPORTANCE_HIGH
val channel = NotificationChannel(channelId, channelName, importance).apply {
description = "Notifications that require immediate attention"
}
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
}
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "high_priority_channel";
String channelName = "High Priority Notifications";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
channel.setDescription("Notifications that require immediate attention");
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
}
}
Após criar o canal no seu código Android, use o ID do canal ao enviar notificações por push pelo dashboard da Braze. Para saber mais sobre canais de notificação, consulte Canais de notificação Android.
Solução de problemas em builds iOS após atualizar o plugin
O SDK da Braze para Cordova 9.0.0 e versões posteriores usa o Swift SDK 9.0.0 ou posterior. A partir do Swift SDK 8.0.0, esse SDK nativo é compilado com o Xcode 15.2. Se o seu build iOS falhar após atualizar o plugin Cordova para 9.0.0 ou posterior, atualize o Xcode para 15.2 ou mais recente e confirme que ele corresponde ao changelog do Swift SDK para a versão nativa do iOS que seu plugin utiliza.
Após integrar o SDK Flutter da Braze no Android e iOS, você poderá usar a API da Braze nos seus apps Flutter escritos em Dart. Este plugin oferece funcionalidades básicas de análise de dados e permite integrar mensagens no app e Content Cards tanto para iOS quanto para Android com uma única base de código.
Integrando o SDK Flutter
Pré-requisitos
Antes de integrar o SDK Flutter da Braze, você precisará concluir o seguinte:
| Pré-requisito | Descrição |
|---|---|
| Identificador de app da API da Braze | Para localizar o identificador do seu app, acesse Configurações > APIs e Identificadores > Identificadores de App. Para saber mais, consulte Tipos de identificadores de API. |
| Endpoint do SDK da Braze | A URL do endpoint do seu SDK (por exemplo, sdk.<cluster>.braze.com). Seu endpoint dependerá da URL da Braze para sua instância. |
| SDK Flutter | Instale o SDK Flutter oficial e verifique se ele atende à versão mínima suportada do SDK Flutter da Braze. |
Etapa 1: Integre a biblioteca da Braze
Adicione o pacote do SDK Flutter da Braze pela linha de comando. Isso adicionará a linha apropriada ao seu pubspec.yaml.
flutter pub add braze_plugin
Etapa 2: Conclua a configuração nativa do SDK
2.1 Configure o Android
Forneça credenciais em tempo de compilação
Crie um arquivo braze.xml na pasta android/res/values do seu projeto. A chave de API e o endpoint são fornecidos em tempo de execução a partir do Dart, portanto não são obrigatórios neste arquivo. Para ativar a inicialização atrasada, adicione com_braze_enable_delayed_initialization ao arquivo:
<?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>
Forneça credenciais em tempo de execução
Alternativamente, você pode ativar a inicialização atrasada programaticamente no seu MainActivity.kt:
import com.braze.Braze
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Braze.enableDelayedInitialization(context = this)
}
}
Adicione as permissões necessárias ao seu arquivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 Configure o iOS
Dentro do seu método application(_:didFinishLaunchingWithOptions:) existente, adicione uma chamada a BrazePlugin.configure(_:postInitialization:) para armazenar sua configuração. A instância da Braze é criada posteriormente quando initialize() é chamado a partir do Dart. A chave de API e o endpoint não são definidos aqui.
Adicione o seguinte código ao seu AppDelegate.swift:
import BrazeKit
import braze_plugin
// ...
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// ... your existing didFinishLaunchingWithOptions setup ...
BrazePlugin.configure(
{ configuration in
configuration.logger.level = .info
// Set other non-API-key configurations here, such as:
// configuration.push.automation = true
// configuration.sessionTimeout = 60
},
postInitialization: { braze in
// Optional: Customize the Braze instance after creation.
// For example, set a custom in-app message presenter:
// let customPresenter = CustomInAppMessagePresenter()
// braze.inAppMessagePresenter = customPresenter
}
)
return true
}
Adicione o seguinte código ao seu AppDelegate.m:
@import BrazeKit;
@import braze_plugin;
// ...
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[BrazePlugin configure:^(BRZConfiguration *configuration) {
configuration.logger.level = BRZLoggerLevelInfo;
// Set other non-API-key configurations here, such as:
// configuration.push.automation = ...
// configuration.sessionTimeout = 60;
} postInitialization:^(Braze *braze) {
// Optional: customize the Braze instance after creation.
}];
return YES;
}

BrazePlugin.configure() apenas armazena sua configuração. Nenhuma instância da Braze existe até que initialize() seja chamado a partir do Dart; portanto, não chame nenhum método do SDK da Braze no AppDelegate após configure().
2.1 Configure o Android
Para conectar-se aos servidores da Braze, crie um arquivo braze.xml na pasta android/res/values do seu projeto. Cole o código a seguir e substitua a chave do identificador de API e o endpoint pelos seus valores:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
Adicione as permissões necessárias ao seu arquivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 Configure o iOS
Adicione as importações do SDK da Braze no topo do arquivo AppDelegate.swift:
import BrazeKit
import braze_plugin
No mesmo arquivo, crie o objeto de configuração da Braze no método application(_:didFinishLaunchingWithOptions:) e substitua a chave de API e o endpoint pelos valores do seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática no AppDelegate para acesso fácil:
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
}
Importe o SDK da Braze no topo do arquivo AppDelegate.m:
@import BrazeKit;
@import braze_plugin;
No mesmo arquivo, crie o objeto de configuração da Braze no método application:didFinishLaunchingWithOptions: e substitua a chave de API e o endpoint pelos valores do seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática no AppDelegate para acesso fácil:
- (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;
}
Etapa 3: Configure o plugin
Importe o plugin e crie uma única instância de BrazePlugin:
import 'package:braze_plugin/braze_plugin.dart';
final BrazePlugin braze = BrazePlugin();
Em seguida, chame initialize() com a chave de API do identificador do app e o endpoint do SDK para criar a instância da Braze. Veja as opções a seguir sobre onde chamar este método no fluxo do seu app.
Inicialização padrão
Para inicializar o SDK quando seu app é iniciado, chame initialize() em initState():
@override
void initState() {
super.initState();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}
Inicialização atrasada
Para adiar a inicialização do SDK para um momento posterior na sessão — por exemplo, após o usuário conceder consentimento ou concluir o login — chame initialize() quando estiver pronto:
// ...
void onUserConsent() {
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

Notificações por push e deep links recebidos antes de initialize() ser chamado não são processados no iOS. No Android, deep links de notificações por push não são resolvidos enquanto o SDK aguarda a inicialização. Se o seu app depende de push ou deep links na inicialização, use a inicialização padrão em vez disso.
Chaves de API específicas por plataforma
Como seus apps Android e iOS usam chaves de API diferentes, use a detecção de plataforma:
import 'dart:io' show Platform;
if (Platform.isAndroid) {
braze.initialize("<ANDROID_API_KEY>", "<BRAZE_ENDPOINT>");
} else if (Platform.isIOS) {
braze.initialize("<IOS_API_KEY>", "<BRAZE_ENDPOINT>");
}
Reinicialização
Você pode chamar initialize() várias vezes para reinicializar o SDK com uma chave de API e endpoint diferentes durante a sessão. Cada chamada encerra a instância anterior da Braze e cria uma nova.

Para evitar comportamentos indefinidos, aloque e use apenas uma única instância de BrazePlugin no seu código Dart. Todas as chamadas de métodos do SDK feitas antes de initialize() são ignoradas no iOS; portanto, chame initialize() antes de usar qualquer outro método da Braze.
Para importar o plugin no seu código Dart, use o seguinte:
import 'package:braze_plugin/braze_plugin.dart';
Em seguida, inicialize uma instância do plugin da Braze chamando new BrazePlugin() como no nosso app de exemplo.

Para evitar comportamentos indefinidos, aloque e use apenas uma única instância de BrazePlugin no seu código Dart.
Testando a integração
Você pode verificar se o SDK está integrado conferindo as estatísticas de sessão no dashboard. Se executar o aplicativo em qualquer uma das plataformas, você verá uma nova sessão no dashboard (na seção Visão geral).
Abra uma sessão para um usuário específico chamando o seguinte código no seu app.
BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");
Pesquise o usuário com {some-user-id} no dashboard em Audience > Search Users. Lá, você pode verificar se os dados de sessão e dispositivo foram registrados.
Sobre o SDK React Native da Braze
A integração do SDK React Native da Braze oferece funcionalidade básica de análise de dados e permite integrar mensagens no app e Content Cards tanto para iOS quanto para Android com uma única base de código.
Compatibilidade com a Nova Arquitetura
A seguinte versão mínima do SDK é compatível com todos os apps que utilizam a Nova Arquitetura do React Native:
A partir da versão 6.0.0 do SDK, a Braze utiliza um Turbo Module do React Native, que é compatível tanto com a Nova Arquitetura quanto com a arquitetura de bridge legada. Isso significa que nenhuma configuração adicional é necessária.

Se o seu app iOS estiver em conformidade com RCTAppDelegate e seguir nossa configuração anterior de AppDelegate, revise os exemplos em Configuração nativa completa para evitar falhas ao se inscrever em eventos no Turbo Module.
Requisitos de versão do React e React Native
A Braze não publica versões mínimas separadas do React além do que o SDK do React Native suporta. Para integrar o SDK, use o React Native versão 0.71 ou posterior. Para a lista completa de versões do React Native suportadas, consulte o repositório GitHub do SDK React Native.
Ao atualizar o React, o React Native ou o SDK da Braze, revise o CHANGELOG do SDK para verificar alterações incompatíveis antes de fazer o deploy.
Integrando o SDK React Native
Pré-requisitos
Para versões suportadas do React Native e orientações de atualização, consulte Requisitos de versão do React e React Native.
Etapa 1: Integre a biblioteca da Braze
npm install @braze/react-native-sdk
yarn add @braze/react-native-sdk
Etapa 2: Complete a configuração nativa
Se o seu app usa Expo, consulte Usando o plugin Expo. Se o seu app usa React Native puro, consulte Usando React Native CLI. Escolha um método de configuração em cada guia de versão: plugin Expo ou React Native CLI.
Método 1: Usando o plugin Expo
2.1 Instale o plugin Braze Expo {#21-install-the-braze-expo-plugin}
Certifique-se de que a versão do seu plugin Braze Expo seja pelo menos 4.1.0. Para a lista completa de versões suportadas, consulte o repositório do plugin Braze Expo.
O trecho de código a seguir mostra o comando para instalar o plugin Braze Expo:
npx expo install @braze/expo-plugin
2.2 Adicione o plugin ao seu app.json {#22-add-the-plugin-to-your-appjson}
No seu app.json, adicione o plugin Braze Expo. A chave de API e o endpoint não são mais definidos aqui. Forneça-os em tempo de execução por meio de Braze.initialize() a partir do JavaScript. Adicione os seguintes parâmetros de configuração opcionais com base nas necessidades da sua implementação:
| Método | Tipo | Descrição |
|---|---|---|
enableBrazeIosPush |
boolean | Apenas iOS. Se a Braze deve ser usada para lidar com notificações por push no iOS. |
enableFirebaseCloudMessaging |
boolean | Apenas Android. Se o Firebase Cloud Messaging deve ser usado para notificações por push. |
firebaseCloudMessagingSenderId |
string | Apenas Android. Seu ID de remetente do Firebase Cloud Messaging. |
sessionTimeout |
integer | O tempo limite de sessão da Braze para a sua aplicação em segundos. |
enableSdkAuthentication |
boolean | Se o recurso de autenticação do SDK deve ser ativado. |
logLevel |
integer | O nível de log da sua aplicação. O nível de log padrão é 8 e registra minimamente informações. Para ativar o registro detalhado para depuração, use o nível de log 0. |
minimumTriggerIntervalInSeconds |
integer | O intervalo mínimo de tempo em segundos entre disparos. O padrão é 30 segundos. |
enableAutomaticLocationCollection |
boolean | Se a coleta automática de localização está ativada (se o usuário permitir). |
enableGeofence |
boolean | Se geofences estão ativadas. |
enableAutomaticGeofenceRequests |
boolean | Se as solicitações de geofence devem ser feitas automaticamente. |
dismissModalOnOutsideTap |
boolean | Apenas iOS. Se uma mensagem modal no app é dispensada quando o usuário clica fora da mensagem no app. |
androidHandlePushDeepLinksAutomatically |
boolean | Apenas Android. Se o SDK da Braze deve lidar automaticamente com deep links de push. |
androidPushNotificationHtmlRenderingEnabled |
boolean | Apenas Android. Define se o conteúdo de texto em uma notificação por push deve ser interpretado e renderizado como HTML usando android.text.Html.fromHtml. |
androidNotificationAccentColor |
string | Apenas Android. Define a cor de destaque da notificação Android. |
androidNotificationLargeIcon |
string | Apenas Android. Define o ícone grande da notificação Android. |
androidNotificationSmallIcon |
string | Apenas Android. Define o ícone pequeno da notificação Android. |
iosRequestPushPermissionsAutomatically |
boolean | Apenas iOS. Se o usuário deve ser automaticamente solicitado a conceder permissões de push ao iniciar o app. |
enableBrazeIosRichPush |
boolean | Apenas iOS. Se os recursos de push avançado devem ser ativados para iOS. |
enableBrazeIosPushStories |
boolean | Apenas iOS. Se o Braze Push Stories deve ser ativado para iOS. |
iosPushStoryAppGroup |
string | Apenas iOS. O grupo de apps usado para Push Stories no iOS. |
iosUseUUIDAsDeviceId |
boolean | Apenas iOS. Se o ID do dispositivo usa um UUID gerado aleatoriamente. |
iosForwardUniversalLinks |
boolean | Apenas iOS. Especifica se o SDK deve reconhecer e encaminhar automaticamente universal links para os métodos do sistema (padrão: false). |
O trecho de código a seguir mostra um exemplo de configuração app.json:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
]
]
}
}
Configurando ícones de notificação por push no Android
Ao usar androidNotificationLargeIcon e androidNotificationSmallIcon, siga estas práticas recomendadas para a exibição correta dos ícones:
Posicionamento e formato do ícone
Para usar ícones personalizados de notificação por push com o plugin Braze Expo:
- Crie seus arquivos de ícone seguindo os requisitos de ícone listados em Requisitos de ícone.
- Coloque-os nos diretórios nativos Android do seu projeto em
android/app/src/main/res/drawable-<density>/. Por exemplo, useandroid/app/src/main/res/drawable-mdpi/eandroid/app/src/main/res/drawable-hdpi/. - Alternativamente, se você gerencia ativos no diretório React Native, pode usar a configuração de ícone no app.json do Expo ou criar um plugin de configuração do Expo para copiar os ícones para as pastas drawable do Android durante o prebuild.
O plugin Braze Expo referencia esses ícones usando o sistema de recursos drawable do Android.
Requisitos de ícone
- Ícone pequeno: Deve ser uma silhueta branca sobre fundo transparente (este é um requisito da plataforma Android)
- Ícone grande: Pode ser uma imagem colorida completa.
- Formato: O formato PNG é recomendado.
- Nomenclatura: Use apenas letras minúsculas, números e underscores (por exemplo,
my_large_icon.png)
Configuração no app.json
O trecho de código a seguir mostra como referenciar ícones de notificação Android no app.json usando o prefixo @drawable/:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}

Não use caminhos de arquivo relativos (como src/assets/images/icon.png) nem inclua a extensão do arquivo ao referenciar ícones. O plugin Expo requer o prefixo @drawable/ para localizar corretamente os ícones nas pastas nativas do Android após o processo de prebuild.
Como funciona
O plugin Braze Expo referencia seus arquivos de ícone a partir dos diretórios drawable do Android. Quando você executa npx expo prebuild, o Expo gera a estrutura nativa do projeto Android. Seus ícones devem estar presentes nas pastas drawable do Android (colocados manualmente ou copiados por meio de um plugin de configuração) antes do processo de build. O plugin então configura o SDK da Braze para usar esses recursos drawable por seus nomes (sem caminho ou extensão), por isso o prefixo @drawable/ é necessário na sua configuração.
Para saber mais sobre ícones de notificação Android, consulte as diretrizes de ícones de notificação do Android.
2.3 Compile e execute sua aplicação {#23-build-and-run-your-application}
O prebuild da sua aplicação gera os arquivos nativos necessários para o funcionamento do plugin Braze Expo.
O trecho de código a seguir mostra o comando para fazer o prebuild da sua aplicação:
npx expo prebuild
Execute sua aplicação conforme especificado na documentação do Expo. Se você fizer alterações nas opções de configuração, faça o prebuild e execute a aplicação novamente.
Método 2: Usando React Native CLI
Configure o Android
2.1 Adicione o plugin Kotlin Gradle
O trecho de código a seguir mostra como adicionar o plugin Kotlin Gradle no build.gradle de nível superior do seu projeto em buildscript > dependencies:
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
Isso adiciona Kotlin ao seu projeto.
2.2 Configure o SDK da Braze
Crie um arquivo braze.xml na pasta res/values do seu projeto. A chave de API e o endpoint são fornecidos em tempo de execução a partir do JavaScript, portanto não são necessários neste arquivo. O trecho de código a seguir mostra como ativar a inicialização atrasada com com_braze_enable_delayed_initialization:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="com_braze_enable_delayed_initialization">true</bool>
</resources>

Você ainda pode adicionar outros valores de configuração nativos ao braze.xml (como push, tempo limite de sessão e configurações de log). Eles são aplicados automaticamente quando Braze.initialize() é chamado a partir do JavaScript.
O trecho de código a seguir mostra as permissões necessárias para o seu arquivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

No SDK Android da Braze versão 12.2.0 ou posterior, você pode importar automaticamente a biblioteca android-sdk-location definindo importBrazeLocationLibrary=true no seu arquivo gradle.properties.
2.3 Implemente o rastreamento de sessão do usuário
As chamadas para openSession() e closeSession() são tratadas automaticamente.
O trecho de código a seguir mostra o que adicionar ao método onCreate() da sua classe MainApplication:
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
2.4 Lide com atualizações de intent
Se sua MainActivity tem android:launchMode definido como singleTask, o trecho de código a seguir mostra o que adicionar à sua classe MainActivity:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
Configure o iOS
2.5 (Opcional) Configure o Podfile para XCFrameworks dinâmicos
Para importar certas bibliotecas da Braze, como BrazeUI, em um arquivo Objective-C++, você deve usar a sintaxe #import. A partir da versão 7.4.0 do SDK Swift da Braze, os binários possuem um canal de distribuição opcional como XCFrameworks dinâmicos, que são compatíveis com essa sintaxe.
Se você quiser usar esse canal de distribuição, substitua manualmente os locais de origem do CocoaPods no seu Podfile. Consulte este exemplo e substitua {your-version} pela versão relevante que deseja importar:
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
2.6 Instale os pods
Como o React Native vincula automaticamente as bibliotecas à plataforma nativa, você pode instalar o SDK com a ajuda do CocoaPods.
O trecho de código a seguir mostra como instalar os pods a partir da pasta raiz do projeto:
# To install using the React Native New Architecture
cd ios && pod install
# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install
2.7 Configure o SDK da Braze
Use BrazeReactInitializer.configure no seu AppDelegate para registrar a configuração nativa. Os closures que você fornece são armazenados e aplicados posteriormente quando Braze.initialize(apiKey, endpoint) é chamado a partir do JavaScript.
O trecho de código a seguir mostra como importar o SDK da Braze no topo do arquivo AppDelegate.swift:
import BrazeKit
import braze_react_native_sdk
No método application(_:didFinishLaunchingWithOptions:), registre sua configuração nativa usando BrazeReactInitializer.configure. Não defina a chave de API ou o endpoint aqui. Eles são fornecidos a partir do JavaScript por meio de Braze.initialize().
- Closure
configure: Recebe umaBraze.Configuratione permite definir propriedades de configuração nativa (log, push, sessões e mais). - Closure
postInitialization(opcional): Recebe a instânciaBrazeativa após a criação, para configurações que exigem a instância (por exemplo, armazenar uma referência ou definir delegates).
O trecho de código a seguir mostra um exemplo de implementação do AppDelegate.swift que usa BrazeReactInitializer.configure:
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
BrazeReactInitializer.configure { configuration in
configuration.logger.level = .info
configuration.push.automation = true
} postInitialization: { braze in
AppDelegate.braze = braze
}
// ... React Native setup
return true
}
}
O trecho de código a seguir mostra como importar o SDK da Braze no topo do arquivo AppDelegate.m:
@import BrazeKit;
@import braze_react_native_sdk;
No método application:didFinishLaunchingWithOptions:, registre sua configuração nativa usando BrazeReactInitializer. Não defina a chave de API ou o endpoint aqui. Eles são fornecidos a partir do JavaScript por meio de Braze.initialize().
O trecho de código a seguir mostra um exemplo de implementação do AppDelegate.m que usa BrazeReactInitializer:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[BrazeReactInitializer configure:^(BRZConfiguration *configuration) {
configuration.logger.level = BRZLoggerLevelInfo;
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
} postInitialization:^(Braze *braze) {
// Store the Braze instance for later use.
}];
/* Other configuration */
return YES;
}

BrazeReactInitializer.configure() apenas armazena sua configuração. Nenhuma instância da Braze existe até que Braze.initialize() seja chamado a partir do JavaScript. Portanto, não chame nenhum método do SDK da Braze no AppDelegate após configure().
Quando você chama Braze.initialize() novamente, os mesmos blocos configure e postInitialization são aplicados à nova instância da Braze.
Método 1: Usando o plugin Expo
Etapa 2.1: Instale o plugin Braze Expo
Certifique-se de que a versão do SDK React Native da Braze seja pelo menos 1.37.0. Para a lista completa de versões suportadas, consulte o repositório React Native da Braze.
O trecho de código a seguir mostra o comando para instalar o plugin Braze Expo:
npx expo install @braze/expo-plugin
Etapa 2.2: Adicione o plugin ao seu app.json
No seu app.json, adicione o plugin Braze Expo. Você pode fornecer as seguintes opções de configuração:
| Método | Tipo | Descrição |
|---|---|---|
androidApiKey |
string | Obrigatório. A chave de API para a sua aplicação Android, localizada no dashboard da Braze em Manage Settings. |
iosApiKey |
string | Obrigatório. A chave de API para a sua aplicação iOS, localizada no dashboard da Braze em Manage Settings. |
baseUrl |
string | Obrigatório. O endpoint do SDK para a sua aplicação, localizado no dashboard da Braze em Manage Settings. |
enableBrazeIosPush |
boolean | Apenas iOS. Se a Braze deve ser usada para lidar com notificações por push no iOS. Introduzido no React Native SDK v1.38.0 e Expo Plugin v0.4.0. |
enableFirebaseCloudMessaging |
boolean | Apenas Android. Se o Firebase Cloud Messaging deve ser usado para notificações por push. Introduzido no React Native SDK v1.38.0 e Expo Plugin v0.4.0. |
firebaseCloudMessagingSenderId |
string | Apenas Android. Seu ID de remetente do Firebase Cloud Messaging. Introduzido no React Native SDK v1.38.0 e Expo Plugin v0.4.0. |
sessionTimeout |
integer | O tempo limite de sessão da Braze para a sua aplicação em segundos. |
enableSdkAuthentication |
boolean | Se o recurso de autenticação do SDK deve ser ativado. |
logLevel |
integer | O nível de log da sua aplicação. O nível de log padrão é 8 e registra minimamente informações. Para ativar o registro detalhado para depuração, use o nível de log 0. |
minimumTriggerIntervalInSeconds |
integer | O intervalo mínimo de tempo em segundos entre disparos. O padrão é 30 segundos. |
enableAutomaticLocationCollection |
boolean | Se a coleta automática de localização está ativada (se o usuário permitir). |
enableGeofence |
boolean | Se geofences estão ativadas. |
enableAutomaticGeofenceRequests |
boolean | Se as solicitações de geofence devem ser feitas automaticamente. |
dismissModalOnOutsideTap |
boolean | Apenas iOS. Se uma mensagem modal no app é dispensada quando o usuário clica fora da mensagem no app. |
androidHandlePushDeepLinksAutomatically |
boolean | Apenas Android. Se o SDK da Braze deve lidar automaticamente com deep links de push. |
androidPushNotificationHtmlRenderingEnabled |
boolean | Apenas Android. Define se o conteúdo de texto em uma notificação por push deve ser interpretado e renderizado como HTML usando android.text.Html.fromHtml. |
androidNotificationAccentColor |
string | Apenas Android. Define a cor de destaque da notificação Android. |
androidNotificationLargeIcon |
string | Apenas Android. Define o ícone grande da notificação Android. |
androidNotificationSmallIcon |
string | Apenas Android. Define o ícone pequeno da notificação Android. |
iosRequestPushPermissionsAutomatically |
boolean | Apenas iOS. Se o usuário deve ser automaticamente solicitado a conceder permissões de push ao iniciar o app. |
enableBrazeIosRichPush |
boolean | Apenas iOS. Se os recursos de push avançado devem ser ativados para iOS. |
enableBrazeIosPushStories |
boolean | Apenas iOS. Se o Braze Push Stories deve ser ativado para iOS. |
iosPushStoryAppGroup |
string | Apenas iOS. O grupo de apps usado para Push Stories no iOS. |
iosUseUUIDAsDeviceId |
boolean | Apenas iOS. Se o ID do dispositivo usará um UUID gerado aleatoriamente. |
iosForwardUniversalLinks |
boolean | Apenas iOS. Especifica se o SDK deve reconhecer e encaminhar automaticamente universal links para os métodos do sistema (padrão: false). Quando ativado, o SDK encaminhará automaticamente os universal links para os métodos do sistema definidos em Supporting universal links in your app. Introduzido no React Native SDK v11.1.0 e Expo Plugin v3.2.0. |
O trecho de código a seguir mostra um exemplo de configuração app.json:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"baseUrl": "YOUR-SDK-ENDPOINT",
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
],
]
}
}
Configurando ícones de notificação por push no Android
Ao usar androidNotificationLargeIcon e androidNotificationSmallIcon, siga estas práticas recomendadas para a exibição correta dos ícones:
Posicionamento e formato do ícone
Para usar ícones personalizados de notificação por push com o plugin Braze Expo:
- Crie seus arquivos de ícone seguindo os requisitos de ícone listados em Requisitos de ícone.
- Coloque-os nos diretórios nativos Android do seu projeto em
android/app/src/main/res/drawable-<density>/(por exemplo,android/app/src/main/res/drawable-mdpi/,drawable-hdpi/, ou similar.) - Alternativamente, se você gerencia ativos no diretório React Native, pode usar a configuração de ícone no app.json do Expo ou criar um plugin de configuração do Expo para copiar os ícones para as pastas drawable do Android durante o prebuild.
O plugin Braze Expo referencia esses ícones usando o sistema de recursos drawable do Android.
Requisitos de ícone
- Ícone pequeno: Deve ser uma silhueta branca sobre fundo transparente (este é um requisito da plataforma Android)
- Ícone grande: Pode ser uma imagem colorida completa.
- Formato: O formato PNG é recomendado.
- Nomenclatura: Use apenas letras minúsculas, números e underscores (por exemplo,
my_large_icon.png)
Configuração no app.json
O trecho de código a seguir mostra como referenciar ícones de notificação Android no app.json usando o prefixo @drawable/:
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}

Não use caminhos de arquivo relativos (como src/assets/images/icon.png) nem inclua a extensão do arquivo ao referenciar ícones. O plugin Expo requer o prefixo @drawable/ para localizar corretamente os ícones nas pastas nativas do Android após o processo de prebuild.
Como funciona
O plugin Braze Expo referencia seus arquivos de ícone a partir dos diretórios drawable do Android. Quando você executa npx expo prebuild, o Expo gera a estrutura nativa do projeto Android. Seus ícones devem estar presentes nas pastas drawable do Android (colocados manualmente ou copiados por meio de um plugin de configuração) antes do processo de build. O plugin então configura o SDK da Braze para usar esses recursos drawable por seus nomes (sem caminho ou extensão), por isso o prefixo @drawable/ é necessário na sua configuração.
Para saber mais sobre ícones de notificação Android, consulte as diretrizes de ícones de notificação do Android.
Etapa 2.3: Compile e execute sua aplicação
O prebuild da sua aplicação gera os arquivos nativos necessários para o funcionamento do plugin Braze Expo.
O trecho de código a seguir mostra o comando para fazer o prebuild da sua aplicação:
npx expo prebuild
Execute sua aplicação conforme especificado na documentação do Expo. Tenha em mente que, se você fizer alterações nas opções de configuração, será necessário fazer o prebuild e executar a aplicação novamente.
Método 2: Usando React Native CLI
Configure o Android
Etapa 2.1: Adicione o plugin Kotlin Gradle
O trecho de código a seguir mostra como adicionar o plugin Kotlin Gradle no build.gradle de nível superior do seu projeto em buildscript > dependencies:
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
Isso adiciona Kotlin ao seu projeto.
Etapa 2.2: Configure o SDK da Braze
Para se conectar aos servidores da Braze, crie um arquivo braze.xml na pasta res/values do seu projeto. O trecho de código a seguir mostra um exemplo de configuração braze.xml. Substitua a chave de API e o endpoint pelos seus valores:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
O trecho de código a seguir mostra as permissões necessárias para o seu arquivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

No SDK Android da Braze versão 12.2.0 ou posterior, você pode importar automaticamente a biblioteca android-sdk-location definindo importBrazeLocationLibrary=true no seu arquivo gradle.properties.
Etapa 2.3: Implemente o rastreamento de sessão do usuário
As chamadas para openSession() e closeSession() são tratadas automaticamente.
O trecho de código a seguir mostra o que adicionar ao método onCreate() da sua classe MainApplication:
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
Etapa 2.4: Lide com atualizações de intent
Se sua MainActivity tem android:launchMode definido como singleTask, o trecho de código a seguir mostra o que adicionar à sua classe MainActivity:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
Configure o iOS
Etapa 2.5: (Opcional) Configure o Podfile para XCFrameworks dinâmicos
Para importar certas bibliotecas da Braze, como BrazeUI, em um arquivo Objective-C++, você deve usar a sintaxe #import. A partir da versão 7.4.0 do SDK Swift da Braze, os binários possuem um canal de distribuição opcional como XCFrameworks dinâmicos, que são compatíveis com essa sintaxe.
Se você quiser usar esse canal de distribuição, substitua manualmente os locais de origem do CocoaPods no seu Podfile. O trecho de código a seguir mostra um exemplo de substituição. Substitua {your-version} pela versão relevante que deseja importar:
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
Etapa 2.6: Instale os pods
Como o React Native vincula automaticamente as bibliotecas à plataforma nativa, você pode instalar o SDK com a ajuda do CocoaPods.
O trecho de código a seguir mostra como instalar os pods a partir da pasta raiz do projeto:
# 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
Etapa 2.7: Configure o SDK da Braze
O trecho de código a seguir mostra como importar o SDK da Braze no topo do arquivo AppDelegate.swift:
import BrazeKit
import braze_react_native_sdk
No método application(_:didFinishLaunchingWithOptions:), substitua a chave de API e o endpoint pelos valores do seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática no AppDelegate para facilitar o acesso.

Nosso exemplo assume uma implementação de RCTAppDelegate, que fornece diversas abstrações na configuração do React Native. Se você estiver usando uma configuração diferente para o seu app, ajuste sua implementação conforme necessário.
O trecho de código a seguir mostra um exemplo de configuração do AppDelegate.swift:
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "{BRAZE_API_KEY}",
endpoint: "{BRAZE_ENDPOINT}")
// Enable logging and customize the configuration here.
configuration.logger.level = .info
let braze = BrazeReactBridge.perform(
#selector(BrazeReactBridge.initBraze(_:)),
with: configuration
).takeUnretainedValue() as! Braze
AppDelegate.braze = braze
/* Other configuration */
return true
}
// MARK: - AppDelegate.braze
static var braze: Braze? = nil
O trecho de código a seguir mostra como importar o SDK da Braze no topo do arquivo AppDelegate.m:
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"
No método application:didFinishLaunchingWithOptions:, substitua a chave de API e o endpoint pelos valores do seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática no AppDelegate para facilitar o acesso.

Nosso exemplo assume uma implementação de RCTAppDelegate, que fornece diversas abstrações na configuração do React Native. Se você estiver usando uma configuração diferente para o seu app, ajuste sua implementação conforme necessário.
O trecho de código a seguir mostra um exemplo de configuração do AppDelegate.m:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
endpoint:@"{BRAZE_ENDPOINT}"];
// Enable logging and customize the configuration here.
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
/* Other configuration */
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
Etapa 3: Inicialize o SDK
O trecho de código a seguir mostra como importar a biblioteca no seu código React Native:
import Braze from "@braze/react-native-sdk";

O React Native SDK 19.2.0+ suporta a inicialização da Braze a partir da camada React Native ou a partir das camadas nativas iOS e Android. Inicialize a partir da camada React Native para usar a inicialização atrasada, que inicia o SDK após um evento como consentimento ou login. Se o seu app inicializa a Braze nas camadas nativas atualmente, você pode manter essa configuração ao atualizar. Para confirmar como as notificações se comportam em cada configuração, consulte Notificações por push na inicialização a frio.
Em seguida, chame Braze.initialize() com a chave de API do identificador do app e o endpoint do SDK para criar a instância da Braze. Veja as opções a seguir de onde chamar este método no fluxo do seu app.
Inicialização padrão
O trecho de código a seguir mostra como inicializar o SDK quando seu app inicia, chamando Braze.initialize() em um useEffect:
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}, []);
return (
// Your app components
);
};
Inicialização atrasada
O trecho de código a seguir mostra como adiar a inicialização do SDK para mais tarde na sessão. Por exemplo, após o usuário conceder consentimento ou concluir o login:
function onUserConsent() {
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}

No iOS, as notificações por push recebidas antes de Braze.initialize() são enfileiradas e processadas após a inicialização. No Android, a Braze não resolve deep links de notificações por push enquanto o SDK aguarda a inicialização. Para manter as notificações funcionando quando uma delas abre seu app, consulte Notificações por push na inicialização a frio.
Chaves de API específicas por plataforma
O trecho de código a seguir mostra como usar a detecção de plataforma quando seus apps Android e iOS usam chaves de API diferentes:
import { Platform } from "react-native";
import Braze from "@braze/react-native-sdk";
const apiKey = Platform.select({
android: "YOUR-ANDROID-API-KEY",
ios: "YOUR-IOS-API-KEY",
}) ?? "";
Braze.initialize(apiKey, "YOUR-SDK-ENDPOINT");
Reinicialização
Você pode chamar Braze.initialize() várias vezes para reinicializar o SDK com uma chave de API e endpoint diferentes durante a sessão. Cada chamada destrói a instância anterior da Braze e cria uma nova.

Todas as chamadas de métodos do SDK feitas antes de Braze.initialize() são ignoradas no iOS. Portanto, chame Braze.initialize() antes de usar quaisquer outros métodos da Braze.
Notificações por push na inicialização a frio
Quando uma notificação abre seu app a partir de um estado encerrado, a Braze armazena a carga útil da notificação na camada nativa antes do React Native carregar. Por isso, inicializar a partir da camada React Native não altera se a carga útil chega ao seu app. Para lidar com essas notificações, adicione os hooks nativos e depois leia a carga útil no seu código React Native.
No Android, chame BrazeReactUtils.populateInitialPushPayloadFromIntent(intent) no método onCreate() da sua classe MainActivity:
import com.braze.reactbridge.BrazeReactUtils
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
}
No iOS, chame populateInitialPayload(fromLaunchOptions:) no método application(_:didFinishLaunchingWithOptions:) do seu AppDelegate:
if let launchOptions {
BrazeReactUtils.sharedInstance().populateInitialPayload(fromLaunchOptions: launchOptions)
}
Em seguida, leia a carga útil no seu código React Native:
Braze.getInitialPushPayload((pushPayload) => {
if (pushPayload) {
// Handle the notification, such as navigating to the pushPayload.url value
}
});

Quando a inicialização atrasada está ativada no Android, a Braze abre sua activity principal em vez de resolver o deep link na notificação e, em seguida, passa os dados da notificação para essa activity. Gerencie a navegação no seu código React Native usando o valor url de Braze.getInitialPushPayload().
As configurações de registro de push permanecem na sua configuração nativa para ambos os locais de inicialização, e a Braze as aplica quando Braze.initialize() é executado:
- No Android, defina
com_braze_firebase_cloud_messaging_registration_enabledecom_braze_firebase_cloud_messaging_sender_idembraze.xml. - No iOS, defina as propriedades
pushno objeto de configuração no closureconfigureque você passa paraBrazeReactInitializer.configure.
Se o seu app depende de deep links de notificações que o abrem a partir de um estado encerrado, use o React Native SDK 21.1.0 ou posterior. Essas versões incluem correções para capturar a carga útil inicial de push e resolver deep links de push no Android. Para a lista completa de alterações, consulte o changelog do SDK React Native.
Para o React Native SDK 19.1.0 e anteriores, a inicialização nativa acontece na Etapa 2. Importe a biblioteca no seu código React Native para chamar os métodos da Braze. Para mais detalhes, confira nosso projeto de exemplo.
import Braze from "@braze/react-native-sdk";
Etapa 4: Teste a integração (opcional)
Você pode verificar se o SDK foi integrado checando as estatísticas de sessão no dashboard. Se você executar sua aplicação em qualquer plataforma, deverá ver uma nova sessão no dashboard (na seção Overview).
O trecho de código a seguir mostra como abrir uma sessão para um usuário específico no seu app:
import Braze from "@braze/react-native-sdk";
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
Braze.changeUser("{some-user-id}");
Procure pelo usuário com {some-user-id} no dashboard em Audience > Search Users. Lá, você pode verificar se os dados de sessão e dispositivo foram registrados.
Para testar a integração do SDK, o trecho de código a seguir mostra como iniciar uma nova sessão em qualquer plataforma para um usuário.
Braze.changeUser("userId");
O trecho de código a seguir mostra um exemplo de atribuição do ID do usuário na inicialização do app:
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.changeUser("some-user-id");
}, []);
return (
<div>
...
</div>
)
No dashboard da Braze, acesse Pesquisa de usuário e procure pelo usuário com o ID correspondente a some-user-id. Lá, você pode verificar se os dados de sessão e dispositivo foram registrados.
Testando com Jest
Os testes unitários em React Native que importam o SDK da Braze precisam de mocks para os módulos nativos e para o Braze Turbo Module. O repositório do SDK React Native da Braze inclui uma configuração de referência para Jest em __tests__/jest.setup.js. Adicione esse arquivo (ou uma cópia adaptada) ao setupFiles na configuração do Jest para que NativeEventEmitter, TurboModuleRegistry e BrazeReactBridge sejam mockados ao testar componentes que chamam APIs da Braze.
Próximos passos
Após integrar o SDK da Braze, você pode começar a implementar recursos comuns de envio de mensagens:
- Notificações por push: Configure e envie notificações por push para seus usuários.
- In-App Messages: Exiba mensagens contextuais dentro do seu app.
- Banners: Mostre banners persistentes na interface do seu app.
Integrando o Roku SDK
Etapa 1: Adicionar arquivos
Os arquivos do SDK da Braze podem ser encontrados no diretório sdk_files no repositório do Braze Roku SDK.
- Adicione
BrazeSDK.brsao seu app no diretóriosource. - Adicione
BrazeTask.brseBrazeTask.xmlao seu app no diretóriocomponents.
Etapa 2: Adicionar referências
Adicione uma referência ao BrazeSDK.brs na sua cena principal usando o seguinte elemento script:
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>
Etapa 3: Configurar
Em main.brs, defina a configuração da Braze no nó global:
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})
Você pode encontrar seu endpoint de SDK e chave de API no dashboard da Braze.
Etapa 4: Inicializar a Braze
Inicialize a instância da Braze:
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)
Configurações opcionais
Registro de logs
Para depurar sua integração com a Braze, você pode visualizar o console de depuração do Roku para os logs da Braze. Consulte Depuração de código da Roku Developers para saber mais.
Sobre o SDK Unity da Braze
Para uma lista completa de tipos, funções, variáveis e mais, consulte o Arquivo de Declaração Unity. Além disso, se você já integrou o Unity manualmente para iOS, pode mudar para uma integração automatizada.
Integrando o SDK do Unity
Pré-requisitos
Antes de começar, verifique se seu ambiente é compatível com a versão mais recente do SDK Unity da Braze.
Etapa 1: Escolha seu pacote Unity da Braze
O .unitypackage da Braze agrupa bindings nativos para as plataformas Android e iOS, junto com uma interface em C#.
Existem vários pacotes Unity da Braze disponíveis para download na página de versões do Braze Unity:
Appboy.unitypackage- Este pacote agrupa os SDKs Android e iOS da Braze e a dependência SDWebImage para o SDK iOS, que é necessária para o funcionamento adequado das mensagens no app e dos recursos de Content Cards no iOS. O framework SDWebImage é usado para baixar e exibir imagens, incluindo GIFs. Se você pretende utilizar todas as funcionalidades da Braze, baixe e importe este pacote.
Appboy-nodeps.unitypackage- Este pacote é similar ao
Appboy.unitypackage, exceto que o framework SDWebImage não está presente. Este pacote é útil se você não quiser o framework SDWebImage no seu app iOS.
- Este pacote é similar ao

A partir do Unity 2.6.0, o artefato do SDK Android da Braze incluído requer dependências AndroidX. Se você estava usando anteriormente um jetified unitypackage, pode fazer a transição com segurança para o unitypackage correspondente.
Se os builds Android falharem com “This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled”, ative o Custom Gradle Properties Template nas configurações de publicação do Unity. Em seguida, abra Assets/Plugins/Android/gradleTemplate.properties e defina android.useAndroidX=true. Para ver um modelo funcional, consulte o app de exemplo do Braze Unity e seu arquivo gradleTemplate.properties.
O .unitypackage da Braze agrupa bindings nativos para as plataformas Android e iOS, junto com uma interface em C#.
O pacote Unity da Braze está disponível para download na página de versões do Braze Unity com duas opções de integração:
- Somente
Appboy.unitypackage- Este pacote agrupa os SDKs Android e iOS da Braze sem nenhuma dependência adicional. Com este método de integração, não haverá funcionamento adequado das mensagens no app e dos recursos de Content Cards no iOS. Se você pretende utilizar todas as funcionalidades da Braze sem código personalizado, use a próxima opção.
- Para usar esta opção de integração, certifique-se de que a caixa ao lado de
Import SDWebImage dependencyesteja desmarcada na interface do Unity em “Braze Configuration”.
Appboy.unitypackagecomSDWebImage- Esta opção de integração agrupa os SDKs Android e iOS da Braze e a dependência SDWebImage para o SDK iOS, que é necessária para o funcionamento adequado das mensagens no app e dos recursos de Content Cards no iOS. O framework
SDWebImageé usado para baixar e exibir imagens, incluindo GIFs. Se você pretende utilizar todas as funcionalidades da Braze, baixe e importe este pacote. - Para importar automaticamente o
SDWebImage, certifique-se de marcar a caixa ao lado deImport SDWebImage dependencyna interface do Unity em “Braze Configuration”.
- Esta opção de integração agrupa os SDKs Android e iOS da Braze e a dependência SDWebImage para o SDK iOS, que é necessária para o funcionamento adequado das mensagens no app e dos recursos de Content Cards no iOS. O framework

Para verificar se você precisa da dependência SDWebImage para seu projeto iOS, visite a documentação de mensagens no app para iOS.
Etapa 2: Importe o pacote
No Unity Editor, importe o pacote para seu projeto Unity navegando até Assets > Import Package > Custom Package. Em seguida, clique em Import.
Alternativamente, siga as instruções de importação de pacote de ativos do Unity para um guia mais detalhado sobre a importação de pacotes Unity personalizados.

Se você deseja importar apenas o plugin iOS ou Android, desmarque o subdiretório Plugins/Android ou Plugins/iOS ao importar o .unitypackage da Braze.
No Unity Editor, importe o pacote para seu projeto Unity navegando até Assets > Import Package > Custom Package. Em seguida, clique em Import.
Alternativamente, siga as instruções de importação de pacote de ativos do Unity para um guia mais detalhado sobre a importação de pacotes Unity personalizados.

Se você deseja importar apenas o plugin iOS ou Android, desmarque o subdiretório Plugins/Android ou Plugins/iOS ao importar o .unitypackage da Braze.
Etapa 3: Configure o SDK
Etapa 3.1: Configure o AndroidManifest.xml
Configure o AndroidManifest.xml para que o SDK da Braze funcione. Se seu app não possui um AndroidManifest.xml, você pode usar o modelo a seguir. Caso já tenha um AndroidManifest.xml, certifique-se de que todas as seções ausentes abaixo sejam adicionadas ao seu AndroidManifest.xml existente.
- Acesse o diretório
Assets/Plugins/Android/e abra seu arquivoAndroidManifest.xml. Este é o local padrão no Unity Editor. - No seu
AndroidManifest.xml, adicione as permissões e atividades necessárias do modelo a seguir. - Quando terminar, seu
AndroidManifest.xmldeve conter apenas uma única Activity com"android.intent.category.LAUNCHER"presente.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="REPLACE_WITH_YOUR_PACKAGE_NAME">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/app_icon"
android:label="@string/app_name">
<!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
<activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:screenOrientation="sensor">
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>

Todas as classes Activity registradas no seu arquivo AndroidManifest.xml devem estar totalmente integradas com o SDK Android da Braze, caso contrário suas análises de dados não serão coletadas. Se você adicionar sua própria classe Activity, certifique-se de estender o Unity player da Braze para evitar isso.
Etapa 3.2: Atualize o AndroidManifest.xml com o nome do seu pacote
Para encontrar o nome do seu pacote, clique em File > Build Settings > Player Settings > Android Tab.

No seu AndroidManifest.xml, todas as instâncias de REPLACE_WITH_YOUR_PACKAGE_NAME devem ser substituídas pelo seu Package Name da etapa anterior.
Etapa 3.3: Adicione dependências do gradle
Para adicionar dependências do gradle ao seu projeto Unity, primeiro ative o “Custom Main Gradle Template” nas suas configurações de publicação. Isso criará um arquivo gradle modelo que seu projeto utilizará. Um arquivo gradle gerencia a configuração de dependências e outras configurações de build do projeto. Para saber mais, confira o mainTemplate.gradle do app de exemplo do Braze Unity.
As seguintes dependências são necessárias:
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'
Você também pode configurar essas dependências usando o External Dependency Manager.
Etapa 3.4: Automatize a integração do Unity Android
A Braze fornece uma solução nativa do Unity para automatizar a integração do Unity Android.
- No Unity Editor, abra as configurações da Braze navegando até Braze > Braze Configuration.
- Marque a caixa Automate Unity Android Integration.
- No campo Braze API Key, insira a chave de API da sua aplicação encontrada em Manage Settings no dashboard da Braze.

Esta integração automática não deve ser usada com um arquivo braze.xml criado manualmente, pois os valores de configuração podem entrar em conflito durante o build do projeto. Se você precisar de um braze.xml manual, desative a integração automática.
Etapa 3.1: Defina sua chave de API
A Braze fornece uma solução nativa do Unity para automatizar a integração do Unity iOS. Esta solução modifica o projeto Xcode gerado usando o PostProcessBuildAttribute do Unity e cria uma subclasse do UnityAppController usando a macro IMPL_APP_CONTROLLER_SUBCLASS.
- No Unity Editor, abra as configurações da Braze navegando até Braze > Braze Configuration.
- Marque a caixa Automate Unity iOS Integration.
- No campo Braze API Key, insira a chave de API da sua aplicação encontrada em Manage Settings.

Se sua aplicação já estiver usando outra subclasse de UnityAppController, você precisará mesclar a implementação da sua subclasse com AppboyAppDelegate.mm.
Personalizando o pacote Unity
Etapa 1: Clone o repositório
No seu terminal, clone o repositório GitHub do SDK Unity da Braze e navegue até essa pasta:
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk
Etapa 2: Exporte o pacote do repositório
Primeiro, inicie o Unity e mantenha-o em execução em segundo plano. Em seguida, na raiz do repositório, execute o comando a seguir para exportar o pacote para braze-unity-sdk/unity-package/.
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit

Se você tiver algum problema após executar esses comandos, consulte Unity: argumentos de linha de comando.
Etapa 3: Importe o pacote no Unity
- No Unity, importe o pacote desejado no seu projeto Unity acessando Assets > Import Package > Custom Package.
- Se houver arquivos que você não deseja importar, desmarque-os agora.
- Personalize o pacote Unity exportado localizado em
Assets/Editor/Build.cs.
Mudar para uma integração automatizada (somente Swift)
Para aproveitar a integração automatizada do iOS oferecida no SDK do Braze Unity, siga estas etapas para fazer a transição de uma integração manual para uma automatizada.
- Remova todo o código relacionado à Braze da subclasse
UnityAppControllerdo seu projeto do Xcode. - Remova as bibliotecas da Braze para iOS do seu projeto Unity ou Xcode (como
Appboy_iOS_SDK.frameworkeSDWebImage.framework). - Importe o pacote Braze Unity no seu projeto novamente. Para obter um passo a passo completo, consulte Etapa 2: Importar o pacote.
- Defina sua chave de API novamente. Para obter um passo a passo completo, consulte Etapa 3.1: Defina sua chave de API.
Configurações opcionais
Registro detalhado
Para ativar o registro detalhado no Unity Editor, faça o seguinte:
- Abra as configurações da Braze navegando até Braze > Braze Configuration.
- Clique no dropdown Show Braze Android Settings.
- No campo SDK Log Level, insira o valor “0”.
Compatibilidade com Prime 31
Para usar o plugin Unity da Braze com plugins Prime31, edite o AndroidManifest.xml do seu projeto para usar as classes de Activity compatíveis com Prime31. Altere todas as referências de
com.braze.unity.BrazeUnityPlayerActivity para com.braze.unity.prime31compatible.BrazeUnityPlayerActivity
Amazon Device Messaging (ADM)
A Braze oferece suporte à integração do push ADM em apps Unity. Se você quiser integrar o push ADM, crie um arquivo chamado api_key.txt contendo sua chave de API do ADM e coloque-o na pasta Plugins/Android/assets/. Para saber mais sobre a integração do ADM com a Braze, visite nossas instruções de integração de push ADM.
Estendendo o Braze Unity player (somente Android)
O arquivo de exemplo AndroidManifest.xml fornecido tem uma classe Activity registrada, BrazeUnityPlayerActivity. Essa classe é integrada ao SDK da Braze e estende UnityPlayerActivity com gerenciamento de sessão, registro de mensagens no app, registro de análise de dados de notificações por push e muito mais. Consulte Unity para saber mais sobre como estender a classe UnityPlayerActivity.
Se você estiver criando sua própria UnityPlayerActivity personalizada em um projeto de biblioteca ou plugin, será necessário estender nossa BrazeUnityPlayerActivity para integrar sua funcionalidade personalizada com a Braze. Antes de começar a estender BrazeUnityPlayerActivity, siga nossas instruções para integrar a Braze ao seu projeto Unity.
- Adicione o SDK Android da Braze como dependência ao seu projeto de biblioteca ou plugin, conforme descrito nas instruções de integração do SDK Android da Braze.
- Integre nosso Unity
.aar, que contém nossa funcionalidade específica para Unity, ao seu projeto de biblioteca Android que você está compilando para Unity. Oappboy-unity.aarestá disponível em nosso repositório público. Depois que nossa biblioteca Unity for integrada com sucesso, modifique suaUnityPlayerActivitypara estenderBrazeUnityPlayerActivity. - Exporte seu projeto de biblioteca ou plugin e coloque-o em
/<your-project>/Assets/Plugins/Androidnormalmente. Não inclua nenhum código-fonte da Braze em sua biblioteca ou plugin, pois eles já estarão presentes em/<your-project>/Assets/Plugins/Android. - Edite seu
/<your-project>/Assets/Plugins/Android/AndroidManifest.xmlpara especificar sua subclasse deBrazeUnityPlayerActivitycomo a activity principal.
Agora você deve conseguir empacotar um .apk a partir da IDE do Unity que está totalmente integrado com a Braze e contém a funcionalidade personalizada da sua UnityPlayerActivity.
Solução de problemas
Erro: “File could not be read”
Erros semelhantes ao seguinte podem ser ignorados com segurança. O software da Apple usa uma extensão PNG proprietária chamada CgBI, que o Unity não reconhece. Esses erros não afetarão sua compilação iOS nem a exibição correta das imagens associadas no pacote da Braze.
Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read
Integrando o SDK .NET MAUI
Integrar o SDK .NET MAUI da Braze (anteriormente Xamarin) fornecerá a você funcionalidades básicas de análise de dados, além de mensagens no app com as quais você pode engajar seus usuários.
Pré-requisitos
Antes de integrar o SDK .NET MAUI da Braze, certifique-se de atender aos seguintes requisitos:
- A partir da
version 3.0.0, esse SDK requer o uso do .NET 6+ e remove o suporte para projetos que usam a estrutura Xamarin. - A partir da
version 4.0.0, este SDK deixou de dar suporte ao Xamarin e Xamarin.Forms e adicionou suporte ao .NET MAUI. Consulte a política da Microsoft com relação ao fim do suporte para o Xamarin.
Etapa 1: Obtenha o binding .NET MAUI
Um binding .NET MAUI é uma forma de usar bibliotecas nativas em apps .NET MAUI. A implementação de um binding consiste em criar uma interface C# para a biblioteca e, em seguida, usar essa interface em seu aplicativo. Veja a documentação .NET MAUI. Há duas maneiras de incluir o binding do SDK da Braze: usando o NuGet ou compilando a partir da fonte.
O método mais simples de integração envolve a obtenção do SDK da Braze no repositório central NuGet.org. Na barra lateral do Visual Studio, clique com o botão direito do mouse na pasta Packages e clique em Add Packages.... Pesquise por ‘Braze’ e instale o pacote BrazePlatform.BrazeAndroidBinding em seu projeto.
Para usar os serviços de localização e geofences da Braze, instale também o pacote BrazePlatform.BrazeAndroidLocationBinding.
O segundo método de integração é incluir a fonte do binding. Em appboy-component/src/androidnet6 você encontrará nosso código-fonte do binding; adicionar uma referência de projeto ao BrazeAndroidBinding.csproj em sua aplicação .NET MAUI fará com que o binding seja construído com seu projeto e fornecerá acesso ao SDK Android da Braze.
Para usar os serviços de localização e geofences da Braze, adicione também uma referência de projeto ao BrazeAndroidLocationBinding.csproj encontrado em appboy-component/src/androidnet6/BrazeAndroidLocationBinding.

Os bindings iOS para a versão 4.0.0 do SDK .NET MAUI e posteriores usam o SDK Braze Swift, enquanto versões anteriores usam o SDK AppboyKit legado.
Um binding .NET MAUI é uma forma de usar bibliotecas nativas em apps .NET MAUI. A implementação de um binding consiste em criar uma interface C# para a biblioteca e, em seguida, usar essa interface em seu aplicativo. Há duas maneiras de incluir o binding do SDK da Braze: usando o NuGet ou compilando a partir da fonte.
O método mais simples de integração envolve a obtenção do SDK da Braze no repositório central NuGet.org. Na barra lateral do Visual Studio, clique com o botão direito do mouse na pasta Packages e clique em Add Packages.... Pesquise por ‘Braze’ e instale os pacotes NuGet iOS .NET MAUI mais recentes: Braze.iOS.BrazeKit, Braze.iOS.BrazeUI e Braze.iOS.BrazeLocation em seu projeto.
Também fornecemos os pacotes de bibliotecas de compatibilidade: Braze.iOS.BrazeKitCompat e Braze.iOS.BrazeUICompat, para ajudar a facilitar sua migração para o .NET MAUI.
O segundo método de integração é incluir a fonte do binding. Em appboy-component/src/iosnet6 você encontrará nosso código-fonte do binding; adicionar uma referência de projeto ao BrazeiOSBinding.csproj em sua aplicação .NET MAUI fará com que o binding seja construído com seu projeto e fornecerá acesso ao SDK iOS da Braze. Verifique se o BrazeiOSBinding.csproj está sendo exibido na pasta “Reference” do seu projeto.
Etapa 2: Configure sua instância da Braze
Etapa 2.1: Configure o SDK da Braze em Braze.xml
Agora que as bibliotecas foram integradas, você precisa criar um arquivo Braze.xml na pasta Resources/values do seu projeto. O conteúdo desse arquivo deve se parecer com o seguinte trecho de código:

Certifique-se de substituir YOUR_API_KEY pela chave de API localizada em Configurações > Chaves de API no dashboard da Braze.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
<string-array name="com_braze_internal_sdk_metadata">
<item>XAMARIN</item>
<item>NUGET</item>
</string-array>
</resources>
Se estiver incluindo a fonte do binding manualmente, remova <item>NUGET</item> do seu código.

Etapa 2.2: Adicione as permissões necessárias ao manifesto do Android
Agora que adicionou sua chave de API, você precisa adicionar as seguintes permissões ao arquivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
Para obter um exemplo do seu AndroidManifest.xml, consulte o aplicativo de exemplo do Android MAUI.
Etapa 2.3: Rastreie sessões de usuários e registre mensagens no app
Para ativar o rastreamento de sessão do usuário e registrar seu aplicativo para mensagens no app, adicione a seguinte chamada ao método de ciclo de vida OnCreate() da classe Application do seu aplicativo:
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
Ao configurar sua instância da Braze, adicione o seguinte snippet para configurar sua instância:

Certifique-se de substituir YOUR_API_KEY pela chave de API localizada em Configurações > Chaves de API no dashboard da Braze.
var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);
Consulte o arquivo App.xaml.cs no aplicativo de exemplo iOS MAUI.
Etapa 3: Teste a integração
Agora você pode iniciar seu aplicativo e ver as sessões sendo registradas no dashboard da Braze (juntamente com informações do dispositivo e outras análises de dados). Para uma discussão mais aprofundada sobre as práticas recomendadas para a integração básica do SDK, consulte as instruções de integração do Android.
Agora você pode iniciar seu aplicativo e ver as sessões sendo registradas no dashboard da Braze. Para uma discussão mais aprofundada sobre as práticas recomendadas para a integração básica do SDK, consulte as instruções de integração do iOS.

Nosso binding público atual .NET MAUI para o SDK iOS não se conecta ao SDK Facebook iOS (vinculando dados sociais) e não inclui o envio do IDFA para a Braze.
Integração do app ChatGPT
Configuração
Etapa 1: Obtenha o arquivo de integração da Braze
Copie o arquivo braze.js do nosso repositório de integração de apps ChatGPT para o seu projeto. Este arquivo contém toda a configuração necessária do SDK da Braze e funções auxiliares.
Etapa 2: Instale as dependências
Instale nosso Web SDK para o conjunto mais atualizado de recursos da Braze:
Para integração do lado do cliente:
npm install @braze/web-sdk
Implementation
There are two ways to integrate Braze with your ChatGPT app depending on your use case:
Client-side integration (custom widgets)

Recommended Approach: This method enables rich messaging experiences and real-time user interaction tracking within your ChatGPT app widgets.
For displaying Braze messaging and tracking user interactions within your custom ChatGPT app widgets, use the Web SDK integration. A full messaging example can be found in our sample repository here.
Configure widget metadata
Add the following metadata to your MCP server file to allow Braze domains, ensuring to update the CDN domain based on your region:
"openai/widgetCSP": {
connect_domains: ["https://YOUR-SDK-ENDPOINT"],
resource_domains: [
"https://appboy-images.com",
"https://braze-images.com",
"https://cdn.braze.eu",
"https://use.fontawesome.com"
],
}
Substitua YOUR-SDK-ENDPOINT pelo seu endpoint real do SDK da Braze.
Configure o hook useBraze
import { useBraze } from "./utils/braze";
function YourWidget() {
const braze = useBraze({
apiKey: "your-braze-api-key",
baseUrl: "your-braze-endpoint.braze.com",
});
useEffect(() => {
if (!braze.isInitialized) {
return;
}
// Set user identity
braze.changeUser("user-id-123");
// Log widget interactions
braze.logCustomEvent("viewed_pizzaz_list");
}, [braze.isInitialized]);
return (
// Your widget JSX
);
}
Exiba Content Cards da Braze
const [cards, setCards] = useState([]);
useEffect(() => {
// Get cached content cards
setCards(braze.getCachedContentCards()?.cards ?? []);
// Subscribe to content card updates
braze.subscribeToContentCardsUpdates((contentCards) => {
setCards(contentCards.cards);
});
// Open session
braze.openSession();
return () => {
braze.removeAllSubscriptions();
}
}, []);
Rastreie eventos do widget
// 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"
});
};
Integração do lado do servidor (servidor MCP)
Se você também precisar de uma integração do lado do servidor para funcionalidade de envio de mensagens no seu servidor MCP, entre em contato com [email protected]. Para rastreamento de eventos e compras do seu servidor MCP, use nossa REST API.
Sobre o SDK Braze Vega
O SDK Braze Vega permite coletar análise de dados e exibir mensagens no app ricas para seus usuários. A maioria dos métodos no SDK Braze Vega é assíncrona e retorna promises que devem ser aguardadas ou resolvidas.
Integrando o SDK Braze Vega
Etapa 1: Instale a biblioteca da Braze
Instale o SDK Braze Vega usando seu gerenciador de pacotes preferido.
Se seu projeto usa NPM, você pode adicionar o SDK Braze Vega como uma dependência.
npm install @braze/vega-sdk --save
Após a instalação, você pode importar os métodos necessários:
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
Se seu projeto usa Yarn, você pode adicionar o SDK Braze Vega como uma dependência.
yarn add @braze/vega-sdk
Após a instalação, você pode importar os métodos necessários:
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
Etapa 2: Inicialize o SDK
Depois que o SDK Braze Vega for adicionado ao seu projeto, inicialize a biblioteca com a chave de API e a URL do endpoint do SDK encontradas em Configurações > Configurações do app no dashboard da Braze.

Você deve aguardar ou resolver a promise changeUser antes de chamar outros métodos da Braze, caso contrário eventos e atributos podem ser definidos no usuário incorreto.
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
);
};

Usuários anônimos podem ser contabilizados no seu MAU. Por isso, você pode optar por carregar ou inicializar o SDK condicionalmente para excluir esses usuários da sua contagem de MAU.
Configurações opcionais
Registro de logs
Você pode ativar o registro de logs do SDK para ajudar na depuração e solução de problemas. Existem várias formas de ativar o registro de logs.
Ativar o registro de logs durante a inicialização
Passe enableLogging: true para initialize() para registrar mensagens de depuração no console:
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
enableLogging: true
});

Os logs básicos são visíveis para todos os usuários, então considere desativar o registro de logs antes de liberar seu código para produção.
Ativar o registro de logs após a inicialização
Use toggleLogging() para ativar ou desativar o registro de logs do SDK após a inicialização:
import { toggleLogging } from "@braze/vega-sdk";
// Enable logging
toggleLogging();
Registro de logs personalizado
Use setLogger() para fornecer uma função de logger personalizada e ter mais controle sobre como os logs do SDK são tratados:
import { setLogger } from "@braze/vega-sdk";
setLogger((message) => {
console.log("Braze Custom Logger: " + message);
// Add your custom logging logic here
});
Opções de configuração
Você pode passar opções de configuração adicionais para initialize() para personalizar o comportamento do SDK:
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60, // Configure session timeout (default is 1800 seconds)
appVersionNumber: "1.2.3.4", // Set your app version
enableLogging: true, // Enable SDK logging
});
Fazendo upgrade do SDK
Ao referenciar o SDK Braze Vega a partir do NPM ou Yarn, você pode fazer upgrade para a versão mais recente atualizando a dependência do seu pacote:
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk
Testando sua integração
Para verificar se a integração do SDK está funcionando corretamente:
- Inicialize o SDK com
enableLogging: truepara ver mensagens de depuração no console - Certifique-se de usar
await changeUser()antes de chamar outros métodos do SDK - Chame
await openSession()para iniciar uma sessão - Verifique seu dashboard da Braze em Visão geral para confirmar que os dados da sessão estão sendo registrados
- Teste o registro de um evento personalizado e verifique se ele aparece no seu dashboard

Ao realizar QA na sua integração de SDK, use o Depurador do SDK para solucionar problemas sem ativar o registro detalhado no seu app.