Skip to content

Logotipo do BrazeIntegre o SDK do Braze

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

Sobre o SDK Braze para Web

O SDK Braze para Web permite coletar análises e exibir mensagens ricas no app, push e mensagens de cartão de conteúdo para seus usuários da web. Para mais informações, veja Braze JavaScript referência de documentação.

Integrar o Web SDK

Você pode integrar o SDK Braze para Web usando os seguintes métodos. Para opções adicionais, veja outros métodos de integração.

  • Integração baseada em código: Integre o SDK Braze para Web diretamente em seu código usando seu gerenciador de pacotes preferido ou o CDN da Braze. Isso lhe dá controle total sobre como o SDK é carregado e configurado.
  • Google Tag Manager: Uma solução sem código que permite integrar o SDK Braze para Web sem modificar o código do seu site. Para mais informações, veja Google Tag Manager com o SDK Braze.

Etapa 1: Instalar a biblioteca do Braze

Você pode instalar a biblioteca Braze usando um dos seguintes métodos. No entanto, se seu site usar um Content-Security-Policy, revise a Política de Segurança de Conteúdo antes de continuar.

Se o seu site usar os gerenciadores de pacotes NPM ou Yarn, você poderá adicionar o pacote Braze NPM como uma dependência.

As definições do Typescript agora estão incluídas a partir da versão 3.0.0. Para notas sobre como fazer upgrade da versão 2.x para a 3.x, consulte nosso changelog.

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

Depois de instalada, você pode import ou require a biblioteca da maneira habitual:

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

Adicione o SDK da Braze para Web diretamente ao seu HTML fazendo referência ao nosso script hospedado na CDN, que carrega a biblioteca de forma assíncrona.

Etapa 2: Inicializar o SDK

Após adicionar o SDK Braze para Web ao seu site, inicialize a biblioteca com a chave de API e a URL do endpoint de SDK encontradas em Configurações > Configurações do App dentro do seu painel da Braze. Para uma lista completa de opções para braze.initialize(), junto com nossos outros métodos JavaScript, veja documentação JavaScript da Braze.

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

Solução de problemas de sessões ausentes para usuários anônimos

Se você está vendo o comportamento “Sessão ausente”, ou não consegue rastrear a sessão para usuários que permanecem anônimos na web, certifique-se de que 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ós braze.changeUser() se você definir um ID externo).

Para saber mais, veja Etapa 2: Inicialize o SDK.

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, em seguida, selecione Modelos. No painel Modelo de Tag, selecione Pesquisar Galeria.

A página de modelos para um espaço de trabalho de exemplo no Google Tag Manager.

Etapa 2: Adicione o modelo de tag de inicialização

Na galeria de modelos, procure por braze-inc, em seguida, selecione Tag de Inicialização Braze.

A galeria de modelos mostrando os vários modelos 'braze-inc'.

Selecione Adicionar ao espaço de trabalho > Adicionar.

A página 'Tag de Inicialização Braze' no Google Tag Manager.

Etapa 3: Configure a tag

Na seção Modelos, selecione seu modelo recém-adicionado.

A página "Modelos" no Google Tag Manager mostrando o modelo de Tag de Inicialização Braze.

Selecione o ícone de lápis para abrir o menu suspenso Configuração da Tag.

O bloco de Configuração da Tag com o ícone de 'lápis' mostrado.

Insira as informações mínimas necessárias:

Para configurações adicionais de inicialização, selecione Opções de Inicialização Braze e escolha quaisquer opções que você precisar.

A lista de Opções de Inicialização do Braze está em 'Configuração de Tag'.

Etapa 4: Escolha as opções de inicialização

A Tag de Inicialização do Braze expõe as seguintes opções. A maioria delas mapeia diretamente para o SDK Web InitializationOptions, 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
Permitir Mensagens In-App em HTML allowUserSuppliedJavascript Ativa mensagens in-app em HTML, Banners e ações de clique em JavaScript fornecidas pelo usuário. Necessário para mensagens in-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.
Número da Versão do App appVersion, appVersionNumber Versão do app para segmentação (por exemplo, 1.2.3.4).
Abrir Nova Sessão Automaticamente braze.openSession() Abre uma nova sessão após o SDK ser inicializado, chamando este método para você.
Mostrar Novas Mensagens In-App Automaticamente braze.automaticallyShowInAppMessages() Exibe automaticamente novas mensagens in-app quando elas chegam do servidor, chamando este método após a inicialização.
Desativar Manutenção Automática do Token Push disablePushTokenMaintenance Impede que o SDK sincronize tokens push com o backend do Braze em novas sessões.
Desativar Registro Automático do Service Worker manageServiceWorkerExternally Use se você registrar e controlar o service worker você mesmo.
Desativar Cookies noCookies Usa localStorage em vez de cookies para dados de usuário/sessão. Previne o reconhecimento entre subdomínios.
Desativar Font Awesome doNotLoadFontAwesome Impede que o SDK carregue o Font Awesome do CDN. Use se seu site tiver seu próprio Font Awesome.
Ativar Autenticação do SDK enableSdkAuthentication Ativa Autenticação do SDK.
Ativar Registro do SDK Web enableLogging Ativa o registro no console para depuração. Remova antes da produção.
Intervalo Mínimo Entre Mensagens Disparadas minimumIntervalBetweenTriggerActionsInSeconds Segundos mínimos entre ações de disparo (padrão: 30).
Abrir Cartões em Nova Guia openCardsInNewTab Abre links de Cartão de Conteúdo em uma nova guia ao usar a interface padrão do Feed.
Localização do Service Worker serviceWorkerLocation Caminho personalizado para o arquivo do service worker (padrão: /service-worker.js).
Tempo de Expiração da Sessão (segundos) sessionTimeoutInSeconds Tempo limite da sessão em segundos (padrão: 1800).

Para opções não expostas no modelo GTM (como contentSecurityNonce, localization ou devicePropertyAllowlist), use inicialização em tempo de execução em vez disso.

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 do Braze e registre análises de web push.

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 debug do Google Tag Manager, você pode verificar se a Tag de Inicialização do Braze está disparando corretamente nas suas páginas ou eventos configurados.
  • Opção 2: Verifique se há solicitações de rede feitas para o Braze a partir da sua página da web. Além disso, a biblioteca global window.braze deve 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 da Braze para Web inclua detecção embutida 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 SDK da Web 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

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.

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:

1
2
3
4
5
6
7
8
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
  braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE"
  });
  braze.automaticallyShowInAppMessages();
  braze.openSession();
}

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

Para ativar rapidamente o registro, adicione ?brazeLogging=true como um parâmetro ao URL do seu site. Como alternativa, é possível ativar o registro básico ou personalizado. Para uma visão centralizada em todas as plataformas, veja Registro detalhado.

Registro básico

Use enableLogging para registrar mensagens básicas de depuração no console JavaScript antes que o SDK seja inicializado.

1
enableLogging: true

Seu método deve ser semelhante ao seguinte:

1
2
3
4
5
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 a inicialização do SDK. Seu método deve ser semelhante ao seguinte:

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

Registro personalizado

Use setLogger para registrar mensagens de depuração personalizadas no console JavaScript. Ao contrário dos registros básicos, esses registros não são visíveis para os usuários.

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

Substitua STRING por sua mensagem como um único parâmetro string. Seu método deve ser semelhante ao seguinte:

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

Fazendo upgrade do SDK

Quando você referencia o Braze Web SDK a partir da nossa rede de entrega de conteúdo, por exemplo, https://js.appboycdn.com/web-sdk/a.a/braze.min.js (como recomendado pelas nossas instruções de integração padrão), seus usuários recebem atualizações menores (correções de bugs e recursos compatíveis com versões anteriores, versões a.a.a a a.a.z nos exemplos acima) automaticamente quando eles atualizam seu site.

No entanto, quando lançamos mudanças significativas, exigimos que você faça o upgrade do Braze Web SDK manualmente para garantir que mudanças disruptivas não impactem sua integração. Além disso, se você baixar nosso SDK e hospedá-lo por conta própria, não receberá atualizações de versão automaticamente e deve fazer o upgrade manualmente para receber os recursos e correções de bugs mais recentes.

Mantenha-se atualizado com a versão mais recente seguindo nosso feed de versões com o leitor de RSS ou serviço de sua preferência e consulte nosso changelog para obter uma contabilidade completa do histórico de versões do Web SDK. Para fazer upgrade do SDK da Braze para Web:

  • Atualize a versão da biblioteca do 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 gerenciador de pacotes.
  • Se você tiver o web push integrado, atualize o arquivo do service worker em seu site - por padrão, ele está localizado em /service-worker.js no diretório raiz do site, mas o local pode ser personalizado em algumas integrações. Você deve acessar o diretório raiz para hospedar um arquivo de service worker.

Você deve atualizar esses dois arquivos em coordenação um com o outro para um funcionamento adequado.

Outros métodos de integração

Páginas Móveis Aceleradas (AMP)

See more

Etapa 1: Incluir script de push para web de AMP

Adicione a seguinte tag de script assíncrono em seu cabeçalho:

