Ir para o conteúdo

Guia do repositório do Web SDK

Sobre o Braze Web SDK

O Braze Web SDK permite integrar a plataforma de engajamento com clientes da Braze diretamente aos seus aplicativos web. Desenvolvido em TypeScript e projetado para o desenvolvimento web moderno, esse SDK oferece ferramentas completas para gerenciamento de usuários, envio de mensagens, análise de dados e Feature Flags.

O que você pode fazer

  • Gerenciamento de usuários: Rastreie e gerencie identidades, atributos e comportamentos dos usuários em todo o seu aplicativo web
  • Mensagens no app: Exiba mensagens e notificações direcionadas aos usuários enquanto eles navegam ativamente pelo seu site
  • Content Cards: Mostre feeds de conteúdo personalizado e cartões promocionais que são atualizados em tempo real
  • Banners: Mostre mensagens de banner em posicionamentos específicos do seu site
  • Notificações por push: Envie notificações por push para a web e engaje os usuários mesmo quando eles não estiverem no seu site
  • Feature Flags: Controle o lançamento de recursos e testes A/B com o gerenciamento de Feature Flags no lado do servidor
  • Análise de dados: Rastreie eventos personalizados, interações dos usuários e métricas de conversão
  • Gerenciamento de sessões: Monitore as sessões dos usuários e os padrões de engajamento

Seja um aplicativo de página única, um site de e-commerce ou uma plataforma de conteúdo, o Braze Web SDK oferece as ferramentas necessárias para criar experiências personalizadas e envolventes que impulsionam o crescimento e a retenção.

Pré-requisitos

Antes de integrar o Braze Web SDK, você vai precisar de:

  • Conta da Braze: Uma conta da Braze com acesso à API
  • Chave de API: A chave de API do seu app, disponível no dashboard da Braze
  • Endpoint do SDK: O URL do endpoint do SDK da Braze (por exemplo, sdk.iad-01.braze.com)

Obtendo suas credenciais

  1. Chave de API: Disponível no dashboard da Braze em Configurações → Chaves de API
  2. Endpoint do SDK: Localizado em Configurações → Autenticação do SDK → Endpoints
  3. Service Worker: Necessário para notificações por push (consulte a seção Notificações por push)

Instalação

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

Início rápido

O snippet a seguir mostra a configuração mínima necessária para inicializar o Braze Web SDK.

import * as braze from "@braze/web-sdk";

// Initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE",
});

braze.changeUser('Jane Doe');

Referência de configuração

Opções de inicialização

A função initialize aceita um objeto de opções com as seguintes propriedades:

Opção Tipo Padrão Descrição
baseUrl string Obrigatório Essa opção é obrigatória para configurar o Braze Web SDK para usar o endpoint adequado à sua integração. Por exemplo: braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'sdk.iad-03.braze.com' })
enableLogging boolean false Defina como true para ativar o registro em log por padrão. Isso fará com que a Braze registre logs no console JavaScript, que fica visível para todos os usuários! Recomendamos remover essa opção ou fornecer um registrador alternativo com setLogger antes de publicar sua página em produção.
allowUserSuppliedJavascript boolean false Por padrão, o Braze Web SDK não permite ações de clique em JavaScript fornecidas pelo usuário nem ativa mensagens no app em HTML e Banners, já que eles permitem que os usuários do dashboard da Braze executem JavaScript no seu site. Para indicar que você confia nos usuários do dashboard da Braze para escrever ações de clique em JavaScript não maliciosas, defina essa propriedade como true.
doNotLoadFontAwesome boolean false A Braze usa o Font Awesome para os ícones das mensagens no app. Por padrão, a Braze carrega automaticamente o FontAwesome 4.7.0 a partir da CDN do FontAwesome. Para desativar esse comportamento (por exemplo, porque seu site usa uma versão personalizada do FontAwesome), defina essa opção como true. Se fizer isso, você será responsável por garantir que o FontAwesome seja carregado no seu site. Caso contrário, as mensagens no app podem não ser renderizadas corretamente.
inAppMessageZIndex number 999999 Por padrão, o SDK da Braze exibe In-App Messages com um z-index de 999999. Forneça um valor para essa opção para substituir esse padrão.
sessionTimeoutInSeconds number 30 Por padrão, uma sessão expira após 30 segundos de inatividade. Forneça um valor para essa opção para substituir esse padrão.
deviceId string Gerado automaticamente Por padrão, a Braze atribui um GUID aleatório como ID do dispositivo. Forneça um valor para essa opção de configuração para substituir esse padrão por um valor próprio.
appVersion string undefined Se você fornecer um valor para essa opção, os eventos de usuário enviados à Braze serão associados à versão informada, que pode ser usada para segmentação de usuários.
appVersionNumber string undefined Um valor numérico de versão do app que pode ser usado para segmentação de usuários. Esse valor deve ser enviado com quatro campos, como “1.2.3.4”. Caso contrário, será ignorado. Nota: appVersion também deve estar definido, seja com o mesmo valor ou com um nome exclusivo para essa versão.
contentSecurityNonce string undefined Se você fornecer um valor para essa opção, o SDK da Braze adicionará o nonce a todos os elementos <script> e <style> criados pelo SDK. Isso permite que o SDK da Braze funcione com a Content Security Policy do seu site. Além de definir esse nonce, talvez você também precise permitir o carregamento do FontAwesome. Para isso, adicione use.fontawesome.com à lista de permissões da sua Content Security Policy ou use a opção doNotLoadFontAwesome e carregue-o manualmente.
noCookies boolean false Por padrão, o Braze Web SDK usa cookies. Para desativar o uso de cookies, defina essa opção como true. Desativar os cookies pode afetar a capacidade do SDK de lembrar a identidade dos usuários entre sessões.
allowCrawlerActivity boolean false Por padrão, o Braze Web SDK ignora a atividade de spiders ou rastreadores web conhecidos, como o Google, com base na string do user agent. Isso economiza pontos de dados, deixa a análise de dados mais precisa e pode melhorar o ranqueamento da página. No entanto, se você quiser que a Braze registre a atividade desses rastreadores, defina essa opção como true.
disablePushTokenMaintenance boolean false Por padrão, os usuários que já concederam permissão para web push (por exemplo, por meio de requestPushPermission ou de um provedor de push anterior) sincronizam automaticamente o token por push com o backend da Braze a cada nova sessão para garantir a entregabilidade. Para desativar esse comportamento, defina essa opção como true.
enableSdkAuthentication boolean false Defina como true para ativar o recurso de autenticação do SDK. Para saber mais sobre a autenticação do SDK, consulte nossa documentação do produto.
manageServiceWorkerExternally boolean false Por padrão, o Braze Web SDK gerencia o próprio service worker para notificações por push. Se você já gerencia um service worker no seu aplicativo e quer incorporar a ele a funcionalidade do service worker da Braze, defina essa opção como true e inclua o código do service worker da Braze no seu arquivo de service worker.
minimumIntervalBetweenTriggerActionsInSeconds number 30 Por padrão, as ações-gatilho (por exemplo, exibir uma mensagem no app) podem ser disparadas no máximo uma vez a cada 30 segundos por usuário. Forneça um valor para essa opção para substituir esse padrão.
serviceWorkerLocation string undefined Por padrão, o Braze Web SDK procura o arquivo do service worker na raiz do seu domínio. Forneça um valor para essa opção para substituir esse padrão e especificar um local personalizado para o arquivo do service worker.
safariWebsitePushId string undefined Obrigatório para notificações por push do Safari. Esse valor pode ser encontrado na sua conta Apple Developer. Para saber mais sobre a configuração de notificações por push do Safari, consulte nossa documentação do produto.
localization string undefined Se você fornecer um valor para essa opção, o SDK da Braze tentará exibir mensagens no app e Content Cards nesse local.
openInAppMessagesInNewTab boolean false Por padrão, os links nas mensagens no app são abertos na mesma guia. Defina essa opção como true para que sejam abertos em uma nova guia.
openCardsInNewTab boolean false Por padrão, os links nos Content Cards são abertos na mesma guia. Defina essa opção como true para que sejam abertos em uma nova guia.
requireExplicitInAppMessageDismissal boolean false Por padrão, as mensagens no app podem ser descartadas com um clique fora delas ou ao pressionar a tecla Esc. Defina essa opção como true para exigir que os usuários cliquem explicitamente em um botão de descarte ou de ação para descartar a mensagem.
devicePropertyAllowlist string[] undefined Por padrão, o SDK da Braze detecta e coleta automaticamente todas as propriedades de dispositivo em DeviceProperties. Para substituir esse comportamento, forneça um array de DeviceProperties. Para impedir o envio de todas as propriedades aos servidores da Braze, forneça um array vazio. Sem algumas propriedades, nem todos os recursos funcionarão corretamente. Por exemplo, sem o fuso horário, a entrega no fuso local não funcionará.
serviceWorkerScope string undefined Por padrão, o Braze Web SDK registra o service worker com o escopo padrão (o diretório do service worker). Forneça um valor para essa opção para substituir esse padrão e especificar um escopo personalizado para o service worker.

