Ir para o conteúdo

Content Cards

Saiba mais sobre os Content Cards para o SDK da Braze, incluindo os diferentes modelos de dados e propriedades específicas de cartões disponíveis para o seu aplicativo.

Pré-requisitos

Antes de usar os Content Cards, é necessário integrar o SDK da Braze para web ao seu app. Nenhuma configuração adicional é necessária. Para criar sua própria interface, consulte o guia de personalização de Content Cards.

Interface padrão do feed

Para usar a interface de Content Cards incluída, você precisa especificar onde exibir o feed no seu website.

Neste exemplo, temos um <div id="feed"></div> no qual queremos inserir o feed de Content Cards. Usaremos três botões para ocultar, exibir ou alternar (ocultar ou exibir com base no estado atual) o feed.

<button id="toggle" type="button">Toggle Cards Feed</button>
<button id="hide" type="button">Hide Cards Feed</button>
<button id="show" type="button">Show Cards Feed</button>

<nav>
    <h1>Your Personalized Feed</h1>
    <div id="feed"></div>
</nav>

<script>
   const toggle = document.getElementById("toggle");
   const hide = document.getElementById("hide");
   const show = document.getElementById("show");
   const feed = document.getElementById("feed");

   toggle.onclick = function(){
      braze.toggleContentCards(feed);
   }

   hide.onclick = function(){
      braze.hideContentCards();
   }

   show.onclick = function(){
      braze.showContentCards(feed);
   }
</script>

Ao usar os métodos toggleContentCards(parentNode, filterFunction) e showContentCards(parentNode, filterFunction), se nenhum argumento for fornecido, todos os Content Cards serão exibidos em uma barra lateral com posição fixa na página. Caso contrário, o feed será inserido no parentNode especificado.

Parâmetros Descrição
parentNode O nó HTML no qual os Content Cards serão renderizados. Se o nó pai já tiver uma visualização de Content Cards da Braze como descendente direto, os Content Cards existentes serão substituídos. Por exemplo, você deve passar document.querySelector(".my-container").
filterFunction Uma função de filtro ou classificação para os cartões exibidos nesta visualização. É invocada com o array de objetos Card, classificados por {pinned, date}. Espera-se que retorne um array de objetos Card classificados para renderizar para este usuário. Se omitida, todos os cartões serão exibidos.

Consulte a documentação de referência do SDK para saber mais sobre a alternância de Content Cards.

Testando Content Cards na web

Você pode testar a integração dos Content Cards usando as ferramentas de desenvolvedor do seu navegador.

  1. Crie uma Campaign de Content Cards e direcione ao seu usuário teste.
  2. Faça login no website que possui a integração do Web SDK.
  3. Abra o console do navegador. No Chrome, clique com o botão direito na página, selecione Inspecionar e depois selecione a guia Console.
  4. Execute estes comandos no console:
    • window.braze.getCachedContentCards()
    • window.braze.toggleContentCards()

Tipos de cartão e propriedades

O modelo de dados dos Content Cards está disponível no SDK para Web e oferece os seguintes tipos de Content Cards: ImageOnly, CaptionedImage e ClassicCard. Cada tipo herda propriedades comuns de um modelo base Card e possui as seguintes propriedades adicionais.

Modelo base do cartão

Todos os Content Cards possuem estas propriedades compartilhadas:

Propriedade Descrição
expiresAt O timestamp UNIX do horário de expiração do cartão.
extras (Opcional) Dados de pares chave-valor formatados como um objeto string com valor string.
id (Opcional) O id do cartão. Ele é reportado à Braze junto com eventos para fins de análise de dados.
pinned Esta propriedade reflete se o cartão foi configurado como “fixado” no dashboard.
updated O timestamp UNIX de quando este cartão foi modificado pela última vez.
viewed Esta propriedade reflete se o usuário visualizou o cartão ou não.
isControl Esta propriedade é true quando um cartão é um grupo de “controle” dentro de um teste A/B.

Somente imagem

Cartões ImageOnly são imagens clicáveis em tamanho completo.

Propriedade Descrição
aspectRatio A proporção da imagem do cartão, servindo como indicação antes do carregamento completo da imagem. Observe que a propriedade pode não ser fornecida em determinadas circunstâncias.
categories Esta propriedade é exclusivamente para organização na sua implementação personalizada; essas categorias podem ser definidas no criador do dashboard.
clicked Esta propriedade indica se este cartão já foi clicado neste dispositivo.
created O timestamp UNIX do horário de criação do cartão na Braze.
dismissed Esta propriedade indica se este cartão foi descartado.
dismissible Esta propriedade reflete se o usuário pode descartar o cartão, removendo-o da visualização.
imageUrl A URL da imagem do cartão.
linkText O texto de exibição para a URL.
url A URL que será aberta após o cartão ser clicado.

Imagem com legenda

Cartões CaptionedImage são imagens clicáveis em tamanho completo com texto descritivo acompanhando.

Propriedade Descrição
aspectRatio A proporção da imagem do cartão, servindo como indicação antes do carregamento completo da imagem. Observe que a propriedade pode não ser fornecida em determinadas circunstâncias.
categories Esta propriedade é exclusivamente para organização na sua implementação personalizada; essas categorias podem ser definidas no criador do dashboard.
clicked Esta propriedade indica se este cartão já foi clicado neste dispositivo.
created O timestamp UNIX do horário de criação do cartão na Braze.
dismissed Esta propriedade indica se este cartão foi descartado.
dismissible Esta propriedade reflete se o usuário pode descartar o cartão, removendo-o da visualização.
imageUrl A URL da imagem do cartão.
linkText O texto de exibição para a URL.
title O texto do título deste cartão.
url A URL que será aberta após o cartão ser clicado.