1
<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 corpo do seu HTML que permita aos usuários se inscreverem e cancelarem a inscrição do push.

1
2
3
4
5
6
7
8
9
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>

<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>

Etapa 3: Adicione helper-iframe e permission-dialog

O componente AMP Web Push cria um popup para gerenciar as inscrições de push, então você deve 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 site e adicione o seguinte trecho:

Etapa 5: Configurar o elemento HTML do AMP web push

Adicione o seguinte elemento HTML amp-web-push ao corpo do seu HTML. Tenha em mente que você precisa anexar seu apiKey e baseUrl como parâmetros de consulta ao service-worker-URL.

1
2
3
4
5
6
7
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>

Definição de Módulo Assíncrono (AMD)

Desativar suporte

Se o seu site usa RequireJS ou outro carregador de módulo AMD, mas você prefere carregar o Braze Web SDK através de uma das outras opções nesta lista, você pode carregar uma versão da biblioteca que não inclui suporte a AMD. Essa versão da biblioteca pode ser carregada no seguinte local da CDN:

Carregador de módulo

Se você usa o RequireJS ou outros carregadores de módulos da AMD, recomendamos que hospede uma cópia da nossa biblioteca e faça referência a ela como faria com outros recursos:

1
2
3
4
5
6
require(['path/to/braze.min.js'], function(braze) {
  braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
  // Required if you want in-app messages to display automatically
  braze.automaticallyShowInAppMessages();
  braze.openSession();
});

Electron

O Electron não oferece suporte oficial a notificações por push na Web (consulte: este problema no GitHub). Há outras soluções alternativas de código aberto que você pode tentar e que não foram testadas pelo Braze.

Framework Jest

Ao usar o Jest, você poderá ver um erro semelhante a SyntaxError: Unexpected token 'export'. Para corrigir isso, ajuste sua configuração em package.json para ignorar o SDK da Braze:

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

Frameworks SSR

Se você usar um framework de Renderização do Lado do Servidor (SSR) como Next.js, pode encontrar erros porque o SDK foi projetado para ser executado em um ambiente de navegador. Você pode resolver esses problemas importando dinamicamente o SDK.

Você pode manter os benefícios do tree-shaking ao fazer isso exportando as partes do SDK de que precisa em um arquivo separado e, em seguida, importando dinamicamente esse arquivo para o seu componente.

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

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

Como alternativa, se estiver usando o Webpack para empacotar seu app, poderá aproveitar os comentários mágicos para importar dinamicamente apenas as partes do SDK de que precisa.

1
2
3
4
5
6
7
8
9
10
11
12
13
// MyComponent.js
useEffect(() => {
    import(
        /* webpackExports: ["initialize", "openSession"] */
        "@braze/web-sdk"
    ).then(({ initialize, openSession }) => {
        initialize("YOUR-API-KEY-HERE", {
            baseUrl: "YOUR-SDK-ENDPOINT",
            enableLogging: true,
        });
        openSession();
    });
}, []);

Tealium iQ

O Tealium iQ oferece uma integração básica do Braze pronta para uso. Para configurar a integração, procure o Braze na interface do Tealium Tag Management e forneça a chave de API do Web SDK em 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 seu gerente de conta Tealium.

Vite

Se você usa o Vite e vir um aviso sobre dependências circulares ou Uncaught TypeError: Class extends value undefined is not a constructor or null, talvez seja necessário excluir o SDK da Braze de sua descoberta de dependências:

1
2
3
optimizeDeps: {
    exclude: ['@braze/web-sdk']
},

Outros gerenciadores de tags

O 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 do Android

Etapa 1: Atualize sua configuração de build do Gradle

Na configuração do repositório 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 para Groovy e Kotlin DSL.

1
2
3
repositories {
  mavenCentral()
}

Em seguida, adicione o Braze às suas dependências. Nos exemplos a seguir, substitua SDK_VERSION pela versão atual do seu SDK do Android Braze. Para a lista completa de versões, veja Changelogs.

Se você não planeja usar componentes de UI do Braze, adicione o seguinte às suas dependências.