Recursos principais

Inicialização e configuração

Inicialização básica

import * as braze from "@braze/web-sdk";

// Initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: 'YOUR-SDK-ENDPOINT-HERE',
    enableLogging: true // Remove in production
});

// Start a session
braze.openSession();

Opções avançadas de inicialização

import * as braze from "@braze/web-sdk";

braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: 'YOUR-SDK-ENDPOINT-HERE',
    enableLogging: true,
    allowUserSuppliedJavascript: true,
    doNotLoadFontAwesome: false,
    inAppMessageZIndex: 999999,
    sessionTimeoutInSeconds: 30,
    deviceId: 'custom-device-id',
    appVersion: '1.0.0',
    contentSecurityNonce: 'your-nonce-here'
});

Gerenciamento de usuários

Alterar usuário

import { changeUser } from "@braze/web-sdk";

// Change to a new user
changeUser('user-123');

Definir atributos do usuário

import { getUser } from "@braze/web-sdk";

const user = getUser();
if (user) {
    user.setEmail('[email protected]');
    user.setFirstName('John');
    user.setLastName('Doe');
    user.setCustomUserAttribute('subscription_tier', 'premium');
    user.setCustomUserAttribute('last_login', new Date());
}

Definir o local do usuário

import { getUser } from "@braze/web-sdk";

const user = getUser();
if (user) {
    user.setCountry('US');
    user.setHomeCity('San Francisco');
    user.setLanguage('en');
    user.setCustomLocationAttribute('latitude', 37.7749);
    user.setCustomLocationAttribute('longitude', -122.4194);
}

Aliases de usuário e grupos de inscrições

import { getUser } from "@braze/web-sdk";

const user = getUser();
if (user) {
    // Add alias
    user.addAlias('external_id', '12345');

    // Add to subscription group
    user.addToSubscriptionGroup('newsletter_subscribers');

    // Remove from subscription group
    user.removeFromSubscriptionGroup('old_subscribers');
}

Logout do usuário

import { wipeData } from "@braze/web-sdk";

// There is no explicit method to logout. To "forget" the current users entirely, use wipeData().
// This is a complete data wipe (use with caution, this wipes things such as device ID)
wipeData();

In-App Messages

Exibição automática

import { automaticallyShowInAppMessages } from "@braze/web-sdk";

// Automatically show in-app messages
automaticallyShowInAppMessages();

Exibição manual

import { subscribeToInAppMessage, showInAppMessage } from "@braze/web-sdk";

// Subscribe to in-app messages
subscribeToInAppMessage((inAppMessage) => {
    // Show the message
    showInAppMessage(inAppMessage);
});

Tratamento personalizado de mensagens no app

import { subscribeToInAppMessage, showInAppMessage } from "@braze/web-sdk";

subscribeToInAppMessage((inAppMessage) => {
    // Custom logic before showing
    if (inAppMessage.getExtras()['priority'] === 'high') {
        showInAppMessage(inAppMessage);
    }
});

Registrar interações com mensagens no app

import {
    logInAppMessageClick,
    logInAppMessageImpression,
    logInAppMessageButtonClick
} from "@braze/web-sdk";

// Log when user sees the message
logInAppMessageImpression(inAppMessage);

// Log when user clicks the message
logInAppMessageClick(inAppMessage);

// Log when user clicks a button in the message
logInAppMessageButtonClick(inAppMessage, button);

Mensagens no app em HTML personalizado

import { subscribeToInAppMessage, logInAppMessageImpression, logInAppMessageClick } from "@braze/web-sdk";

