Skip to content

Cartões de conteúdo

Saiba mais sobre os cartões de conteúdo para o Braze SDK, incluindo os diferentes modelos de dados e as propriedades específicas do cartão disponíveis para seu aplicativo.

Prerequisites

Before you can use Braze Content Cards, you’ll need to integrate the Braze Android SDK into your app. However, no additional setup is required.

Google fragments

In Android, the Content Cards feed is implemented as a fragment available in the Braze Android UI project. The ContentCardsFragment class will automatically refresh and display the contents of the Content Cards and log usage analytics. The cards that can appear in a user’s ContentCards are created on the Braze dashboard.

To learn how to add a fragment to an activity, see Google’s fragments documentation.

Card types and properties

The Content Cards data model is available in the Android SDK and offers the following unique Content Card types. Each type shares a base model, which allows them to inherit common properties from the base model, in addition to having their own unique properties. For full reference documentation, see com.braze.models.cards.

Base card model

The base card model provides foundational behavior for all cards.

Image only

Image only cards are clickable full-sized images.

Captioned image

Captioned image cards are clickable, full-sized images with accompanying descriptive text.

Classic

A classic card without an image included will result in a text announcement card. If an image is included, you will receive a short news card.

Card methods

All Card data model objects offer the following analytics methods for logging user events to Braze servers.

Prerequisites

Before you can use Content Cards, you’ll need to integrate the Braze Swift SDK into your app. However, no additional setup is required.

View controller contexts

The default Content Cards UI can be integrated from the BrazeUI library of the Braze SDK. Create the Content Cards view controller using the braze instance. If you wish to intercept and react to the Content Card UI lifecycle, implement BrazeContentCardUIViewControllerDelegate as the delegate for your BrazeContentCardUI.ViewController.

The BrazeUI library of the Swift SDK provides two default view controller contexts: navigation or modal. This means you can integrate Content Cards in these contexts by adding a few lines of code to your app or site. Both views offer customization and styling options as described in the customization guide. You can also create a custom Content Card view controller instead of using the standard Braze one for even more customization options—refer to the Content Cards UI tutorial for an example.

Navigation

A navigation controller is a view controller that manages one or more child view controllers in a navigation interface. Here is an example of pushing a BrazeContentCardUI.ViewController instance into a navigation controller:

1
2
3
4
5
6
7
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)
}
1
2
3
4
5
6
- (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 modal presentations to create temporary interruptions in your app’s workflow, such as prompting the user for important information. This model view has a navigation bar on top and a Done button on the side of the bar. Here is an example of pushing a BrazeContentCard.ViewController instance into a modal controller:

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

For example usage of BrazeUI view controllers, check out the corresponding Content Cards UI samples in our Examples app.

Base card model

The Content Cards data model is available in the BrazeKit module of the Braze Swift SDK. This module contains the following Content Card types, which are an implementation of the Braze.ContentCard type. For a full list of Content Card properties and their usage, see ContentCard class.

  • Image only
  • Captioned image
  • Classic
  • Classic image
  • Control

To access the Content Cards data model, call contentCards.cards on your braze instance. See Logging analytics for more information on subscribing to card data.

Card methods

Each card is initialized with a Context object, which contains various methods for managing your card’s state. Call these methods when you want to modify the corresponding state property on a particular card object.

For more details, refer to the Context class documentation

Pré-requisitos

Antes de poder usar os cartões de conteúdo, você precisará integrar o Braze Web SDK em seu app. No entanto, não é necessária nenhuma configuração adicional. Para criar sua própria interface do usuário, consulte o Guia de personalização do cartão de conteúdo.

Interface do usuário do feed padrão

Para usar a interface de usuário dos cartões de conteúdo incluídos, você precisará especificar onde mostrar o feed em seu site.

Neste exemplo, temos um <div id="feed"></div> no qual queremos colocar o feed dos cartões de conteúdo. Usaremos três botões para ocultar, mostrar ou alternar (ocultar ou mostrar com base em seu estado atual) o feed.

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
<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 cartões de conteúdo serão mostrados em uma barra lateral de posição fixa no lado direito da página. Caso contrário, o feed será colocado na opção parentNode especificada.

Consulte os documentos de referência do SDK para saber mais sobre a alternância do cartão de conteúdo.

Tipos e propriedades do cartão

O modelo de dados dos cartões de conteúdo está disponível no Web SDK e oferece os seguintes tipos de cartões de conteúdo: ImageOnly, CaptionedImage e ClassicCard. Cada tipo herda propriedades comuns de um cartão de modelo básico e tem as seguintes propriedades adicionais.

Modelo de cartão básico

Todos os cartões de conteúdo têm essas propriedades compartilhadas:

Somente imagem

Os cartões ImageOnly são imagens clicáveis em tamanho real.

Imagem legendada

Os cartões CaptionedImage são imagens clicáveis, em tamanho real, com texto descritivo.

Clássico

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

Grupo de controle

Se você usar o feed padrão dos cartões de conteúdo, as impressões e os cliques serão automaticamente rastreados.

Se você usar uma integração personalizada para Cartões de conteúdo, precisará registrar impressões quando um Cartão de controle tiver sido visto. Nessa iniciativa, lide 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 a performance deles com os cartões que não são de controle.

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

Métodos do cartão

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

Usando o Google Tag Manager

O Google Tag Manager funciona injetando o Braze CDN (uma versão do nosso Web SDK) diretamente no código do seu site, o que significa que todos os métodos do SDK estão disponíveis como se você tivesse integrado o SDK sem o Google Tag Manager, exceto ao implementar cartões de conteúdo.

Configuração de cartões de conteúdo

Para uma integração padrão do feed do cartão de conteúdo, você pode usar uma tag HTML personalizada no Google Tag Manager. Adicione o seguinte em sua tag HTML personalizada, que ativará o feed padrão do cartão de conteúdo:

1
2
3
<script>
   window.braze.showContentCards();
</script>

Configuração de tag no Google Tag Manager de uma tag HTML personalizada que mostra o feed do cartão de conteúdo.

Para ter mais liberdade na personalização da aparência dos cartões de conteúdo e de seu feed, é possível integrar diretamente os cartões de conteúdo em seu site nativo. Há duas abordagens que você pode adotar: usar a interface de usuário de feed padrão ou criar uma interface de usuário de feed personalizada.

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

Para o estilo de feed personalizado, as etapas são as mesmas que se você tivesse integrado o SDK sem o GTM. Por exemplo, se quiser personalizar a largura do feed do cartão de conteúdo, você pode colar o seguinte em seu arquivo CSS:

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

Fazendo upgrade de modelos

Para fazer upgrade para a versão mais recente do SDK da Braze para Web, siga as três etapas a seguir em seu dashboard do Google Tag Manager:

  1. Atualizar modelo de tag
    Acesse a página Modelos em seu espaço de trabalho. Aqui você verá um ícone indicando que há uma atualização disponível.

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

    Clique nesse ícone e, após revisar a alteração, clique em Accept Update (Aceitar atualização).

    Uma tela comparando os modelos de tag antigos e novos com um botão para "Aceitar atualização"

  2. Atualizar o número da versão
    Depois que seu modelo de tag tiver sido atualizado, edite a tag de inicialização da Braze e atualize a versão do SDK para a versão mais recente major.minor. Por exemplo, se a versão mais recente for 4.1.2, digite 4.1. Você pode ver uma lista das versões do SDK em nosso changelog.

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

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

Solução de problemas

Ativar a depuração de tag

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

Ferramenta de debug do Google Tag Manager

Entrar no modo de depuração

Outra maneira 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 da Web para cada tag do Braze disparada e também explicará quais tags foram ou não disparadas.

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

Ativar o registro detalhado

Para permitir que o suporte técnico da Braze acesse os registros durante os testes, é possível ativar o registro detalhado na integração com o Google Tag Manager. Esses registros serão exibidos na guia Console das ferramentas de desenvolvedor do seu navegador .

Em sua integração do Google Tag Manager, navegue até a tag de inicialização da Braze e selecione Ativar registro do SDK para Web.

A página de resumo da tag de inicialização do Braze com a opção de ativar o registro do SDK da Web.

Prerequisites

Before you can use this feature, you’ll need to integrate the Cordova Braze SDK.

Feeds de cartões

O SDK do 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 todos os rastreamentos de análises de dados, descartes e renderizações dos cartões de conteúdo de um usuário.

Cartões de conteúdo

Você pode usar esses métodos adicionais para criar um feed de cartões de conteúdo personalizado em seu aplicativo:

Sobre os cartões de conteúdo do Flutter

O SDK da Braze inclui um feed de cartão padrão para você começar com os Cartões de Conteúdo. 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 para os cartões de conteúdo 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 cartões de conteúdo personalizado em seu app usando os seguintes métodos disponíveis na interface pública do plug-in:

Recebimento de dados do cartão de conteúdo

Para receber dados de cartões de conteúdo em seu app Flutter, o BrazePlugin é compatível com o envio de dados de cartões de conteúdo usando o Dart Streams.

O objeto BrazeContentCard é compatível com um subconjunto de campos disponíveis nos objetos do modelo nativo, incluindo , description, title, image, url, extras, entre outros.

Etapa 1: Ouça os 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 cancel() a inscrição de fluxo quando ela não for mais necessária.

1
2
3
4
5
6
7
8
9
// Create stream subscription
StreamSubscription contentCardsStreamSubscription;

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

// Cancel stream subscription
contentCardsStreamSubscription.cancel();

Para obter um exemplo, consulte main.dart em nosso app de amostra.

Etapa 2: Encaminhar dados do cartão de conteúdo da camada nativa

Para receber os dados na camada Dart da etapa 1, adicione o seguinte código para encaminhar os dados do cartão de conteúdo das camadas nativas.

Os dados do cartão de conteúdo são encaminhados automaticamente da camada do Android.

  1. Implemente contentCards.subscribeToUpdates para assinar atualizações de cartões de conteúdo, conforme descrito na documentação subscribeToUpdates.

  2. Sua implementação de retorno de chamada contentCards.subscribeToUpdates deve chamar BrazePlugin.processContentCards(contentCards).

Para obter um exemplo, consulte AppDelegate.swift em nosso app de amostra.

Reprodução da chamada de retorno 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:

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

Sobre os cartões de conteúdo React Native

Os SDKs da Braze incluem um feed de cartão padrão para que você comece a usar os cartões de conteúdo. 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 para os cartões de conteúdo de um usuário.

Prerequisites

Before you can use this feature, you’ll need to integrate the React Native Braze SDK.

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:

1
2
3
4
5
6
7
8
9
10
11
// 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 cartões de conteúdo personalizado em seu aplicativo:

Tipos e propriedades do cartão

O modelo de dados 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.

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

Somente imagem

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

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

Imagem legendada

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

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

Clássico

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

Para uma referência completa do clássico (anúncio de texto) cartão de conteúdo, consulte a documentação do Android e 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. E o mais importante:

  • 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 Cartões de Conteúdo, você precisará integrar o Braze Swift SDK no seu app. Em seguida, você precisará concluir as etapas para configurar seu app tvOS.

Configurando seu app para tvOS

Etapa 1: Criar um novo app para iOS

Na Braze, selecione Settings > App Settings e, em seguida, selecione Add App. Digite um nome para o seu aplicativo para tvOS, selecione iOS - não_tvOS - e_selecione Adicionar aplicativo.

ALT_TEXT.

Etapa 2: Obtenha a chave de API de seu app

Nas configurações do aplicativo, selecione o novo aplicativo para tvOS e, em seguida, note a chave de API do aplicativo. Você usará essa chave para configurar seu app no Xcode.

ALT_TEXT

Etapa 3: Integrar o BrazeKit

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

Etapa 4: Crie sua interface de usuário personalizada

Como a Braze não fornece uma interface de usuário padrão para cartões de conteúdo no tvOS, você mesmo precisará personalizá-la. Para obter um passo a passo completo, consulte nosso tutorial passo a passo: Personalização de cartões de conteúdo para tvOS. Para obter um projeto de amostra, consulte Amostras do SDK da Braze para Swift.

Pré-requisitos

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

Exibição nativa de cartões de conteúdo

Você pode exibir a interface do usuário padrão para os cartões de conteúdo usando a seguinte chamada:

1
Appboy.AppboyBinding.DisplayContentCards();

Recebimento de dados do cartão de conteúdo no Unity

Você pode registrar objetos de jogo Unity para serem notificados sobre cartões de conteúdo. Recomendamos configurar os ouvintes de objetos de jogo no editor de configuração do Braze.

Se você precisar configurar o ouvinte do objeto do 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 em seu ouvinte de objeto de jogo no iOS.

Análise de cartões de conteúdo

As mensagens string recebidas em seu retorno de chamada de objeto de jogo de cartões de conteúdo podem ser analisadas em nosso objeto modelo ContentCard por conveniência.

A análise de cartões de conteúdo requer análise de JSON; consulte o exemplo a seguir para obter detalhes:

Exemplo de retorno de chamada dos cartões de conteúdo
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
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 os cartões de conteúdo

Para atualizar os cartões de conteúdo pela Braze, use um dos métodos a seguir:

1
2
3
4
// 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 os cartões de conteúdo não exibidos diretamente pelo Braze.

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

Sobre os cartões de conteúdo do Xamarin

O SDK do Braze Xamarin inclui um feed de cartão padrão para que você comece a usar os cartões de conteúdo. 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 para os Cartões de Conteúdo de um usuário.

Pré-requisitos

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

Tipos e propriedades do cartão

O SDK do Braze Xamarin tem três tipos exclusivos de cartões de conteúdo que compartilham um modelo básico: Banner, Imagem com legenda e Clássico. Cada tipo herda propriedades comuns de um modelo base e possui as seguintes propriedades adicionais.

Modelo de cartão básico

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 e de tamanho completo.

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

Imagem legendada

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

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

Clássico

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

Para uma referência completa do clássico (anúncio de texto) cartão de conteúdo, 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 Cartões de Conteúdo personalizado dentro do seu app:

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