1
2
3
4
dependencies {
    implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
    implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

No seu arquivo gradle/libs.versions.toml:

1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

Então, no seu arquivo build.gradle ou build.gradle.kts, adicione as seguintes dependências. Essa sintaxe é a mesma para Groovy e Kotlin DSL.

1
2
3
4
dependencies {
    implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

Se você planeja usar componentes de UI do Braze, adicione o seguinte às suas dependências.

1
2
3
4
dependencies {
    implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
    implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

No seu arquivo gradle/libs.versions.toml:

1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

Então, no seu arquivo build.gradle ou build.gradle.kts, adicione as seguintes dependências. Essa sintaxe é a mesma para Groovy e Kotlin DSL.

1
2
3
4
dependencies {
    implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

Etapa 2: Configure seu braze.xml

Crie um arquivo braze.xml na pasta res/values do seu projeto. Se estiver em um cluster de dados específico ou tiver um endpoint personalizado pré-existente, também será necessário especificar o endpoint no arquivo braze.xml.

O conteúdo desse arquivo deve se parecer com o seguinte trecho de código. Certifique-se de substituir YOUR_APP_IDENTIFIER_API_KEY pelo identificador encontrado na página Manage Settings (Gerenciar configurações) do dashboard do Braze. Faça o registro em dashboard.braze.com para encontrar seu endereço de cluster.

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Etapa 3: Adicione permissões a AndroidManifest.xml

Em seguida, adicione as seguintes permissões ao seu AndroidManifest.xml:

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

Etapa 4: Ativar inicialização atrasada (opcional)

Para usar a inicialização atrasada, a versão mínima do SDK do Braze é necessária:

Etapa 4.1: Atualize seu braze.xml

A inicialização atrasada está desativada por padrão. Para ativar, use uma das seguintes opções:

No arquivo braze.xml do seu projeto, defina com_braze_enable_delayed_initialization como true.

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

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

Etapa 4.2: Configurar análise de push (opcional)

Quando a inicialização atrasada está ativada, as análises de push são enfileiradas por padrão. No entanto, você pode optar por enfileirar explicitamente ou descartar as análises de push.

Enfileirar explicitamente

Para enfileirar explicitamente as análises de push, escolha uma das seguintes opções:

No seu arquivo braze.xml, defina com_braze_delayed_initialization_analytics_behavior como QUEUE:

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

Adicione QUEUE ao seu método Braze.enableDelayedInitialization():

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

Para descartar as análises de push, escolha uma das seguintes opções:

No seu arquivo braze.xml, defina com_braze_delayed_initialization_analytics_behavior como DROP:

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

Adicione DROP ao método Braze.enableDelayedInitialization():

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

Etapa 4.3: Inicializar manualmente o SDK

Após o período de atraso escolhido, use o método Braze.disableDelayedInitialization() para inicializar manualmente o SDK.

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

Etapa 5: Ativar o rastreamento de sessão do usuário

Quando você ativa o rastreamento de sessão do usuário, chamadas para openSession(), closeSession(), ensureSubscribedToInAppMessageEvents() e InAppMessageManager podem ser tratadas automaticamente.

Para registrar callbacks do ciclo de vida da atividade, adicione o seguinte código ao método onCreate() da sua classe Application.

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

Para a lista de parâmetros disponíveis, veja BrazeActivityLifecycleCallbackListener.

Teste de rastreamento de sessão

Se você encontrar problemas durante os testes, ative logging detalhado, depois use logcat para detectar chamadas ausentes de openSession e closeSession em suas atividades.

  1. No Braze, acesse Visão Geral, selecione seu app e, no dropdown Exibir Dados Para, escolha Hoje. A página "Visão Geral" no Braze, com o campo "Exibir Dados Para" definido como "Hoje".
  2. Abra seu app e, em seguida, atualize o dashboard do Braze. Verifique se suas métricas aumentaram em 1.
  3. Navegue pelo seu app e verifique se apenas uma sessão foi registrada no Braze.
  4. Envie o app para o segundo plano por pelo menos 10 segundos e, em seguida, traga-o para o primeiro plano. Verifique se uma nova sessão foi registrada.

Configurações opcionais

Configuração do tempo de execução

Para definir suas opções do Braze no código em vez do seu arquivo braze.xml, use configuração em tempo de execução. Se um valor existir em ambos os lugares, o valor em tempo de execução será usado em vez disso. Depois que todas as configurações necessárias forem fornecidas em tempo de execução, você pode excluir seu arquivo braze.xml.

No exemplo a seguir, um objeto builder é criado e, em seguida, 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.

1
2
3
4
5
6
7
8
BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
6
7
8
val brazeConfig = BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build()
Braze.configure(this, brazeConfig)

ID de publicidade do Google

O ID de Publicidade do Google (GAID) é um ID opcional, específico do usuário, anônimo, único e redefinível para publicidade, fornecido pelos serviços do Google Play. O GAID permite que os usuários redefinam seu identificador, aceitem anúncios baseados em interesses nos aplicativos do Google Play e fornece aos desenvolvedores um sistema simples e padrão para continuar a monetizar seus apps.

O ID de publicidade do Google não é coletado automaticamente pelo SDK da Braze e deve ser definido manualmente por meio do método Braze.setGoogleAdvertisingId().

1
2
3
4
5
6
7
8
9
10
11
new Thread(new Runnable() {
  @Override
  public void run() {
    try {
      AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
      Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}).start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
suspend fun fetchAndSetAdvertisingId(
  context: Context,
  scope: CoroutineScope = GlobalScope
) {
  scope.launch(Dispatchers.IO) {
    try {
      val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
      Braze.getInstance(context).setGoogleAdvertisingId(
        idInfo.id,
        idInfo.isLimitAdTrackingEnabled
      )
    } catch (e: Exception) {
      e.printStackTrace()
    }
  }
}

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:

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

Registro

Por padrão, o nível de registro do Braze Android SDK é definido como INFO. Você pode suprimir esses registros ou definir um nível de registro diferente, como VERBOSE, DEBUG ou WARN.

Ativando registros

Para ajudar a solucionar problemas no seu app, ou reduzir os tempos de resposta com o suporte da Braze, você pode ativar registros detalhados para o SDK. Quando você enviar registros detalhados para o suporte da Braze, certifique-se de que eles comecem assim que você lançar seu aplicativo e terminem muito depois que seu problema ocorrer. Para uma visão centralizada, veja Registro detalhado. Para aprender a interpretar a saída do registro, veja Lendo registros detalhados.

Lembre-se de que registro detalhados são destinados apenas para o seu ambiente de desenvolvimento, então é interessante desativá-los antes de lançar seu app.

Para ativar logs diretamente no seu app, adicione o seguinte ao método onCreate() do seu aplicativo antes de qualquer outro método.

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

Substitua MIN_LOG_LEVEL pelo Constante do nível de registro que você gostaria de definir como seu nível de registro mínimo. Quaisquer registro em um nível >= para o seu conjunto MIN_LOG_LEVEL serão encaminhados para o método padrão do Android Log. Qualquer registro < que você definir como MIN_LOG_LEVEL será descartado.

Por exemplo, o código a seguir encaminhará os níveis de registro 2, 3, 4, 5, 6 e 7 para o método Log.

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

Para ativar registros no braze.xml, adicione o seguinte ao seu arquivo:

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

Substitua MIN_LOG_LEVEL pelo Valor do nível de registro que você gostaria de definir como seu nível de registro mínimo. Quaisquer registro em um nível >= para o seu conjunto MIN_LOG_LEVEL serão encaminhados para o método padrão do Android Log. Qualquer registro < que você definir como MIN_LOG_LEVEL será descartado.

Por exemplo, o código a seguir encaminhará os níveis de registro 2, 3, 4, 5, 6 e 7 para o método Log.

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

Verificação de registros detalhados

Para verificar se seus registros estão definidos para VERBOSE, verifique se V/Braze ocorre em algum lugar nos seus registros. Se isso acontecer, os registros detalhados foram ativados com sucesso. Por exemplo:

1
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started

Supressão de registros

Para suprimir todos os registros do SDK Android da Braze, defina o nível de registro como BrazeLogger.SUPPRESS no método onCreate() da sua aplicação antes de qualquer outro método.

1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)

Múltiplas chaves de API

O caso de uso mais comum para várias chaves de API é separar chaves de API para variantes de build de depuração e release.

Para alternar facilmente entre várias chaves de API em suas compilações, recomendamos criar um arquivo braze.xml separado para cada variante de compilação relevante. Uma variante de compilação é uma combinação de tipo de compilação e sabor do produto. Por padrão, novos projetos Android são configurados com debug e release tipos de build e sem sabores 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 compilação for compilada, ela usará o nova chave de API.

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

Mensagem no app exclusiva TalkBack

Em conformidade com as diretrizes de acessibilidade do Android, o SDK Android da Braze oferece 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:

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

R8 e ProGuard

A configuração de redução de código é incluída automaticamente com sua integração Braze.

Os aplicativos do cliente que ofuscam o código da Braze devem armazenar arquivos de mapeamento de versão para que a Braze interprete os rastreamentos de pilha. Se você quiser manter todo o código da Braze, adicione o seguinte ao seu arquivo ProGuard:

1
2
-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 mais informações sobre os vários símbolos do SDK, consulte documentação de referência do Braze Swift.

Pré-requisitos

Antes de começar, verifique se seu ambiente é compatível com a última versão do SDK Swift da Braze.

Etapa 1: Instale o SDK Swift da Braze

Recomendamos usar o Swift Package Manager (SwiftPM) ou CocoaPods para instalar o SDK Swift da Braze. Alternativamente, você pode instalar o SDK manualmente.

Etapa 1.1: Importar versão do SDK

Abra seu projeto e navegue até as configurações do seu projeto. Selecione a guia SWIFT Packages e clique no botão adicionar abaixo da lista de pacotes.

Digite o URL do nosso repositório iOS SWIFT SDK https://github.com/braze-inc/braze-swift-sdk no campo de texto. Embaixo da seção Regra de Dependência, selecione a versão do SDK. Finalmente, clique em Adicionar Pacote.

Etapa 1.2: Selecione seus pacotes

O SDK Braze SWIFT separa os recursos em bibliotecas independentes para fornecer aos desenvolvedores mais controle sobre quais recursos importar para seus projetos.

Pacote Informações
BrazeKit Biblioteca principal do SDK que fornece suporte para análise de dados e notificações por push.
BrazeLocation Biblioteca de local fornecendo suporte para análise de dados de local e monitoramento de geofence.
BrazeUI Biblioteca de interface do usuário fornecida pela Braze para mensagens no aplicativo, Cartões de Conteúdo e Banners. Importe esta biblioteca se você pretende usar os componentes de UI padrão.
Sobre bibliotecas de extensão
Pacote Informações
BrazeNotificationService Biblioteca de extensão de serviço de notificação que fornece suporte para notificações por push avançadas.
BrazePushStory Biblioteca de extensão de conteúdo de notificação que fornece suporte para push Stories.

Selecione o pacote que melhor atenda às suas necessidades e clique Adicionar Pacote. Certifique-se de selecionar BrazeKit no mínimo.

Etapa 1.1: Instalar o CocoaPods

Para um guia completo, consulte o Guia de Introdução do CocoaPods. Caso contrário, você pode executar o seguinte comando para começar rapidamente:

1
$ sudo gem install cocoapods

Se você ficar preso, confira o Guia de Solução de Problemas do CocoaPods.

Etapa 1.2: Construindo o arquivo de pod

Em seguida, crie um arquivo no diretório do seu projeto Xcode chamado Podfile.

Adicione a seguinte linha ao seu Podfile:

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

BrazeKit contém a biblioteca principal do SDK que oferece suporte a análises de dados e notificações por push.

Sugerimos que você faça uma versão da Braze para que as atualizações do pod capturem automaticamente qualquer coisa menor que uma atualização de versão secundária. Fica assim: pod 'BrazeKit' ~> Major.Minor.Build. Se quiser integrar automaticamente a versão mais recente do SDK da Braze, mesmo com grandes alterações, você poderá usar pod 'BrazeKit' em seu Podfile.

Sobre bibliotecas adicionais

O SDK Braze SWIFT separa os recursos em bibliotecas independentes para fornecer aos desenvolvedores mais controle sobre quais recursos importar para seus projetos. Além de BrazeKit, você pode adicionar as seguintes bibliotecas ao seu Podfile:

Biblioteca Informações
pod 'BrazeLocation' Biblioteca de local fornecendo suporte para análise de dados de local e monitoramento de geofence.
pod 'BrazeUI' Biblioteca de interface do usuário fornecida pela Braze para mensagens no aplicativo, Cartões de Conteúdo e Banners. Importe esta biblioteca se você pretende 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 direcionamento de seu aplicativo principal. Em vez disso, será necessário criar direcionamentos de extensão separados para cada um desses módulos e importar os módulos Braze para seus direcionamentos correspondentes.

Biblioteca Informações
pod 'BrazeNotificationService' Biblioteca de extensão de serviço de notificação que fornece suporte para notificações por push avançadas.
pod 'BrazePushStory' Biblioteca de extensão de conteúdo de notificação que fornece suporte para push Stories.

Etapa 1.3: Instalar o SDK

Para instalar o Braze SDK CocoaPods, navegue até o diretório do seu projeto de app do Xcode em seu terminal e execute o seguinte comando:

1
pod install

Nesse ponto, você deve conseguir abrir o novo espaço de trabalho do projeto Xcode criado pelo CocoaPods. Use esse espaço de trabalho do Xcode em vez de seu projeto do Xcode.

Uma pasta de Exemplo da Braze expandida para mostrar o novo `BrazeExample.workspace`.

Atualizando o SDK usando CocoaPods

Para atualizar um CocoaPod, basta executar o seguinte comando no diretório do projeto:

1
pod update

Etapa 1.1: Baixar o SDK da Braze

Acessar a página de lançamento do SDK da Braze no GitHub, então baixar braze-swift-sdk-prebuilt.zip.

"A página de lançamento do SDK da Braze no GitHub."

Etapa 1.2: Escolha seus frameworks

O SDK Braze SWIFT contém uma variedade de XCFrameworks independentes, o que lhe dá a liberdade de integrar os recursos que você deseja—sem precisar integrá-los todos. Consulte a tabela a seguir para escolher seus XCFrameworks:

Pacote Necessário? Descrição
BrazeKit Sim Biblioteca principal do SDK que fornece suporte para análise de dados e notificações por push.
BrazeLocation Não Biblioteca de local que fornece suporte para análise de dados de local e monitoramento de geofence.
BrazeUI Não Biblioteca de interface do usuário fornecida pela Braze para mensagens no aplicativo, Cartões de Conteúdo e Banners. Importe esta biblioteca se você pretende usar os componentes de UI padrão.
BrazeNotificationService Não Biblioteca de extensão de serviço de notificação que fornece suporte para notificações por push avançadas. Não adicione esta biblioteca diretamente ao seu alvo principal do aplicativo, em vez disso adicione a biblioteca BrazeNotificationService separadamente.
BrazePushStory Não Biblioteca de extensão de conteúdo de notificação que fornece suporte para Push Stories. Não adicione esta biblioteca diretamente ao seu alvo principal do 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 na versão Appboy-iOS-SDK 4.X.X. Para obter mais informações sobre o uso, consulte o cenário de migração mínima no guia de migração.
BrazeUICompat Não Biblioteca de compatibilidade contendo todas as ABK* classes e métodos que estavam disponíveis na biblioteca AppboyUI da versão Appboy-iOS-SDK 4.X.X. Para obter mais informações sobre o uso, consulte o cenário de migração mínima no guia de migração.
SDWebImage Não Dependência usada apenas por BrazeUICompat no cenário de migração mínima.

Decida se você quer usar Estático ou Dinâmico XCFrameworks, então prepare seus arquivos:

  1. Crie um diretório temporário para seus XCFrameworks.
  2. No braze-swift-sdk-prebuilt, abra o diretório dynamic e mova BrazeKit.xcframework para o seu diretório. Seu diretório deve ser semelhante ao seguinte:
    1
    2
    
     temp_dir
     └── BrazeKit.xcframework
    
  3. Mova cada um dos seus XCFrameworks escolhidos para o seu diretório temporário. Seu diretório deve ser semelhante ao seguinte:
    1
    2
    3
    4
    5
    
     temp_dir
     ├── BrazeKit.xcframework
     ├── BrazeKitCompat.xcframework
     ├── BrazeLocation.xcframework
     └── SDWebImage.xcframework
    

Etapa 1.4: Integre seus frameworks

Em seguida, integre as Dinâmicas ou Estáticas XCFrameworks que você preparou anteriormente:

No seu projeto Xcode, selecione seu alvo de build, então Geral. Em Frameworks, Bibliotecas e Conteúdo Incorporado, arraste e solte os arquivos que você preparou anteriormente.

"Um projeto de exemplo do Xcode com cada biblioteca da Braze configurada para 'Incluir & Assinatura.'"

Erros comuns para projetos Objective-C

Se o seu projeto Xcode contiver apenas arquivos Objective-C, você poderá receber erros de “símbolo ausente” ao tentar compilar seu projeto. Para corrigir esses erros, abra seu projeto e adicione um arquivo Swift vazio à sua árvore de arquivos. Isso forçará sua cadeia de ferramentas a incorporar SWIFT Runtime e vincular aos frameworks apropriados durante o período em questão.

1
FILE_NAME.swift

Substitua FILE_NAME por qualquer string sem espaços. Seu arquivo deve ser semelhante ao seguinte:

1
empty_swift_file.swift

Etapa 2: Configurar inicialização atrasada (opcional)

Você pode optar por atrasar quando o SDK Swift do Braze é inicializado, o que é útil se seu app precisar carregar uma configuração ou esperar pelo consentimento do usuário antes de iniciar o SDK. A inicialização atrasada garante que as notificações por push do Braze e os tokens de 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 do Braze é necessária:

Etapa 2.1: Prepare-se 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 devidamente capturadas e processadas posteriormente.

1
2
3
4
5
6
7
8
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  // Prepare the SDK for delayed initialization
  Braze.prepareForDelayedInitialization()

  // ... Additional non-Braze setup code

  return true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@main
struct MyApp: App {
  @UIApplicationDelegateAdaptor var appDelegate: AppDelegate

  var body: some Scene {
    WindowGroup {
      ContentView()
    }
  }
}

class AppDelegate: NSObject, UIApplicationDelegate {
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    // Prepare the SDK for delayed initialization
    Braze.prepareForDelayedInitialization()

    // ... Additional non-Braze setup code

    return true
  }
}
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Prepare the SDK for delayed initialization
  [Braze prepareForDelayedInitialization];
  
  // ... Additional non-Braze setup code

  return YES;
}

Ao usar a inicialização atrasada, a automação de notificações por push é implicitamente ativada. Você pode personalizar a automação de push passando um parâmetro pushAutomation.

Etapa 2.2: Configurar o comportamento da análise de push (opcional)

Quando a inicialização atrasada está ativada, as análises de push são enfileiradas por padrão. No entanto, você pode optar por enfileirar ou descartar explicitamente as análises de push.

Enfileirar explicitamente

Para enfileirar explicitamente as análises de push (comportamento padrão), passe .queue para o parâmetro analyticsBehavior. Eventos de análises de push que são enfileirados antes da inicialização serão processados e enviados ao servidor na inicialização.

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

Para remover a análise de push recebida 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 ocorrer enquanto o SDK não estiver inicializado será ignorado.

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

Etapa 2.3: Personalizar automação de push (opcional)

Você pode personalizar a configuração da automação de push passando um parâmetro pushAutomation. Por padrão, todos os recursos de automação estão habilitados, exceto requestAuthorizationAtLaunch.

1
2
3
4
5
6
7
8
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)

// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
1
2
3
4
5
6
7
8
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];

// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];

Etapa 2.4: Inicializar o SDK

Após o período de postergação escolhido (por exemplo, após buscar a configuração de um servidor ou após o consentimento do usuário), inicialize o SDK normalmente:

1
2
3
4
5
6
7
8
9
10
func initializeBraze() {  
  let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")    
  
  // Enable push automation to match the delayed initialization configuration  
  configuration.push.automation = true    
  let braze = Braze(configuration: configuration)    
  
  // Store the Braze instance for later use 
  AppDelegate.braze = braze
}
1
2
3
4
5
6
7
8
9
10
- (void)initializeBraze {
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];
  
  // Enable push automation to match the delayed initialization configuration
  configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
  Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
  
  // Store the Braze instance for later use
  AppDelegate.braze = braze;
}