// Don't call automaticallyShowInAppMessages() when using custom rendering
// braze.automaticallyShowInAppMessages(); // Comment this out

subscribeToInAppMessage((inAppMessage) => {
    // Extract message data
    const messageData = {
        title: inAppMessage.getMessage(),
        body: inAppMessage.getBody(),
        imageUrl: inAppMessage.getImageUrl(),
        buttons: inAppMessage.getButtons(),
        deepLink: inAppMessage.getExtras()['deep_link_url']
    };

    // Define your own HTML structure, using messageData
    const customHTML = ` <!-- Add your custom styling and structure -->`;

    /* Render the In-App Message here */

    // Here we naively log an impression once the message is rendered.
    // Be precise about exactly when you want to log an impression (ie. only the first time it enters the view port).
    logInAppMessageImpression(inAppMessage);
});

// Handle button clicks and deep linking
const handleButtonClick = (button, inAppMessage) => {
    logInAppMessageClick(inAppMessage);
    // Handle additional click actions (ie. deep linking)
};

Content Cards

Exibir Content Cards

import { showContentCards } from "@braze/web-sdk";

// Show content cards in default location
showContentCards();

// Show in specific container
const container = document.getElementById('content-cards-container');
showContentCards(container);

Inscrever-se em atualizações de Content Cards

import { subscribeToContentCardsUpdates } from "@braze/web-sdk";

subscribeToContentCardsUpdates((cards) => {
    console.log('Content cards updated:', cards);
    // Display cards or update UI
});

Registrar interações com Content Cards

import {
    logContentCardClick,
    logContentCardImpressions,
    logCardDismissal
} from "@braze/web-sdk";

// Log card impressions
logContentCardImpressions(cards);

// Log card clicks
logContentCardClick(card);

// Log card dismissals
logCardDismissal(card);

Filtrar Content Cards

import { showContentCards } from "@braze/web-sdk";

// Show only pinned cards
// You can also provide a parent element instead of null
showContentCards(null, (cards) => {
    return cards.filter(card => card.getIsPinned());
});

Solicitar a atualização dos Content Cards

import { requestContentCardsRefresh } from "@braze/web-sdk";

requestContentCardsRefresh(
    () => console.log('Content cards refreshed'),
    () => console.log('Failed to refresh content cards')
);

Content Cards personalizados

import { subscribeToContentCardsUpdates, logContentCardClick, logContentCardImpressions, requestContentCardsRefresh } from "@braze/web-sdk";

// State for impression de-duping
const loggedImpressions = new Set();
const idToCard = new Map();

subscribeToContentCardsUpdates((cards) => {
    // Build cards one by one
    cards.getCards().forEach(card => {
        // Skip control cards
        if (card.getIsControl()) return;

        // Extract card data
        const cardData = {
            id: card.getId(),
            title: card.getTitle(),
            description: card.getDescription(),
            imageUrl: card.getImageUrl(),
            url: card.getUrl(),
            extras: card.getExtras()
        };

        // Define your own HTML structure, using cardData
        const customHTML = ` <!-- Add your custom styling and structure -->`;

        /* Render each card here */

        // Basic observer for impression logging.
        // Be precise about exactly when you want to log an impression (ie. only the first time it enters the view port).
        const observer = new IntersectionObserver((entries) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    logContentCardImpressions([card]);
                }
            });
        });

        // Observe card element when rendered
        // observer.observe(cardElement);
    });
});

// Handle card clicks
const handleCardClick = (card) => {
    logContentCardClick(card);
    // Handle additional click actions (ie. navigation)
};

Notificações por push

Solicitar permissão de push

import { requestPushPermission } from "@braze/web-sdk";

requestPushPermission(
    () => console.log('Push permission granted'),
    () => console.log('Push permission denied')
);

Verificar o suporte a push

import { isPushSupported, isPushPermissionGranted } from "@braze/web-sdk";

if (isPushSupported()) {
    if (isPushPermissionGranted()) {
        console.log('Push notifications are enabled');
    } else {
        console.log('Push permission not granted');
    }
}

Cancelar o registro de push

import { unregisterPush } from "@braze/web-sdk";

unregisterPush(
    () => console.log('Successfully unregistered'),
    () => console.log('Failed to unregister')
);

Feature Flags

Obter um Feature Flag

import { getFeatureFlag } from "@braze/web-sdk";