Clássico

O modelo ClassicCard pode conter uma imagem sem texto ou um texto com imagem.

Propriedade Descrição
aspectRatio A proporção da imagem do cartão, servindo como indicação antes do carregamento completo da imagem. Observe que a propriedade pode não ser fornecida em determinadas circunstâncias.
categories Esta propriedade é exclusivamente para organização na sua implementação personalizada; essas categorias podem ser definidas no criador do dashboard.
clicked Esta propriedade indica se este cartão já foi clicado neste dispositivo.
created O timestamp UNIX do horário de criação do cartão na Braze.
description O texto do corpo deste cartão.
dismissed Esta propriedade indica se este cartão foi descartado.
dismissible Esta propriedade reflete se o usuário pode descartar o cartão, removendo-o da visualização.
imageUrl A URL da imagem do cartão.
linkText O texto de exibição para a URL.
title O texto do título deste cartão.
url A URL que será aberta após o cartão ser clicado.

Formatos de imagem

As imagens de Content Cards (incluindo GIFs) são renderizadas usando tags HTML <img> padrão. O suporte a GIFs depende das capacidades do navegador do usuário e não requer uma versão mínima do SDK para Web. Todos os navegadores modernos suportam a reprodução de GIFs nativamente.

Grupo de controle

Se você usar o feed padrão de Content Cards, as impressões e os cliques serão rastreados automaticamente.

Se você usar uma integração personalizada para Content Cards, será necessário registrar impressões quando um cartão de controle teria sido visto. Como parte desse processo, certifique-se de lidar com os cartões de controle ao registrar impressões em um teste A/B. Esses cartões estão em branco e, embora não sejam vistos pelos usuários, você ainda deve registrar as impressões para comparar o desempenho deles com os cartões que não são de controle.

Para determinar se um Content Card está no grupo de controle de um teste A/B, verifique a propriedade card.isControl (Web SDK v4.5.0+) ou verifique se o cartão é uma instância de ControlCard (card instanceof braze.ControlCard).

Métodos de cartão

Métodos de feed padrão

Use estes métodos ao exibir Content Cards com a interface padrão de feed da Braze:

Método Descrição
showContentCards Exibe o feed padrão de Content Cards. Renderiza os cartões em um elemento HTML parentNode fornecido, ou como uma barra lateral de posição fixa se nenhum elemento for informado. Aceita uma filterFunction opcional para classificar ou filtrar cartões antes da exibição.
hideContentCards Oculta o feed padrão de Content Cards, caso esteja sendo exibido no momento.
toggleContentCards Exibe o feed padrão de Content Cards se estiver oculto, ou o oculta se estiver visível. Se você precisar exibir vários feeds de Content Cards simultaneamente, use showContentCards e hideContentCards.

Métodos de feed personalizado

Use estes métodos ao criar sua própria interface de Content Cards:

Método Descrição
subscribeToContentCardsUpdates Registra uma função de retorno de chamada que é invocada sempre que os Content Cards são atualizados para o usuário atual, como no início da sessão. Use este como o principal meio de receber dados de cartões para o seu feed personalizado. Deve ser chamado antes de openSession() para receber atualizações na sessão inicial.
getCachedContentCards Retorna todos os cartões disponíveis no momento a partir da atualização mais recente de Content Cards. Use para exibir cartões imediatamente ao carregar a página, sem esperar por uma nova requisição ao servidor, como quando o usuário retorna a uma página durante uma sessão ativa.
requestContentCardsRefresh Solicita uma atualização imediata dos Content Cards a partir dos servidores da Braze. Por padrão, os cartões são atualizados no início da sessão e quando o feed padrão é reaberto. Use para forçar uma atualização em outros momentos, como após uma ação específica do usuário. Esteja ciente dos limites de frequência.
logContentCardImpressions Registra eventos de impressão para um array de cartões. Chame quando os cartões forem renderizados e visíveis para o usuário. Necessário para relatórios precisos de Campaign ao usar uma interface personalizada, pois as impressões não são rastreadas automaticamente fora do feed padrão.
logContentCardClick Registra um evento de clique para um único cartão. Chame quando um usuário interagir com um cartão na sua interface personalizada. Necessário para relatórios precisos de Campaign, pois os cliques não são rastreados automaticamente fora do feed padrão.
handleBrazeAction Processa a URL de um cartão e executa a ação configurada ao clicar, incluindo ações da Braze (URLs brazeActions://) e navegação por URL padrão. Chame no seu manipulador de clique do cartão para garantir que os comportamentos ao clicar configurados no dashboard da Braze sejam executados.
dismissCard Descarta um cartão programaticamente, removendo-o do feed do usuário. Use para permitir que os usuários descartem cartões na sua interface personalizada.

Para saber mais, consulte a documentação de referência do SDK.

Melhores práticas

Chame os métodos na ordem correta

Para feeds personalizados, os Content Cards são atualizados apenas no início da sessão se subscribeToContentCardsUpdates() for chamado antes de openSession(). Chame os métodos da Braze nesta ordem:

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

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

// Step 2: Subscribe to card updates
braze.subscribeToContentCardsUpdates((updates) => {
  const cards = updates.cards;
  renderCards(cards);
});

// Step 3: Identify the user
braze.changeUser("USER_ID");

// Step 4: Start the session
braze.openSession();

Use cartões em cache para manter o conteúdo entre carregamentos de página

Como subscribeToContentCardsUpdates() invoca seu retorno de chamada apenas quando há novas atualizações (por exemplo, no início da sessão), os cartões podem desaparecer do seu feed personalizado se o usuário atualizar a página no meio da sessão. Para evitar isso, use getCachedContentCards() para renderizar imediatamente os cartões do cache local, junto com a sua inscrição para novas atualizações:

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

function renderCards(cards) {
  const container = document.getElementById("content-cards");
  container.textContent = "";
  const displayedCards = [];

  cards.forEach(card => {
    if (card instanceof braze.ClassicCard || card instanceof braze.CaptionedImage) {
      const cardElement = document.createElement("div");

      const h3 = document.createElement("h3");
      h3.textContent = card.title || "";
      cardElement.appendChild(h3);

      const p = document.createElement("p");
      p.textContent = card.description || "";
      cardElement.appendChild(p);

      if (card.imageUrl) {
        const img = document.createElement("img");
        img.src = card.imageUrl;
        img.alt = card.title || "";
        cardElement.appendChild(img);
      }

      if (card.url) {
        cardElement.addEventListener("click", () => {
          braze.logContentCardClick(card);
          braze.handleBrazeAction(card.url);
        });
      }

      container.appendChild(cardElement);
      displayedCards.push(card);
    }
  });

  if (displayedCards.length > 0) {
    braze.logContentCardImpressions(displayedCards);
  }
}

// Display cached cards immediately
const cached = braze.getCachedContentCards();
if (cached && cached.cards.length > 0) {
  renderCards(cached.cards);
}

// Subscribe to future updates
braze.subscribeToContentCardsUpdates((updates) => {
  renderCards(updates.cards);
});

Registre a análise de dados para feeds personalizados

Ao usar uma interface personalizada, impressões, cliques e descartes não são rastreados automaticamente. Você deve registrar cada evento manualmente:

  • Impressões: Chame logContentCardImpressions([card1, card2, ...]) com um array de objetos de cartão quando os cartões ficarem visíveis para o usuário.
  • Cliques: Chame logContentCardClick(card) quando um usuário interagir com um cartão.
  • Comportamento ao clicar: Chame handleBrazeAction(card.url) para executar a ação de clique configurada no cartão (como navegar para uma URL ou registrar um evento personalizado).

Usando o Google Tag Manager

O Google Tag Manager funciona injetando a CDN da Braze (uma versão do nosso SDK Web) diretamente no código do seu website, o que significa que todos os métodos do SDK estão disponíveis exatamente como se você tivesse integrado o SDK sem o Google Tag Manager, exceto ao implementar Content Cards.

Configurando Content Cards

Para uma integração padrão do feed de Content Cards, você pode usar uma tag Custom HTML no Google Tag Manager. Adicione o seguinte à sua tag Custom HTML, que ativará o feed padrão de Content Cards:

<script>
   window.braze.showContentCards();
</script>

Configuração de tag no Google Tag Manager de uma tag Custom HTML que exibe o feed de Content Cards.

Para ter mais liberdade na personalização da aparência dos Content Cards e do feed, você pode integrar os Content Cards diretamente no seu website nativo. Existem duas abordagens possíveis: usar a interface de feed padrão ou criar uma interface de feed personalizada.

Ao implementar a interface de feed padrão, os métodos da Braze devem ter window. adicionado no início do método. Por exemplo, braze.showContentCards deve ser window.braze.showContentCards.

Para estilização de feed personalizado, as etapas são as mesmas de uma integração do SDK sem GTM. Por exemplo, se você quiser personalizar a largura do feed de Content Cards, cole o seguinte no seu arquivo CSS:

body .ab-feed {
    width: 800px;
}

Atualizando modelos

Para atualizar para a versão mais recente do SDK Web da Braze, siga estas três etapas no seu dashboard do Google Tag Manager:

  1. Atualize o modelo de tag
    Acesse a página Templates dentro do seu espaço de trabalho. Você deverá ver um ícone indicando que uma atualização está disponível.

    Página Templates mostrando que uma atualização está disponível

    Clique no ícone e, após revisar a alteração, clique em Accept Update.

    Uma tela comparando os modelos de tag antigo e novo com um botão para aceitar a atualização

  2. Atualize o número da versão
    Depois que o modelo de tag for atualizado, edite a tag Braze Initialization e atualize a versão do SDK para a versão major.minor mais recente. Por exemplo, se a versão mais recente for 4.1.2, insira 4.1. Você pode ver a lista de versões do SDK no nosso changelog.

    Modelo Braze Initialization com um campo de entrada para alterar a versão do SDK

  3. QA e publicação
    Verifique se a nova versão do SDK está funcionando usando a ferramenta de depuração do Google Tag Manager antes de publicar uma atualização no seu contêiner de tags.

Solução de problemas

Ativar depuração de tags

Cada modelo de tag da Braze tem uma caixa de seleção opcional GTM Tag Debugging que pode ser usada para registrar mensagens de depuração no console JavaScript da sua página web.

Ferramenta de depuração do Google Tag Manager

Entrar no modo de depuração

Outra forma de ajudar a depurar sua integração com o Google Tag Manager é usar o recurso de modo de prévia do Google.

Isso ajudará a identificar quais valores estão sendo enviados da camada de dados da sua página web para cada tag da Braze acionada, e também explicará quais tags foram ou não acionadas.

A página de resumo da tag Braze Initialization fornece uma visão geral da tag, incluindo informações sobre quais tags foram acionadas.

Verificar a sequência de tags para eventos personalizados

Se eventos personalizados ou outras ações não estiverem sendo registrados na Braze, uma causa comum é uma condição de corrida em que uma tag de ação (como Custom Event ou Purchase) é disparada antes que a tag Braze Initialization tenha sido concluída. Para corrigir isso, configure a sequência de tags no GTM:

  1. Abra a tag de ação que não está registrando corretamente.
  2. Em Advanced Settings > Tag Sequencing, selecione A tag that fires before [this tag].
  3. Escolha a tag Braze Initialization como a tag de configuração.

Isso garante que o SDK esteja totalmente inicializado antes que qualquer tag de ação tente enviar dados para a Braze.

Ativar registro detalhado

Para capturar registros detalhados para solução de problemas, você pode ativar o registro detalhado na sua integração com o Google Tag Manager. Esses registros aparecerão na guia Console das ferramentas de desenvolvedor do seu navegador.

Na sua integração com o Google Tag Manager, navegue até a tag Braze Initialization e selecione Enable Web SDK Logging.

A página de resumo da tag Braze Initialization com a opção Enable Web SDK Logging ativada.

Pré-requisitos

Antes de usar os Content Cards da Braze, você precisa integrar o SDK Android da Braze ao seu app. No entanto, nenhuma configuração adicional é necessária.

Fragmentos do Google

No Android, o feed de Content Cards é implementado como um fragmento disponível no projeto de UI Android da Braze. A classe ContentCardsFragment atualiza e exibe automaticamente o conteúdo dos Content Cards e registra análises de uso. Os cartões que podem aparecer nos ContentCards de um usuário são criados no dashboard da Braze.

Para saber como adicionar um fragmento a uma atividade, consulte a documentação de fragmentos do Google.

Tipos de cartões e propriedades

O modelo de dados dos Content Cards está disponível no SDK Android e oferece os seguintes tipos exclusivos de Content Cards. Cada tipo compartilha um modelo base, o que permite herdar propriedades comuns do modelo base, além de ter suas próprias propriedades exclusivas. Para a documentação de referência completa, consulte com.braze.models.cards.

Modelo de cartão base

O modelo de cartão base fornece o comportamento fundamental para todos os cartões.

Propriedade Descrição
getId() Retorna o ID do cartão definido pela Braze.
getViewed() Retorna um booleano que indica se o cartão foi lido ou não pelo usuário.
getExtras() Retorna um mapa de extras de chave-valor para este cartão.
getCreated() Retorna o timestamp unix do horário de criação do cartão na Braze.
isPinned Retorna um booleano que indica se o cartão está fixado.
getOpenUriInWebView() Retorna um booleano que indica se as URIs deste cartão devem ser abertas
no WebView da Braze ou não.
getExpiredAt() Obtém a data de expiração do cartão.
isRemoved() Retorna um booleano que indica se o usuário final descartou este cartão.
isDismissibleByUser() Retorna um booleano que indica se o cartão pode ser descartado pelo usuário.
isClicked() Retorna um booleano que indica o estado de clique deste cartão.
isDismissed Retorna um booleano que indica se o cartão foi descartado. Defina como true para marcar o cartão como descartado. Se um cartão já estiver marcado como descartado, ele não poderá ser marcado como descartado novamente.
isControl() Retorna um booleano indicando se este cartão é um cartão de controle e não deve ser renderizado.

Somente imagem

Os cartões somente imagem são imagens clicáveis em tamanho completo.

Propriedade Descrição
getImageUrl() Retorna a URL da imagem do cartão.
getUrl() Retorna a URL que é aberta após o clique no cartão. Pode ser uma URL HTTP(s) ou uma URL de protocolo.
getDomain() Retorna o texto do link para a URL da propriedade.

Imagem com legenda

Os cartões de imagem com legenda são imagens clicáveis em tamanho completo com texto descritivo acompanhante.

Propriedade Descrição
getImageUrl() Retorna a URL da imagem do cartão.
getTitle() Retorna o texto do título do cartão.
getDescription() Retorna o texto do corpo do cartão.
getUrl() Retorna a URL que é aberta após o clique no cartão. Pode ser uma URL HTTP(s) ou uma URL de protocolo.
getDomain() Retorna o texto do link para a URL da propriedade.

Clássico

Um cartão clássico sem imagem resulta em um cartão de anúncio de texto. Se uma imagem for incluída, você receberá um cartão de notícia curta.

Propriedade Descrição
getTitle() Retorna o texto do título do cartão.
getDescription() Retorna o texto do corpo do cartão.
getUrl() Retorna a URL que é aberta após o clique no cartão. Pode ser uma URL HTTP(s) ou uma URL de protocolo.
getDomain() Retorna o texto do link para a URL da propriedade.
getImageUrl() Retorna a URL da imagem do cartão, aplicável apenas ao cartão clássico de notícia curta.
isDismissed Retorna um booleano que indica se o cartão foi descartado. Defina como true para marcar o cartão como descartado. Se um cartão já estiver marcado como descartado, ele não poderá ser marcado como descartado novamente.

Métodos de cartão

Todos os objetos do modelo de dados Card oferecem os seguintes métodos de análise de dados para registrar eventos de usuário nos servidores da Braze.

Método Descrição
logImpression() Registra manualmente uma impressão na Braze para um cartão específico.
logClick() Registra manualmente um clique na Braze para um cartão específico.

Pré-requisitos

Antes de usar os Content Cards, é necessário integrar o SDK Swift da Braze ao seu app. Nenhuma configuração adicional é necessária.

Contextos de view controller

A interface padrão de Content Cards pode ser integrada a partir da biblioteca BrazeUI do SDK da Braze. Crie o view controller de Content Cards usando a instância braze. Se desejar interceptar e reagir ao ciclo de vida da interface de Content Cards, implemente BrazeContentCardUIViewControllerDelegate como o delegate do seu BrazeContentCardUI.ViewController.

A biblioteca BrazeUI do SDK Swift oferece dois contextos padrão de view controller: navegação ou modal. Isso significa que você pode integrar Content Cards nesses contextos adicionando algumas linhas de código ao seu app ou site. Ambas as visualizações oferecem opções de personalização e estilização, conforme descrito no guia de personalização. Você também pode criar um view controller de Content Cards personalizado em vez de usar o padrão da Braze para ainda mais opções de personalização—consulte o tutorial de interface de Content Cards para ver um exemplo.

Navegação

Um navigation controller é um view controller que gerencia um ou mais view controllers filhos em uma interface de navegação. Veja um exemplo de como inserir uma instância de BrazeContentCardUI.ViewController em um navigation controller:

func pushViewController() {
  guard let braze = AppDelegate.braze else { return }
  let contentCardsController = BrazeContentCardUI.ViewController(braze: braze)
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  contentCardsController.delegate = self
  self.navigationController?.pushViewController(contentCardsController, animated: true)
}
- (void)pushViewController {
  BRZContentCardUIViewController *contentCardsController = [[BRZContentCardUIViewController alloc] initWithBraze:self.braze];
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  [contentCardsController setDelegate:self];
  [self.navigationController pushViewController:contentCardsController animated:YES];
}

Modal

Use apresentações modais para criar interrupções temporárias no fluxo de trabalho do seu app, como solicitar informações importantes ao usuário. Essa visualização modal possui uma barra de navegação na parte superior e um botão Concluído na lateral da barra. Veja um exemplo de como inserir uma instância de BrazeContentCard.ViewController em um controller modal:

func presentModalViewController() {
  guard let braze = AppDelegate.braze else { return }
  let contentCardsModal = BrazeContentCardUI.ModalViewController(braze: braze)
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  contentCardsModal.viewController.delegate = self
  self.navigationController?.present(contentCardsModal, animated: true, completion: nil)
}
- (void)presentModalViewController {
  BRZContentCardUIModalViewController *contentCardsModal = [[BRZContentCardUIModalViewController alloc] initWithBraze:AppDelegate.braze];
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  [contentCardsModal.viewController setDelegate:self];
  [self.navigationController presentViewController:contentCardsModal animated:YES completion:nil];
}

Para ver exemplos de uso dos view controllers do BrazeUI, confira os exemplos de interface de Content Cards correspondentes no nosso app de exemplos.

Modelo base de cartão

O modelo de dados dos Content Cards está disponível no módulo BrazeKit do SDK Swift da Braze. Este módulo contém os seguintes tipos de Content Cards, que são uma implementação do tipo Braze.ContentCard. Para uma lista completa das propriedades dos Content Cards e seu uso, consulte a classe ContentCard.

  • Somente imagem
  • Imagem com legenda
  • Clássico
  • Clássico com imagem
  • Controle

Para acessar o modelo de dados dos Content Cards, chame contentCards.cards na sua instância braze. Consulte Registro de análise de dados para saber mais sobre como se inscrever para receber dados de cartões.

Métodos de cartão

Cada cartão é inicializado com um objeto Context, que contém diversos métodos para gerenciar o estado do seu cartão. Chame esses métodos quando quiser modificar a propriedade de estado correspondente em um objeto de cartão específico.

Método Descrição
card.context?.logImpression() Registra o evento de impressão do cartão de conteúdo.
card.context?.logClick() Registra o evento de clique do cartão de conteúdo.
card.context?.processClickAction() Processa uma entrada ClickAction fornecida.
card.context?.logDismissed() Registra o evento de descarte do cartão de conteúdo.
card.context?.logError() Registra um erro relacionado ao cartão de conteúdo.
card.context?.loadImage() Carrega uma imagem de cartão de conteúdo a partir de uma URL. Este método pode ser nil quando o cartão de conteúdo não possui uma imagem.

Para saber mais, consulte a documentação da classe Context

Pré-requisitos

Antes de poder usar esse recurso, você precisará integrar o SDK Cordova da Braze.

Feeds de cartões

O SDK da Braze inclui um feed de cartão padrão. Para mostrar o feed do cartão padrão, você pode usar o método launchContentCards(). Esse método lida com todo o rastreamento de análise de dados, descartes e renderização dos Content Cards de um usuário.

Content Cards

Você pode usar esses métodos adicionais para criar um feed de Content Cards personalizado no seu app:

Método Descrição
requestContentCardsRefresh() Envia uma solicitação em segundo plano para solicitar os Content Cards mais recentes do servidor do SDK da Braze.
getContentCardsFromServer(successCallback, errorCallback) Recupera os Content Cards do SDK da Braze. Isso solicitará os Content Cards mais recentes do servidor e retornará a lista de cartões após a conclusão.
getContentCardsFromCache(successCallback, errorCallback) Recupera os Content Cards do SDK da Braze. Isso retornará a lista mais recente de cartões do cache local, que foi atualizada na última atualização.
logContentCardClicked(cardId) Registra um clique para o ID do Content Card fornecido.
logContentCardImpression(cardId) Registra uma impressão para o ID do Content Card fornecido.
logContentCardDismissed(cardId) Registra um descarte para o ID do Content Card fornecido.

Sobre os Content Cards do Flutter

O SDK da Braze inclui um feed de cartão padrão para você começar com os Content Cards. Para mostrar o feed do cartão, você pode usar o método braze.launchContentCards(). O feed de cartão padrão incluído com o SDK da Braze lidará com toda a análise de dados, rastreamento, dispensas e renderização dos Content Cards de um usuário.

Pré-requisitos

Antes de poder usar esse recurso, você precisará integrar o Flutter Braze SDK.

Métodos do cartão

Você pode usar esses métodos adicionais para criar um feed de Content Cards personalizado no seu app usando os seguintes métodos disponíveis na interface pública do plug-in:

Método Descrição
braze.requestContentCardsRefresh() Solicita os Content Cards mais recentes do servidor do SDK da Braze.
braze.logContentCardClicked(contentCard) Registra um clique para o objeto do cartão de conteúdo fornecido.
braze.logContentCardImpression(contentCard) Registra uma impressão para o objeto do cartão de conteúdo fornecido.
braze.logContentCardDismissed(contentCard) Registra uma dispensa para o objeto do cartão de conteúdo fornecido.

Recebimento de dados do cartão de conteúdo

Para receber dados de cartões de conteúdo no seu app Flutter, o BrazePlugin oferece suporte ao envio de dados de cartões de conteúdo usando Dart Streams.

O objeto BrazeContentCard oferece suporte a um subconjunto de campos disponíveis nos objetos do modelo nativo, incluindo description, title, image, url, extras, entre outros.

Ouvir dados do cartão de conteúdo na camada Dart

Para receber os dados do cartão de conteúdo na camada Dart, use o código abaixo para criar um StreamSubscription e chamar braze.subscribeToContentCards(). Lembre-se de usar cancel() na inscrição do stream quando ela não for mais necessária.

// Create stream subscription
StreamSubscription contentCardsStreamSubscription;

contentCardsStreamSubscription = braze.subscribeToContentCards((List<BrazeContentCard> contentCards) {
  // Handle Content Cards
}

// Cancel stream subscription
contentCardsStreamSubscription.cancel();

Para ver um exemplo, consulte main.dart no app de amostra do SDK Flutter da Braze.

Encaminhar dados do cartão de conteúdo da camada nativa do iOS

Os dados do cartão de conteúdo são encaminhados automaticamente das camadas nativas do Android e do iOS. Nenhuma configuração adicional é necessária.

Se você estiver usando o Flutter SDK 17.1.0 ou anterior, o encaminhamento de dados do cartão de conteúdo da camada nativa do iOS requer configuração manual. Seu aplicativo provavelmente contém um retorno de chamada contentCards.subscribeToUpdates que chama BrazePlugin.processContentCards(contentCards). Para migrar para o Flutter SDK 18.0.0, remova a chamada BrazePlugin.processContentCards(_:) — o encaminhamento de dados agora é feito automaticamente.

Para ver um exemplo, consulte AppDelegate.swift no app de amostra do SDK Flutter da Braze.

Reprodução do retorno de chamada para cartões de conteúdo

Para armazenar quaisquer cartões de conteúdo disparados antes que o retorno de chamada esteja disponível e reproduzi-los depois que ele for definido, adicione a seguinte entrada ao mapa customConfigs ao inicializar o BrazePlugin:

BrazePlugin braze = new BrazePlugin(customConfigs: {replayCallbacksConfigKey: true});

Sobre os Content Cards no React Native

Os SDKs da Braze incluem um feed de cartão padrão para que você comece a usar os Content Cards. Para mostrar o feed do cartão, você pode usar o método Braze.launchContentCards(). O feed de cartão padrão incluído com o SDK da Braze lidará com toda a análise de dados, rastreamento, dispensas e renderização dos Content Cards de um usuário.

Pré-requisitos

Antes de poder usar esse recurso, você precisará integrar o SDK React Native da Braze.

Métodos de cartões

Para criar sua própria interface do usuário, você pode obter uma lista de cartões disponíveis e ouvir as atualizações dos cartões:

// Set initial cards
const [cards, setCards] = useState([]);

// Listen for updates as a result of card refreshes, such as:
// a new session, a manual refresh with `requestContentCardsRefresh()`, or after the timeout period
Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, async (update) => {
    setCards(update.cards);
});

// Manually trigger a refresh of cards
Braze.requestContentCardsRefresh();

Você pode usar esses métodos adicionais para criar um feed de Content Cards personalizado no seu app:

Método Descrição
launchContentCards() Inicia o elemento da interface do usuário dos Content Cards.
requestContentCardsRefresh() Solicita os Content Cards mais recentes do servidor do SDK da Braze. A lista de cartões resultante é passada para cada um dos ouvintes de eventos de cartão de conteúdo registrados anteriormente.
getCachedContentCards() Retorna a matriz de Content Cards mais recente do cache.
logContentCardClicked(cardId) Registra um clique para o ID do cartão de conteúdo fornecido. Esse método é usado apenas para análise de dados. Para executar a ação de clique, chame também processContentCardClickAction(cardId).
logContentCardImpression(cardId) Registra uma impressão para o ID do cartão de conteúdo fornecido.
logContentCardDismissed(cardId) Registra um descarte para o ID do cartão de conteúdo fornecido.
processContentCardClickAction(cardId) Executa a ação de um determinado cartão.

Tipos e propriedades do cartão

O modelo de dados dos Content Cards está disponível no React Native SDK e oferece os seguintes tipos de cartões de conteúdo: Somente imagem, Imagem com legenda e Clássico. Há também um tipo especial de cartão Controle, que é retornado aos usuários que estão no grupo de controle de um determinado cartão. Cada tipo herda propriedades comuns de um modelo básico, além de suas próprias propriedades exclusivas.

Modelo de cartão básico

O modelo de cartão básico fornece o comportamento fundamental para todos os cartões.

Propriedade Descrição
id O ID do cartão definido pela Braze.
created O carimbo de data/hora UNIX do horário de criação do cartão na Braze.
expiresAt O carimbo de data/hora UNIX do tempo de expiração do cartão. Quando o valor é menor que 0, isso significa que o cartão nunca expira.
viewed Se o cartão foi lido ou não pelo usuário. Isso não registra análise de dados.
clicked Se o cartão foi clicado pelo usuário.
pinned Se o cartão está fixado.
dismissed Se o usuário dispensou este cartão. Marcar um cartão como dispensado que já foi dispensado será uma operação nula.
dismissible Se o cartão pode ser descartado pelo usuário.
url (Opcional) A string de URL associada à ação de clique do cartão.
openURLInWebView Se as URLs desse cartão devem ser abertas no Braze WebView ou não.
isControl Se este cartão é um cartão de controle. Os cartões de controle não devem ser exibidos ao usuário.
extras O mapa de extras de chave-valor para este cartão.

Para uma referência completa do cartão base, consulte a documentação do Android e do iOS.

Somente imagem

Os cartões somente de imagem são imagens clicáveis em tamanho real.

Propriedade Descrição
type O tipo de Content Card, IMAGE_ONLY.
image A URL da imagem do cartão.
imageAspectRatio A proporção da imagem do cartão. Serve como uma dica antes que o carregamento da imagem seja concluído. Note que a propriedade pode não ser fornecida em certas circunstâncias.

Para uma referência completa do cartão somente de imagem, consulte a documentação para Android e para iOS.

Imagem com legenda

Cartões de imagem com legenda são imagens clicáveis em tamanho real com texto descritivo acompanhante.

Propriedade Descrição
type O tipo de Content Card, CAPTIONED.
image A URL da imagem do cartão.
imageAspectRatio A proporção da imagem do cartão. Serve como uma dica antes que o carregamento da imagem seja concluído. Note que a propriedade pode não ser fornecida em certas circunstâncias.
title O texto do título do cartão.
cardDescription O texto de descrição do cartão.
domain (Opcional) O texto do link para a URL da propriedade, por exemplo, "braze.com/resources/". Pode ser exibido na interface do usuário do cartão para indicar a ação/direção ao clicar no cartão.

Para uma referência completa do cartão de imagem com legenda, consulte a documentação do Android e do iOS.

Clássico

Os cartões clássicos têm um título, descrição e uma imagem opcional antes do texto.

Propriedade Descrição
type O tipo de Content Card, CLASSIC.
image (Opcional) A URL da imagem do cartão.
title O texto do título do cartão.
cardDescription O texto de descrição do cartão.
domain (Opcional) O texto do link para a URL da propriedade, por exemplo, "braze.com/resources/". Pode ser exibido na interface do usuário do cartão para indicar a ação/direção ao clicar no cartão.

Para uma referência completa do Content Card clássico (anúncio de texto), consulte a documentação do Android e do iOS. Para o cartão de imagem clássico (notícias curtas), consulte a documentação do Android e do iOS.

Controle

Os cartões de controle incluem todas as propriedades básicas, com algumas diferenças importantes. As principais são:

  • A propriedade isControl tem a garantia de ser true.
  • A propriedade extras tem a garantia de estar vazia.

Para uma referência completa do cartão de controle, consulte a documentação para Android e para iOS.

Pré-requisitos

Antes de usar os Content Cards, integre o SDK Swift da Braze ao seu app. Em seguida, conclua as etapas para configurar seu app tvOS.

Configurando seu app tvOS

Etapa 1: Criar um novo app iOS

Na Braze, selecione Settings > App Settings e, em seguida, selecione Add App. Insira um nome para o seu app tvOS, selecione iOSnão tvOS—e selecione Add App.

Caixa de diálogo Adicionar app na Braze com a plataforma iOS selecionada para registrar um app tvOS.

Etapa 2: Obter a chave de API do seu app

Nas configurações do app, selecione seu novo app tvOS e anote a chave de API do app. Use essa chave para configurar seu app no Xcode.

Configurações do app para um app tvOS mostrando a chave de API usada para integração do SDK.

Etapa 3: Integrar o BrazeKit

Use a chave de API do seu app para integrar o SDK Swift da Braze ao seu projeto tvOS no Xcode. Você só precisa integrar o BrazeKit do SDK Swift da Braze.

Etapa 4: Criar sua interface personalizada

Como a Braze não fornece uma UI padrão para Content Cards no tvOS, personalize-a você mesmo. Para um passo a passo completo, consulte nosso tutorial: Personalizando Content Cards para tvOS. Para um projeto de exemplo, consulte os exemplos do SDK Swift da Braze.

Pré-requisitos

Antes de usar este recurso, você precisará integrar o SDK do Unity da Braze.

Exibição nativa de Content Cards

Você pode exibir a interface padrão para os Content Cards usando a seguinte chamada:

Appboy.AppboyBinding.DisplayContentCards();

Recebimento de dados de Content Cards no Unity

Você pode registrar objetos de jogo Unity para serem notificados sobre Content Cards recebidos. Recomendamos configurar os ouvintes de objetos de jogo no editor de configuração da Braze.

Se você precisar configurar o ouvinte do objeto de jogo em tempo de execução, use AppboyBinding.ConfigureListener() e especifique BrazeUnityMessageType.CONTENT_CARDS_UPDATED.

Note que, além disso, será necessário fazer uma chamada para AppboyBinding.RequestContentCardsRefresh() para começar a receber dados no ouvinte do objeto de jogo no iOS.

Parsing de Content Cards

As mensagens string recebidas no retorno de chamada do objeto de jogo de Content Cards podem ser convertidas no objeto modelo ContentCard por conveniência.

O parsing de Content Cards requer parsing de JSON. Consulte o exemplo a seguir para mais detalhes:

Exemplo de retorno de chamada de Content Cards

void ExampleCallback(string message) {
  try {
    JSONClass json = (JSONClass)JSON.Parse(message);

    // Content Card data is contained in the `mContentCards` field of the top level object.
    if (json["mContentCards"] != null) {
      JSONArray jsonArray = (JSONArray)JSON.Parse(json["mContentCards"].ToString());
      Debug.Log(String.Format("Parsed content cards array with {0} cards", jsonArray.Count));

      // Iterate over the card array to parse individual cards.
      for (int i = 0; i < jsonArray.Count; i++) {
        JSONClass cardJson = jsonArray[i].AsObject;
        try {
          ContentCard card = new ContentCard(cardJson);
          Debug.Log(String.Format("Created card object for card: {0}", card));

          // Example of logging Content Card analytics on the ContentCard object
          card.LogImpression();
          card.LogClick();
        } catch {
          Debug.Log(String.Format("Unable to create and log analytics for card {0}", cardJson));
        }
      }
    }
  } catch {
    throw new ArgumentException("Could not parse content card JSON message.");
  }
}

Atualizando Content Cards

Para atualizar os Content Cards da Braze, use um dos métodos a seguir:

// results in a network request to Braze
AppboyBinding.RequestContentCardsRefresh()

AppboyBinding.RequestContentCardsRefreshFromCache()

Análise de dados

Os cliques e as impressões devem ser registrados manualmente para Content Cards não exibidos diretamente pela Braze.

Use LogClick() e LogImpression() no ContentCard para registrar cliques e impressões de cartões específicos.

Sobre os Content Cards do .NET MAUI

O SDK da Braze para .NET MAUI (anteriormente Xamarin) inclui um feed de cartões padrão para você começar com os Content Cards. O feed de cartões padrão incluído com o SDK da Braze lidará com toda a análise de dados, rastreamento, dispensas e renderização dos Content Cards de um usuário.

Pré-requisitos

Antes de usar este recurso, você precisará integrar o SDK Braze .NET MAUI.

Tipos e propriedades de cartões

O SDK da Braze para .NET MAUI possui três tipos únicos de Content Cards que compartilham um modelo base: Banner, Imagem com legenda e Clássico. Cada tipo herda propriedades comuns de um modelo base e possui as seguintes propriedades adicionais.

Modelo base de cartão

Propriedade Descrição
idString O ID do cartão definido pela Braze.
created O carimbo de data/hora UNIX do horário de criação do cartão na Braze.
expiresAt O carimbo de data/hora UNIX do tempo de expiração do cartão. Quando o valor é menor que 0, significa que o cartão nunca expira.
viewed Se o cartão foi lido ou não pelo usuário. Isso não registra análise de dados.
clicked Se o cartão foi clicado pelo usuário.
pinned Se o cartão está fixado.
dismissed Se o usuário dispensou este cartão. Marcar um cartão como dispensado que já foi dispensado será uma operação nula.
dismissible Se o cartão pode ser descartado pelo usuário.
urlString (Opcional) A string de URL associada à ação de clique do cartão.
openUrlInWebView Se as URLs deste cartão devem ser abertas no Braze WebView ou não.
isControlCard Se este cartão é um cartão de controle. Os cartões de controle não devem ser exibidos ao usuário.
extras O mapa de extras de chave-valor para este cartão.
isTest Se este cartão é um cartão de teste.

Para uma referência completa do cartão base, consulte a documentação do Android e iOS.

Banner

Os cartões de banner são imagens clicáveis em tamanho completo.

Propriedade Descrição
image A URL da imagem do cartão.
imageAspectRatio A proporção da imagem do cartão. Serve como uma dica antes que o carregamento da imagem seja concluído. Note que a propriedade pode não ser fornecida em certas circunstâncias.

Para uma referência completa do cartão de banner, consulte a documentação do Android e iOS (agora renomeado para image only).

Imagem com legenda

Os cartões de imagem com legenda são imagens em tamanho completo clicáveis com texto descritivo acompanhante.

Propriedade Descrição
image A URL da imagem do cartão.
imageAspectRatio A proporção da imagem do cartão. Serve como uma dica antes que o carregamento da imagem seja concluído. Note que a propriedade pode não ser fornecida em certas circunstâncias.
title O texto do título do cartão.
cardDescription O texto de descrição do cartão.
domain (Opcional) O texto do link para a URL da propriedade, por exemplo, "braze.com/resources/". Pode ser exibido na interface do cartão para indicar a ação/direção ao clicar no cartão.

Para uma referência completa do cartão de imagem com legenda, consulte a documentação do Android e iOS.

Clássico

Os cartões clássicos têm um título, uma descrição e uma imagem opcional antes do texto.

Propriedade Descrição
image (Opcional) A URL da imagem do cartão.
title O texto do título do cartão.
cardDescription O texto de descrição do cartão.
domain (Opcional) O texto do link para a URL da propriedade, por exemplo, "braze.com/resources/". Pode ser exibido na interface do cartão para indicar a ação/direção ao clicar no cartão.

Para uma referência completa do Content Card clássico (anúncio de texto), consulte a documentação do Android e iOS. Para uma referência completa do cartão de imagem clássico (notícia curta), consulte a documentação do Android e iOS.

Métodos do cartão

Você pode usar esses métodos adicionais para criar um feed de Content Cards personalizado dentro do seu app:

Método Descrição
requestContentCardsRefresh() Solicita os Content Cards mais recentes do servidor do SDK da Braze.
getContentCards() Recupera os Content Cards do SDK da Braze. Isso retornará a lista mais recente de cartões do servidor.
logContentCardClicked(cardId) Registra um clique para o ID do Content Card fornecido. Este método é usado apenas para análise de dados.
logContentCardImpression(cardId) Registra uma impressão para o ID do Content Card fornecido.
logContentCardDismissed(cardId) Registra uma dispensa para o ID do Content Card fornecido.
New Stuff!