Etapa 3: Atualize seu delegado do app

Adicione a seguinte linha de código ao seu AppDelegate.swift arquivo para importar os recursos incluídos no SDK da Braze para Swift:

1
import BrazeKit

Em seguida, adicione uma propriedade estática à sua classe AppDelegate para manter uma referência forte à instância da Braze durante toda a vida útil do seu aplicativo:

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

Finalmente, em AppDelegate.swift, adicione o seguinte trecho ao seu método application:didFinishLaunchingWithOptions::

1
2
3
4
5
6
let configuration = Braze.Configuration(
    apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
    endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze

Atualize YOUR-APP-IDENTIFIER-API-KEY e YOUR-BRAZE-ENDPOINT com o valor correto da sua página de Configurações do App. Confira nossos tipos de identificadores de API para saber mais sobre onde encontrar a chave de API do seu identificador de app.

Adicione a seguinte linha de código ao seu arquivo AppDelegate.m:

1
@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 toda a vida útil do seu aplicativo:

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

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

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

Finalmente, dentro do seu arquivoAppDelegate.m, adicione o seguinte trecho dentro do seu método application:didFinishLaunchingWithOptions::

1
2
3
4
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
                                                                  endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;

Atualize YOUR-APP-IDENTIFIER-API-KEY e YOUR-BRAZE-ENDPOINT com o valor correto da sua página Gerenciar Configurações. Confira nossa documentação da API para saber mais sobre onde encontrar a chave de API do seu identificador de app.

Configurações opcionais

Registro

Para uma visão centralizada em todas as plataformas, veja Registro detalhado. Para aprender a interpretar a saída do log, veja Lendo logs detalhados.

Níveis de registro

O nível de log padrão para o SDK Braze Swift é .error—é também o nível mínimo suportado quando os logs estão habilitados. Esta é a lista completa de níveis de log:

Swift Objective C Descrição
.debug BRZLoggerLevelDebug Registrar informações de depuração + .info + .error.
.info BRZLoggerLevelInfo Registre informações gerais do SDK (alterações de usuário, etc.) + .error.
.error BRZLoggerLevelError Erros de registro.
.disabled BRZLoggerLevelDisabled Não ocorre nenhum registro.

Você pode atribuir o nível de log em tempo de execução no seu objeto Braze.Configuration. Para detalhes completos de uso, veja Braze.Configuration.Logger.

1
2
3
4
5
6
7
let configuration = Braze.Configuration(
  apiKey: "<BRAZE_API_KEY>",
  endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
1
2
3
4
5
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
                                                                  endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];

Integrando o SDK do Cordova

Pré-requisitos

Antes de começar, verifique se seu ambiente é compatível com a última versão do SDK do Braze para Cordova.

Etapa 1: Adicione o SDK ao projeto

Se você estiver usando o Cordova 6 ou posterior, poderá adicionar o SDK diretamente do GitHub. Como alternativa, você pode baixar um ZIP do repositório do GitHub e adicionar o SDK manualmente.

Se não planeja usar a coleta de locais e geofences, use a ramificação master do GitHub.

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

Se planeja usar a coleta de locais e geofences, use geofence-branch do GitHub.

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

Etapa 2: Configure seu projeto

Em seguida, adicione as seguintes preferências ao elemento platform no arquivo config.xml de seu projeto.

1
2
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
1
2
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />

Substitua o seguinte:

O elemento platform em seu arquivo config.xml deve ser semelhante ao seguinte:

1
2
3
4
<platform name="ios">
    <preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
1
2
3
4
<platform name="android">
    <preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>

Sintaxe específica da plataforma

A seção a seguir cobre a sintaxe específica da 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:

1
2
3
4
<platform name="ios">
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_session_timeout" value="5" />
</platform>

Devido à forma como o framework Cordova 8.0.0+ lida com preferências, preferências apenas de número inteiro (como IDs de remetente) devem ser definidas como strings precedidas por str_, como no exemplo a seguir:

1
2
3
4
<platform name="android">
    <preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
    <preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>

Booleanos

Preferências booleanas são lidas pelo SDK usando palavras-chave YES e NO como uma representação de string, como no exemplo a seguir:

1
2
3
4
<platform name="ios">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>

Preferências booleanas são lidas pelo SDK usando palavras-chave true e false como uma representação de string, como no exemplo a seguir:

1
2
3
4
<platform name="android">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>

Configurações opcionais

Você pode adicionar qualquer uma das seguintes preferências ao elemento platform no arquivo config.xml do seu projeto:

A seguir veja é um exemplo de arquivo config.xml com configurações adicionais:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<platform name="ios">
    <preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
    <preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
    <preference name="com.braze.enable_location_collection" value="NO"/"YES" />
    <preference name="com.braze.geofences_enabled" value="NO"/"YES" />
    <preference name="com.braze.ios_session_timeout" value="5" />
    <preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
    <preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
    <preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
    <preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
    <preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
    <preference name="com.braze.ios_log_level" value="2" />
    <preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<platform name="android">
    <preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
    <preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
    <preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
    <preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
    <preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
    <preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
    <preference name="com.braze.enable_location_collection" value="true"/"false" />
    <preference name="com.braze.geofences_enabled" value="true"/"false" />
    <preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
    <preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
    <preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
    <preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
    <preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
    <preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
    <preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
    <preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
    <preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
    <preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
    <preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>

Desabilitando o rastreamento automático de sessão (apenas Android)

Por padrão, o plug-in 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:

1
2
3
<platform name="android">
    <preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>

Para começar a rastrear as sessões novamente, ligue para BrazePlugin.startSessionTracking(). Lembre-se de que somente as sessões iniciadas após o próximo Activity.onStart() serão rastreadas.

Sobre o SDK Flutter Braze

Depois de integrar o SDK Braze Flutter no Android e iOS, você poderá usar a API Braze em seus aplicativos Flutter escritos em Dart. Esse plug-in fornece a funcionalidade básica de análise de dados e permite integrar mensagens no app e cartões de conteúdo para iOS e Android com uma única base de código.

Integrando o SDK do Flutter

Pré-requisitos

Antes de integrar o SDK Braze Flutter, você precisará concluir o seguinte:

Etapa 1: Integrar a biblioteca do Braze

Adicione o pacote Braze Flutter SDK a partir da linha de comando. Isso adicionará a linha adequada a pubspec.yaml.

1
flutter pub add braze_plugin

Etapa 2: Concluir a configuração do SDK nativo

Para se conectar aos servidores da Braze, crie um arquivo braze.xml na pasta android/res/values do projeto. Cole o código a seguir e substitua a chave do identificador da API e o ponto final por seus valores:

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Adicione as permissões necessárias ao seu arquivo AndroidManifest.xml:

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

Adicione a importação do SDK da Braze na parte superior do arquivo AppDelegate.swift:

1
2
import BrazeKit
import braze_plugin

No mesmo arquivo, crie o objeto de configuração do 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 em AppDelegate para facilitar o acesso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static var braze: Braze? = nil

override func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
  // Setup Braze
  let configuration = Braze.Configuration(
    apiKey: "<BRAZE_API_KEY>",
    endpoint: "<BRAZE_ENDPOINT>"
  )
  // - Enable logging or customize configuration here
  configuration.logger.level = .info
  let braze = BrazePlugin.initBraze(configuration)
  AppDelegate.braze = braze

  return true
}