const featureFlag = getFeatureFlag('new_checkout_flow');
if (featureFlag) {
    const isEnabled = featureFlag.getBooleanProperty('enabled', false);
    const rolloutPercentage = featureFlag.getNumberProperty('rollout_percentage', 0);

    if (isEnabled) {
        // Enable new checkout flow
    }
}

Inscrever-se em atualizações de Feature Flags

import { subscribeToFeatureFlagsUpdates } from "@braze/web-sdk";

subscribeToFeatureFlagsUpdates((featureFlags) => {
    featureFlags.forEach(flag => {
        console.log(`Feature flag ${flag.getId()}: ${flag.getBooleanProperty('enabled')}`);
    });
});

Registrar impressões de Feature Flags

import { logFeatureFlagImpression } from "@braze/web-sdk";

const featureFlag = getFeatureFlag('new_feature');
if (featureFlag) {
    logFeatureFlagImpression(featureFlag);
}

Solicitar a atualização dos Feature Flags

import { refreshFeatureFlags } from "@braze/web-sdk";

refreshFeatureFlags(
    () => console.log('Feature flags refreshed'),
    () => console.log('Failed to refresh feature flags')
);

Banners

Obter e exibir Banners

import { getBanner, insertBanner } from "@braze/web-sdk";

const banner = getBanner('homepage_banner');
if (banner) {
    // Insert banner into specific element
    const container = document.getElementById('banner-container');
    insertBanner(banner, container);
}

Inscrever-se em atualizações de Banners

O assinante recebe o cache de Banners em memória do SDK. Uma única atualização pode incluir posicionamentos de atualizações anteriores, e não apenas os IDs de posicionamento da chamada mais recente de requestBannersRefresh.

import { insertBanner, subscribeToBannersUpdates } from "@braze/web-sdk";

subscribeToBannersUpdates((banners) => {
    Object.entries(banners).forEach(([placementId, banner]) => {
        if (banner) {
            console.log(`Banner for ${placementId}:`, banner);

            // Insert banner into specific element
            const container = document.getElementById(`banner-container-${placementId}`);
            insertBanner(banner, container);
        }
    });
});

Descartar Banners em uma interface personalizada

import { dismissBanner, getBanner, subscribeToBannersUpdates } from "@braze/web-sdk";

subscribeToBannersUpdates((banners) => {
    const banner = getBanner("homepage_banner");
    const container = document.getElementById("custom-banner-container");
    if (!container) {
        return;
    }

    if (!banner) {
        container.replaceChildren();
        return;
    }

    banner.subscribeToDismissedEvent(() => {
        console.log("Dismissed banner:", banner);
    });

    const closeButton = document.createElement("button");
    closeButton.textContent = "Close";
    closeButton.addEventListener("click", () => {
        dismissBanner(banner);
    });

    // Render your custom UI here and include the close button.
});

Quando você chama dismissBanner(banner), o SDK gerencia o estado de descarte do Banner, remove o Banner das atualizações de Banners ativos, notifica os assinantes do evento de descarte do Banner e sincroniza o descarte com a Braze. Interfaces personalizadas devem usar subscribeToBannersUpdates para reagir à remoção do Banner descartado, em vez de tratar dismissBanner apenas como uma alteração local na interface ou apenas como um método de registro de análise de dados.

Solicitar a atualização de Banners

requestBannersRefresh() mescla os dados ao cache de Banners existente. Somente os IDs de posicionamento que você solicitar são adicionados, atualizados ou removidos. Os Banners em cache de outros posicionamentos permanecem no cache e vencem no horário de vencimento original. Se o servidor não retornar nenhum Banner para um posicionamento solicitado, esse posicionamento é removido do cache.

import { requestBannersRefresh } from "@braze/web-sdk";

requestBannersRefresh(
    ["placement_1", "placement_2"],
    () => console.log('Banners refreshed'),
    () => console.log('Failed to refresh banners')
);

Análise de dados e eventos

Registrar eventos personalizados

import { logCustomEvent } from "@braze/web-sdk";

// Simple event
logCustomEvent('button_clicked');

// Event with properties
logCustomEvent('purchase', {
    product_id: '123',
    price: 29.99,
    currency: 'USD'
});

Registrar compras

import { logPurchase } from "@braze/web-sdk";