Importar BrazeKit na parte superior do arquivo AppDelegate.m:

1
@import BrazeKit;

No mesmo arquivo, crie o objeto de configuração do 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 em AppDelegate para facilitar o acesso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration =
      [[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
                                      endpoint:@"<BRAZE_ENDPOINT>"];
  // - Enable logging or customize configuration here
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazePlugin initBraze:configuration];
  AppDelegate.braze = braze;

  [self.window makeKeyAndVisible];
  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

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

Etapa 3: Configure o plugin

Para importar o plug-in em seu código Dart, use o seguinte:

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

Em seguida, inicialize uma instância do plug-in da Braze chamando new BrazePlugin() como em nosso app de amostra.

Testando a integração

Você pode verificar a integração de SDK verificando as estatísticas da sessão no dashboard. Se você executar seu aplicativo em qualquer uma das plataformas, deverá 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 em seu app.

1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");

Procure o usuário com{some-user-id} no dashboard, em Público > Pesquisar usuários. Lá, é possível verificar se os dados da sessão e do dispositivo foram registrados.

Sobre o SDK Braze para React Native

Integrar o SDK Braze para React Native fornece funcionalidade básica de análise e permite integrar mensagens no app e Cartões de Conteúdo para iOS e Android com apenas uma base de código.

Compatibilidade com a nova arquitetura

A seguinte versão mínima do SDK é compatível com todos os apps que usam Nova Arquitetura do React Native:

A partir da versão 6.0.0 do SDK, o Braze utiliza um Módulo Turbo do React Native, que é compatível tanto com a Nova Arquitetura quanto com a arquitetura de ponte legada—o que significa que nenhuma configuração adicional é necessária.

Integrando o SDK React Native

Pré-requisitos

Para integrar o SDK, é necessário ter a versão 0.71 ou posterior do React Native. Para obter a lista completa de versões compatíveis, consulte nosso repositório do GitHub do React Native SDK.

Etapa 1: Integrar a biblioteca do Braze

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

Etapa 2: Escolha uma opção de configuração

Você pode gerenciar o SDK Braze usando o plugin Braze Expo ou através de uma das camadas nativas. Com o plugin Expo, você pode configurar certos recursos do SDK sem escrever código em nenhuma das camadas nativas. Escolha a opção que melhor atende às necessidades do seu app.

Etapa 2.1: Instale o plug-in Braze Expo

Confira se sua versão do SDK da Braze para React Native seja, no mínimo, 1.37.0. Para a lista completa de versões suportadas, confira o repositório Braze React Native.

Para instalar o plugin Braze Expo, execute o seguinte comando:

1
npx expo install @braze/expo-plugin

Etapa 2.2: Adicione o plug-in ao seu app.json

Em app.json, adicione o plug-in Braze Expo. Você pode fornecer as seguintes opções de configuração:

Exemplo de configuração:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidApiKey": "YOUR-ANDROID-API-KEY",
          "iosApiKey": "YOUR-IOS-API-KEY",
          "baseUrl": "YOUR-SDK-ENDPOINT",
          "sessionTimeout": 60,
          "enableGeofence": false,
          "enableBrazeIosPush": false,
          "enableFirebaseCloudMessaging": false,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true,
          "enableSdkAuthentication": false,
          "logLevel": 0,
          "minimumTriggerIntervalInSeconds": 0,
          "enableAutomaticLocationCollection": false,
          "enableAutomaticGeofenceRequests": false,
          "dismissModalOnOutsideTap": true,
          "androidPushNotificationHtmlRenderingEnabled": true,
          "androidNotificationAccentColor": "#ff3344",
          "androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
          "androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
          "iosRequestPushPermissionsAutomatically": false,
          "enableBrazeIosPushStories": true,
          "iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
          "iosForwardUniversalLinks": false
        }
      ],
    ]
  }
}
Configurando ícones de notificação por push do Android

Ao usar androidNotificationLargeIcon e androidNotificationSmallIcon, siga estas melhores práticas para exibição adequada do ícone:

Posicionamento e formato do ícone

Para usar ícones de notificação por push personalizados com o plugin Braze Expo:

  1. Crie seus arquivos de ícone seguindo os requisitos do Android conforme detalhado em Requisitos de ícone.
  2. Coloque-os nos diretórios nativos do 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).
  3. Alternativamente, se você estiver gerenciando ativos no seu diretório React Native, pode usar a app.json configuração de ícone do Expo ou criar um plugin de configuração do Expo para copiar os ícones para as pastas drawable do Android durante a pré-construção.

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 em um fundo transparente (este é um requisito da plataforma Android)
  • Ícone grande: Pode ser uma imagem em cores completas
  • Formato: O formato PNG é recomendado
  • Nomenclatura: Use apenas letras minúsculas, números e sublinhados (por exemplo, my_large_icon.png)
Configuração em app.json

Use o prefixo @drawable/ seguido pelo nome do arquivo sem a extensão do arquivo. Por exemplo, se seu arquivo de ícone se chama large_icon.png, referencie-o como @drawable/large_icon:

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

O plugin Braze Expo referencia seus arquivos de ícone dos diretórios Android drawable. Quando você executa npx expo prebuild, o Expo gera a estrutura do projeto nativo do Android. Seus ícones devem estar presentes nas pastas Android drawable (seja colocados manualmente ou copiados através de um plugin de configuração) antes do processo de construção. O plugin então configura o SDK do Braze para usar esses recursos desenháveis pelos 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 do Android, consulte as diretrizes de ícones de notificação do Android.

Etapa 2.3: Crie e execute seu aplicativo

Pré-construir seu aplicativo gera os arquivos nativos necessários para o funcionamento do plugin Braze Expo.

1
npx expo prebuild

Execute seu aplicativo conforme especificado nos documentos da Expo. Tenha em mente que, se você fizer alterações nas opções de configuração, será necessário pré-construir e executar o aplicativo novamente.

Etapa 2.1: Adicionar nosso repositório

Em seu projeto de nível superior build.gradle, adicione o seguinte em buildscript > dependencies:

1
2
3
4
5
6
7
buildscript {
    dependencies {
        ...
        // Choose your Kotlin version
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
    }
}

Isso adiciona Kotlin ao seu projeto.

Etapa 2.2: Configurar o SDK do Braze

Para se conectar aos servidores da Braze, crie um arquivo braze.xml na pasta res/values do projeto. Cole o código a seguir e substitua a chave de API e o ponto final por seus valores:

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Adicione as permissões necessárias ao seu arquivo AndroidManifest.xml:

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

Etapa 2.3: Implemente o rastreamento da sessão do usuário

As chamadas para openSession() e closeSession() são tratadas automaticamente. Adicione o seguinte código ao método onCreate() de sua classe MainApplication:

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

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

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

Etapa 2.4: Lidar com atualizações de intenção

Se sua MainActivity tiver android:launchMode definido como singleTask, adicione o seguinte código à sua classe MainActivity:

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

Etapa 2.1: (Opcional) Configurar o Podfile para XCFrameworks dinâmicos

Para importar certas bibliotecas do Braze, como BrazeUI, em um arquivo Objective-C++, você deve usar a sintaxe #import. A partir da versão 7.4.0 do Braze Swift SDK, os binários têm um canal de distribuição opcional como XCFrameworks dinâmicos, que são compatíveis com essa sintaxe.

Se quiser usar esse canal de distribuição, substitua manualmente os locais de origem do CocoaPods em seu Podfile. Consulte o exemplo abaixo e substitua {your-version} pela versão relevante que você deseja importar:

1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'

Etapa 2.2: Instalar pods

Como o React Native vincula automaticamente as bibliotecas à plataforma nativa, você pode instalar o SDK com a ajuda do CocoaPods.

Na pasta raiz do projeto:

1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install

# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install

Etapa 2.3: Configurar o SDK do Braze

Importe o SDK da Braze na parte superior do arquivo AppDelegate.swift:

1
2
import BrazeKit
import braze_react_native_sdk

No método application(_:didFinishLaunchingWithOptions:), substitua a chave de API e o endpoint pelos valores de seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática em AppDelegate para facilitar o acesso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
    // Setup Braze
    let configuration = Braze.Configuration(
        apiKey: "{BRAZE_API_KEY}",
        endpoint: "{BRAZE_ENDPOINT}")
    // Enable logging and customize the configuration here.
    configuration.logger.level = .info
    let braze = BrazeReactBridge.perform(
      #selector(BrazeReactBridge.initBraze(_:)),
      with: configuration
    ).takeUnretainedValue() as! Braze

    AppDelegate.braze = braze

    /* Other configuration */

    return true
}

// MARK: - AppDelegate.braze

static var braze: Braze? = nil

Importe o SDK da Braze na parte superior do arquivo AppDelegate.m:

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

No método application:didFinishLaunchingWithOptions:, substitua a chave de API e o endpoint pelos valores de seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática em AppDelegate para facilitar o acesso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
                                                                    endpoint:@"{BRAZE_ENDPOINT}"];
  // Enable logging and customize the configuration here.
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazeReactBridge initBraze:configuration];
  AppDelegate.braze = braze;

  /* Other configuration */

  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

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

Etapa 3: Importe a biblioteca

Em seguida, import a biblioteca no seu código React Native. Para mais detalhes, confira nosso projeto de exemplo.

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

Etapa 4: Teste a integração (opcional)

Para testar sua integração de SDK, inicie uma nova sessão em qualquer plataforma para um usuário chamando o seguinte código no seu app.

1
Braze.changeUser("userId");

Por exemplo, é possível atribuir o ID do usuário na inicialização do app:

1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";

const App = () => {
  useEffect(() => {
    Braze.changeUser("some-user-id");
  }, []);

  return (
    <div>
      ...
    </div>
  )

No dashboard do Braze, acesse Pesquisa de Usuário e procure o usuário com o ID correspondente a some-user-id. Aqui, você pode verificar se os dados da sessão e do dispositivo foram registrados.

Próximos passos

Após integrar o SDK do Braze, você pode começar a implementar recursos comuns de envio de mensagens:

Integração do SDK do Roku

Etapa 1: Adicionar arquivos

Os arquivos do SDK da Braze podem ser encontrados no diretório sdk_files no repositório Braze Roku SDK.

  1. Adicione BrazeSDK.brs ao seu app no diretório source.
  2. Adicione BrazeTask.brs e BrazeTask.xml ao seu app no diretório components.

Etapa 2: Adicionar referências

Adicione uma referência a BrazeSDK.brs em sua cena principal usando o seguinte elemento script:

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

Etapa 3: Configurar

Dentro de main.brs, defina a configuração da Braze no nó global:

1
2
3
4
5
6
7
8
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})

Você pode encontrar seu endpoint de SDK e chave de API no dashboard da Braze.

Etapa 4: Inicializar Braze

Inicialize a instância Braze:

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

Configurações opcionais

Registro

Para depurar sua integração com a Braze, você pode visualizar o console de depuração do Roku para logs da Braze. Consulte Depuração de código dos desenvolvedores do Roku para saber mais.

Sobre o SDK do Unity Braze

Para obter uma lista completa de tipos, funções, variáveis e muito mais, consulte Arquivo de declaração do Unity. Além disso, se você já tiver integrado o Unity manualmente para iOS, poderá mudar para uma integração automatizada.

Integração do SDK da Unity

Pré-requisitos

Antes de começar, verifique se seu ambiente é suportado pela versão mais recente do Braze Unity SDK.

Etapa 1: Escolha seu pacote Braze Unity

O .unitypackage da Braze agrupa associações nativas para as plataformas Android e iOS, juntamente com uma interface C#.

Há vários pacotes do Braze Unity disponíveis para baixar na página de lançamentos do Braze Unity:

  • Appboy.unitypackage
    • Esse pacote reúne os SDKs do Braze para Android e iOS e a dependência SDWebImage para o SDK do iOS, que é necessária para a funcionalidade adequada dos recursos de envio de mensagens no app e cartões de conteúdo do Braze no iOS. O framework SDWebImage é usado para baixar e exibir imagens, inclusive GIFs. Se você pretende utilizar toda a funcionalidade da Braze, baixe e importe esse pacote.
  • Appboy-nodeps.unitypackage
    • Esse pacote é semelhante a Appboy.unitypackage, exceto pelo fato de que o framework SDWebImage não está presente. Esse pacote é útil se você não quiser que o framework SDWebImage esteja presente em seu app para iOS.

O .unitypackage da Braze agrupa associações nativas para as plataformas Android e iOS, juntamente com uma interface C#.

O pacote Braze Unity está disponível para download na página de lançamentos do Braze Unity com duas opções de integração:

  1. Apenas Appboy.unitypackage
    • Este pacote inclui os SDKs da Braze para Android e iOS sem nenhuma outra dependência. Com este método de integração, não haverá funcionalidade adequada do envio de mensagens in-app da Braze e dos recursos de Content Cards no iOS. Se você pretende utilizar a funcionalidade completa do Braze sem código personalizado, use a opção abaixo.
    • Para usar essa opção de integração, desmarque a opção Import SDWebImage dependency na interface do Unity em “Braze Configuration” (Configuração da Braze).
  2. Appboy.unitypackage com SDWebImage
    • Essa opção de integração agrupa os SDKs da Braze para Android e iOS e a dependência SDWebImage para o SDK iOS, que é necessária para o funcionamento adequado do envio de mensagens no app da Braze e dos recursos de cartões de conteúdo no iOS. O framework SDWebImage é usado para baixar e exibir imagens, inclusive GIFs. Se você pretende utilizar toda a funcionalidade da Braze, baixe e importe esse pacote.
    • Para importar automaticamente SDWebImage, marque a opção Import SDWebImage dependency na interface do Unity em “Braze Configuration” (Configuração da Braze).

Etapa 2: Importar o pacote

No Unity Editor, importe o pacote em seu projeto Unity navegando até Assets > Import Package > Custom Package (Ativos > Importar pacote > Pacote personalizado). Em seguida, clique em Importar.

Como alternativa, siga as instruções de importação de pacotes de ativos do Unity para obter mais detalhes sobre a importação de pacotes personalizados do Unity.

No Unity Editor, importe o pacote em seu projeto Unity navegando até Assets > Import Package > Custom Package (Ativos > Importar pacote > Pacote personalizado). Em seguida, clique em Importar.

Como alternativa, siga as instruções de importação de pacotes de ativos do Unity para obter mais detalhes sobre a importação de pacotes personalizados do Unity.

Etapa 3: Configurar o SDK

Etapa 3.1: Configurar AndroidManifest.xml

To fullo AndroidManifest.xml funcionar. Se o seu app não tiver um AndroidManifest.xml, você poderá usar o seguinte modelo. Caso contrário, se você já tiver um AndroidManifest.xml, confira se falta alguma das seções a seguir e adicione-as ao seu AndroidManifest.xml existente.

  1. Acesse o diretório Assets/Plugins/Android/ e abra o arquivo AndroidManifest.xml. Esse é o local padrão no Unity Editor.
  2. Em seu site AndroidManifest.xml, adicione as permissões e atividades necessárias do modelo a seguir.
  3. Quando terminar, o site AndroidManifest.xml deverá conter apenas uma Activity com "android.intent.category.LAUNCHER" presente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="REPLACE_WITH_YOUR_PACKAGE_NAME">

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

  <application android:icon="@drawable/app_icon" 
               android:label="@string/app_name">

    <!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
    <activity android:name="com.braze.unity.BrazeUnityPlayerActivity" 
      android:theme="@style/UnityThemeSelector"
      android:label="@string/app_name" 
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
      android:screenOrientation="sensor">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
    <service android:name="com.braze.push.BrazeFirebaseMessagingService"
      android:exported="false">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
      </intent-filter>
    </service>
  </application>
</manifest>

Etapa 3.2: Atualize AndroidManifest.xml com o nome do seu pacote

Para encontrar o nome do pacote, clique em File > Build Settings > Player Settings > guia Android (Arquivo > Configurações da versão > Configurações do player > guia Android).

Em seu AndroidManifest.xml, todas as instâncias de REPLACE_WITH_YOUR_PACKAGE_NAME devem ser substituídas pelo Package Name da etapa anterior.

Etapa 3.3: Adicionar dependências do gradle

Para adicionar dependências do Gradle ao seu projeto Unity, primeiro ative a opção “Custom Main Gradle Template” em suas configurações de publicação. Isso criará um arquivo gradle modelo que será usado em seu projeto. Um arquivo gradle lida com as dependências de configuração e outras configurações de projeto durante o desenvolvimento. Para saber mais, consulte o aplicativo de amostra do Braze Unity mainTemplate.gradle.

As seguintes dependências são necessárias:

1
2
3
4
5
6
implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"
implementation 'androidx.core:core:1.6.0'

Você também pode definir essas dependências usando o External Dependency Manager.

Etapa 3.4: Automatize a integração do Unity com o Android

A Braze oferece uma solução nativa do Unity para automatizar a integração do Unity com o Android.

  1. No Unity Editor, abra as configurações da Braze em Braze > Braze Configuration (Braze > Configuração da Braze).
  2. Marque a caixa Automate Unity Android Integration (Automatizar a integração do Unity com o Android ).
  3. No campo Braze API Key (Chave de API do Braze ), insira a chave de API de seu aplicativo encontrada em Manage Settings (Gerenciar configurações) no dashboard do Braze.

Etapa 3.1: Defina sua chave de API

A Braze oferece uma solução nativa do Unity para automatizar a integração do Unity com o iOS. Essa solução modifica o projeto do Xcode usando o PostProcessBuildAttribute e as subclasses UnityAppController do Unity que utilizam a macro IMPL_APP_CONTROLLER_SUBCLASS.

  1. No Unity Editor, abra as configurações da Braze em Braze > Braze Configuration (Braze > Configuração da Braze).
  2. Marque a opção Automate Unity iOS Integration (Automatizar a integração do Unity com iOS).
  3. No campo Braze API Key (Chave da API da Braze), insira a chave de API do seu app que está disponível em Gerenciar configurações.

Se o seu app já estiver usando outra subclasse UnityAppController, será necessário mesclar a implementação da sua subclasse com AppboyAppDelegate.mm.

Personalização do pacote Unity

Etapa 1: Clonar o repositório

Em seu terminal, clone o repositório do Braze Unity SDK no GitHub e, em seguida, navegue até essa pasta:

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

Etapa 2: Exportar 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 seguinte comando para exportar o pacote para braze-unity-sdk/unity-package/.

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

Etapa 3: Importar pacote para o Unity

  1. No Unity, importe o pacote desejado para seu projeto Unity navegando até Ativos > Importar pacote > Pacote personalizado.
  2. Se houver algum arquivo que você não queira importar, desmarque-o agora.
  3. 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.

  1. Remova todo o código relacionado à Braze da subclasse UnityAppController de seu projeto do Xcode.
  2. Remova as bibliotecas do Braze para iOS de seu projeto Unity ou Xcode (como Appboy_iOS_SDK.framework e SDWebImage.framework).
  3. Importe o pacote Braze Unity em seu projeto novamente. Para obter um passo a passo completo, consulte Etapa 2: Importe o pacote.
  4. 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:

  1. Abra Configurações da Braze navegando até Braze > Configuração da Braze.
  2. Clique no menu suspenso Show Braze Android Settings (Mostrar configurações do Android Braze ).
  3. No campo Nível de registro do SDK, insira o valor “0”.

Compatibilidade com o Prime 31

Para usar o plug-in Braze Unity com os plug-ins Prime31, edite o site AndroidManifest.xml de seu projeto para usar as classes Activity compatíveis com o Prime31. Altere todas as referências de de com.braze.unity.BrazeUnityPlayerActivity para com.braze.unity.prime31compatible.BrazeUnityPlayerActivity

Envio de mensagens para dispositivos da Amazon (ADM)

O Braze oferece suporte à integração do ADM push em apps Unity. Se quiser integrar o ADM push, 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 o Braze, acesse nossas instruções de integração push do ADM.

Ampliação do reprodutor Braze Unity (somente Android)

O arquivo de exemplo AndroidManifest.xml fornecido tem uma classe Activity registrada, BrazeUnityPlayerActivity. Essa classe é integrada ao SDK da Braze e estende o site UnityPlayerActivity com manipulação de sessão, registro de mensagens no app, registro de análise de dados de notificação por push e muito mais. Para saber mais sobre como estender a classe UnityPlayerActivity, consulte Unity.

Se estiver criando seu próprio UnityPlayerActivity personalizado em uma biblioteca ou projeto de plug-in, será necessário estender nosso BrazeUnityPlayerActivity para integrar sua funcionalidade personalizada ao Braze. Antes de começar a trabalhar na extensão do site BrazeUnityPlayerActivity, siga nossas instruções para integrar a Braze em seu projeto Unity.

  1. Adicione o Braze Android SDK como uma dependência de sua biblioteca ou projeto de plug-in, conforme descrito nas instruções de integração do Braze Android SDK.
  2. Integre nosso Unity .aar, que contém nossa funcionalidade específica do Unity, ao seu projeto de biblioteca Android que está sendo desenvolvido para o Unity. O site appboy-unity.aar está disponível em nosso repositório público. Depois que nossa biblioteca Unity for integrada com sucesso, modifique seu site UnityPlayerActivity para estender o BrazeUnityPlayerActivity.
  3. Exporte sua biblioteca ou projeto de plug-in e solte-o em /<your-project>/Assets/Plugins/Android normalmente. Não inclua nenhum código-fonte da Braze em sua biblioteca ou plug-in, pois eles já estarão presentes em /<your-project>/Assets/Plugins/Android.
  4. Edite o site /<your-project>/Assets/Plugins/Android/AndroidManifest.xml para especificar a subclasse BrazeUnityPlayerActivity como a atividade principal.

Agora, você poderá empacotar um .apk do Unity IDE totalmente integrado à Braze e que contenha sua funcionalidade personalizada do UnityPlayerActivity.