logPurchase('product-123', 29.99, 'USD', 1, {
    category: 'electronics',
    brand: 'Apple'
});

Solicitar o envio imediato de dados

import { requestImmediateDataFlush } from "@braze/web-sdk";

// Force immediate data send
requestImmediateDataFlush();

Gerenciamento de sessões

Abrir sessão

import { openSession } from "@braze/web-sdk";

// Start a new session
openSession();

Verificar o status do SDK

import { isInitialized, isDisabled } from "@braze/web-sdk";

if (isInitialized()) {
    console.log('SDK is initialized');

    if (isDisabled()) {
        console.log('SDK is disabled');
    }
}

Ativar/desativar o SDK

import { enableSDK, disableSDK } from "@braze/web-sdk";

// Disable SDK
disableSDK();

// Re-enable SDK
enableSDK();

Gerenciamento de dados

Apagar dados

import { wipeData } from "@braze/web-sdk";

// Remove all locally stored data
wipeData();

Destruir o SDK

import { destroy } from "@braze/web-sdk";

// Clean up SDK resources
destroy();

Obter o ID do dispositivo

import { getDeviceId } from "@braze/web-sdk";

const deviceId = getDeviceId();
console.log('Device ID:', deviceId);

Autenticação do SDK

import { setSdkAuthenticationSignature } from "@braze/web-sdk";

// Set authentication signature
setSdkAuthenticationSignature('your-signature-here');

Inscrever-se em falhas de autenticação

import { subscribeToSdkAuthenticationFailures } from "@braze/web-sdk";

subscribeToSdkAuthenticationFailures((error) => {
    console.log('Authentication failed:', error);
    // Provide new signature
    setSdkAuthenticationSignature('new-signature');
});

Padrões de integração

Frameworks SSR

Se você usa um framework de renderização do lado do servidor (SSR), como o Next.js, pode encontrar erros, porque o SDK foi feito para ser executado em um ambiente de navegador. Para resolver esses problemas, importe o SDK dinamicamente.

Você ainda pode aproveitar os benefícios do tree-shaking. Para isso, exporte as partes do SDK de que precisa em um arquivo separado e depois importe esse arquivo dinamicamente no seu componente.

// 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 você usa o webpack para empacotar seu app, pode aproveitar os comentários mágicos dele para importar dinamicamente apenas as partes do SDK de que precisa.

// 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();
    });
}, []);

Vite

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

export default {
    optimizeDeps: {
        exclude: ['@braze/web-sdk']
    }
}

Framework Jest

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

{
  "jest": {
    "transformIgnorePatterns": [
      "/node_modules/(?!@braze)"
    ]
  }
}

Definição de módulo assíncrona (AMD)

Desativar o suporte a AMD

Se o seu site usa o RequireJS ou outro carregador de módulos AMD, mas você prefere carregar o Braze Web SDK pela CDN, pode carregar uma versão da biblioteca sem suporte a AMD. Essa versão da biblioteca pode ser carregada a partir deste local na CDN: https://js.appboycdn.com/web-sdk/6.3/braze.no-amd.min.js

Carregador de módulos

Se você usa o RequireJS ou outros carregadores de módulos AMD, recomendamos hospedar uma cópia da nossa biblioteca e referenciá-la como faria com outros recursos:

require(['path/to/braze.min.js'], function(braze) {
  braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
  braze.automaticallyShowInAppMessages();
  braze.openSession();
});

Accelerated Mobile Pages (AMP)

Para a integração com AMP, você precisará:

  1. Incluir o script de web push do AMP: Adicione a tag de script assíncrona ao seu head
  2. Adicionar widgets de inscrição: Adicione widgets para que os usuários possam se inscrever ou cancelar a inscrição
  3. Adicionar arquivos auxiliares: Inclua helper-iframe.html e permission-dialog.html
  4. Criar o service worker: Adicione o arquivo do service worker da Braze
  5. Configurar o elemento de web push do AMP: Adicione o elemento amp-web-push com sua chave de API e URL base como parâmetros de consulta

Para instruções detalhadas de integração com AMP, consulte o Guia do desenvolvedor da Braze.

Electron

O Electron não oferece suporte oficial a notificações por push para a web (veja esta issue no GitHub). Existem outras soluções alternativas de código aberto que você pode testar, mas que não foram testadas pela Braze.