Solução de problemas

Erro: “O arquivo não pôde ser lido”

Os erros semelhantes aos seguintes podem ser ignorados com segurança. O software da Apple usa uma extensão PNG proprietária chamada CgBI, que a Unity não reconhece. Esses erros não afetarão sua compilação do iOS nem a exibição adequada das imagens associadas no pacote Braze.

1
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 Braze .NET MAUI (anteriormente Xamarin) fornecerá a você funcionalidades básicas de análise de dados, além de mensagens in-app com as quais você pode engajar seus usuários.

Pré-requisitos

Antes de integrar o SDK Braze .NET MAUI, certifique-se de atender aos seguintes requisitos:

  • A partir de 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 de version 4.0.0, este SDK deixou de dar suporte ao Xamarin & 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 uma associação 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 a associação 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 NuGet.org repositório central. Na barra lateral do Visual Studio, clique com o botão direito do mouse na pasta Packages e clique em Add Packages.... Procure por “Braze” e instale o pacote BrazePlatform.BrazeAndroidBinding em seu projeto.

Para usar os serviços de localização e geofences do Braze, instale também o pacote BrazePlatform.BrazeAndroidLocationBinding.

O segundo método de integração é incluir a fonte de ligação. Sob 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 Braze Android.

Para usar os serviços de localização e geofences do Braze, adicione também uma referência de projeto ao BrazeAndroidLocationBinding.csproj encontrado sob appboy-component/src/androidnet6/BrazeAndroidLocationBinding.

Um binding .NET MAUI é uma forma de usar bibliotecas nativas em apps .NET MAUI. A implementação de uma associação consiste em criar uma interface C# para a biblioteca e, em seguida, usar essa interface em seu aplicativo. Há duas maneiras de incluir a associação 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 NuGet.org repositório central. 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.BrazeUICompatpara ajudar a facilitar sua migração para o .NET MAUI.

O segundo método de integração é incluir a fonte de ligação. Sob 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 Braze iOS. Verifique se o site BrazeiOSBinding.csproj está sendo exibido na pasta “Reference” do seu projeto.

Etapa 2: Configure sua instância do 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:

1
2
3
4
5
6
7
8
9
  <?xml version="1.0" encoding="utf-8"?>
  <resources>
    <string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
    <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
    <string-array name="com_braze_internal_sdk_metadata">
      <item>XAMARIN</item>
      <item>NUGET</item>
    </string-array>
  </resources>

Se estiver incluindo a fonte de vinculação manualmente, remova <item>NUGET</item> do seu código.

Etapa 2.2: Adicionar 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:

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

Para obter um exemplo de seu AndroidManifest.xml, consulte o aplicativo de amostra do Android MAUI.

Etapa 2.3: Rastreie as sessões de usuários e o registro de mensagens no app

Para ativar o rastreamento da 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:

1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());

Ao configurar sua instância da Braze, adicione o seguinte snippet para configurar sua instância:

1
2
3
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 amostra MAUI do iOS.

Etapa 3: Teste a integração

Agora você pode iniciar seu aplicativo e ver as sessões sendo registradas no dashboard do 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 do 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.

Integração do app ChatGPT

Configuração

Etapa 1: Obtenha o arquivo de integração do 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 do Braze e funções auxiliares.

Etapa 2: Instale as dependências

Instale nosso SDK Web para o conjunto mais atualizado de recursos do Braze:

Para integração do lado do cliente:

1
npm install @braze/web-sdk

Implementação

Existem duas maneiras de integrar o Braze com seu app ChatGPT, dependendo do seu caso de uso:

Integração do lado do cliente (widgets personalizados)

Para exibir mensagens do Braze e rastrear interações de usuários dentro dos widgets personalizados do seu app ChatGPT, use a integração do SDK Web. Um exemplo completo de mensagens pode ser encontrado em nosso repositório de amostras aqui.

Configure os metadados do widget

Adicione os seguintes metadados ao seu arquivo de servidor MCP para permitir domínios do Braze, garantindo que você atualize o domínio CDN com base na sua região:

1
2
3
4
5
6
7
8
9
"openai/widgetCSP": {
  connect_domains: ["https://YOUR-SDK-ENDPOINT"],
  resource_domains: [
    "https://appboy-images.com",
    "https://braze-images.com",
    "https://cdn.braze.eu",
    "https://use.fontawesome.com"
  ],
}

Substitua YOUR-SDK-ENDPOINT pelo seu endpoint real do SDK do Braze.

Configure o hook useBraze

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { useBraze } from "./utils/braze";

function YourWidget() {
  const braze = useBraze({
    apiKey: "your-braze-api-key",
    baseUrl: "your-braze-endpoint.braze.com",
  });

  useEffect(() => {
    if (!braze.isInitialized) {
      return;
    }

    // Set user identity
    braze.changeUser("user-id-123");
    
    // Log widget interactions
    braze.logCustomEvent("viewed_pizzaz_list");
  }, [braze.isInitialized]);

  return (
    // Your widget JSX
  );
}

Exiba os Cartões de Conteúdo do Braze

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const [cards, setCards] = useState([]);

useEffect(() => {
  // Get cached content cards
  setCards(braze.getCachedContentCards()?.cards ?? []);

  // Subscribe to content card updates
  braze.subscribeToContentCardsUpdates((contentCards) => {
    setCards(contentCards.cards);
  });

  // Open session
  braze.openSession();

  return () => {
    braze.removeAllSubscriptions();
  }
}, []);

Rastreie eventos do widget

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Track user interactions within your widget
const handleButtonClick = () => {
  braze.logCustomEvent("widget_button_clicked", {
    button_type: "save_list",
    widget_name: "pizza_list"
  });
};

const handleItemInteraction = (itemId) => {
  braze.logCustomEvent("item_interacted", {
    item_id: itemId,
    interaction_type: "view_details"
  });
};

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 [email protected]. Para rastreamento de eventos e compras do seu servidor MCP, use nossa API REST.

Sobre o SDK Braze Vega

O SDK Braze Vega permite coletar análise de dados e exibir mensagens ricas dentro do app para seus usuários. A maioria dos métodos no SDK Braze Vega são assíncronos e retornam promessas que devem ser aguardadas ou resolvidas.

Integrando o SDK Braze Vega

Etapa 1: Instalar a biblioteca do 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.

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

Após a instalação, você pode importar os métodos que precisa:

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

Se seu projeto usa Yarn, você pode adicionar o SDK Braze Vega como uma dependência.

1
yarn add @braze/vega-sdk

Após a instalação, você pode importar os métodos que precisa:

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

Etapa 2: Inicializar 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 de SDK encontrada em Configurações > Configurações do App dentro do seu dashboard Braze.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { useEffect } from "react-native";
import {
  initialize,
  changeUser,
  logCustomEvent,
  openSession,
  setCustomUserAttribute,
  setUserCountry
} from "@braze/vega-sdk";

const App = () => {
  useEffect(() => {
    const initBraze = async () => {
      // Initialize the SDK
      await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
        sessionTimeoutInSeconds: 60,
        appVersionNumber: "1.2.3.4",
        enableLogging: true, // set to `true` for debugging
      });

      // Change user
      await changeUser("user-id-123");
      
      // Start a session
      await openSession();
      
      // Log custom events and set user attributes
      logCustomEvent("visited-page", { pageName: "home" });
      setCustomUserAttribute("my-attribute", "my-attribute-value");
      setUserCountry("USA");
    };
    
    initBraze();
  }, []);
  
  return (
    // Your app components
  );
};

Configurações opcionais

Registro

Você pode ativar o registro do SDK para ajudar na depuração e solução de problemas. Existem várias maneiras de ativar o registro.

Ativar registro durante a inicialização

Passe enableLogging: true para initialize() para registrar mensagens de depuração no console:

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

Ativar registro após a inicialização

Use toggleLogging() para ativar ou desativar o registro do SDK após a inicialização:

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

// Enable logging
toggleLogging();

Registro personalizado

Use setLogger() para fornecer uma função de logger personalizada para mais controle sobre como os registros do SDK são tratados:

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

setLogger((message) => {
  console.log("Braze Custom Logger: " + message);
  // Add your custom logging logic here
});

Opções de configuração

Você pode passar opções de configuração adicionais para initialize() para personalizar o comportamento do SDK:

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

Fazendo upgrade do SDK

Quando você referencia o SDK Braze Vega do NPM ou Yarn, você pode fazer upgrade para a versão mais recente atualizando sua dependência de pacote:

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

Testando sua integração

Para verificar se sua integração de SDK está funcionando corretamente:

  1. Inicialize o SDK com enableLogging: true para ver mensagens de depuração no console
  2. Certifique-se de que você await changeUser() antes de chamar outros métodos do SDK
  3. Chame await openSession() para iniciar uma sessão
  4. Verifique seu dashboard Braze em Visão Geral para verificar se os dados da sessão estão sendo registrados
  5. Teste o registro de um evento personalizado e verifique se ele aparece no seu dashboard
New Stuff!