Integração via CDN

  • Carregamento do script: Inicialize depois que a tag de script carregar, colocando o código de inicialização após a tag de script, ou use o manipulador de eventos onload da tag de script
  • Acesso global: O SDK fica disponível como window.braze quando carregado via CDN

Service worker (notificações por push)

  • Obrigatório: É preciso incluir o service worker da Braze para que as notificações por push funcionem
  • Registro padrão: Por padrão, o Braze Web SDK registra e gerencia seu service worker automaticamente quando requestPushPermission() é chamado, e também no início de cada nova sessão para usuários que já concederam permissão de push. Você ainda precisa hospedar, no local esperado, um arquivo de service worker com o código do service worker da Braze.
  • Gerenciar seu próprio service worker: Se você já gerencia um service worker no seu aplicativo, defina a opção de inicialização manageServiceWorkerExternally como true, adicione o código do service worker da Braze ao seu arquivo de service worker e registre-o você mesmo usando navigator.serviceWorker.register()
  • Permissões de push: Chame braze.requestPushPermission() em resposta a interações do usuário (por exemplo, cliques em botões). Use prompts de push suaves (interface personalizada) antes de solicitar a permissão do navegador

Gerenciadores de tags

Tealium iQ

O Tealium iQ oferece uma integração básica e pronta para uso com a Braze. Para configurar a integração, pesquise por Braze na interface do Tealium Tag Management e informe a chave de API do Web SDK do seu dashboard. Para saber mais ou obter suporte aprofundado na configuração do Tealium, confira nossa documentação de integração ou entre em contato com o gerente da sua conta Tealium.

Google Tag Manager

O Web SDK pode ser inicializado e chamado a partir de uma tag HTML personalizada no seu contêiner do Google Tag Manager. Veja nosso app de exemplo do Google Tag Manager para conferir um exemplo de envio de eventos para a Braze via GTM, ou confira nossa documentação de integração para saber mais.

Outros gerenciadores de tags

A Braze também pode ser compatível com outras soluções de gerenciamento de tags, seguindo nossas instruções de integração dentro de uma tag HTML personalizada. Entre em contato com um representante da Braze se precisar de ajuda para avaliar essas soluções.


Bibliotecas

A tabela a seguir descreve as distribuições disponíveis do Braze Web SDK.

Nome Descrição npm URL da CDN
Full SDK completo com interface do usuário. Ao usar a versão npm, os bundlers de JavaScript removem o código não utilizado, incluindo o código de interface. @braze/web-sdk https://js.appboycdn.com/web-sdk/7.1/braze.min.js
Core Contém o SDK sem interface do usuário. Ao usar essa versão do SDK, você precisa implementar sua própria interface para In-App Messages e Content Cards. Use a biblioteca completa na maioria das integrações, porque ela oferece elementos de interface personalizáveis por meio de CSS. N/A https://js.appboycdn.com/web-sdk/7.1/braze.core.min.js
No-AMD Contém o SDK completo sem suporte a AMD. Essa opção é útil se o seu site usa RequireJS ou outro carregador de módulos AMD, mas você prefere carregar o SDK pela CDN. N/A https://js.appboycdn.com/web-sdk/7.1/braze.no-amd.min.js

Navegadores compatíveis

  • Navegadores modernos baseados em Chromium (Chrome, Edge, Opera)
  • Firefox
  • Safari

Depuração e solução de problemas

Passe a opção enableLogging: true para a função de inicialização (braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT', enableLogging: true });) para que a Braze registre logs no console do JavaScript. Isso é útil durante o desenvolvimento, mas fica visível para todos os usuários. Então, remova essa opção ou forneça um registrador alternativo antes de lançar sua página em produção.

Font Awesome

A Braze usa Font Awesome 4.7.0 para ícones de mensagens no app. Para desativar o carregamento do Font Awesome, use a opção de inicialização doNotLoadFontAwesome. Confira a folha de referência para ver os ícones disponíveis.

Recursos adicionais

Contato

Em caso de dúvidas, entre em contato com o suporte técnico da Braze para obter ajuda.

Para obter detalhes sobre o repositório e projetos de exemplo, consulte https://github.com/braze-inc/braze-web-sdk.

New Stuff!