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

Usando cartões de conteúdo de conteúdo de banner? Experimente os banners -perfeitos para mensagens em linha e persistentes no app e na Internet.

Este guia usa exemplos de código do SDK da Braze para Web 4.0.0+. Para fazer upgrade para a versão mais recente do SDK para Web, consulte o Guia de atualização do SDK.
Pré-requisitos
Antes de poder usar os Content Cards, você precisará integrar o Braze Web SDK ao seu app. No entanto, nenhuma configuração adicional é necessária. Para criar sua própria interface, consulte o Guia de personalização de Content Cards.

Alguns bloqueadores de anúncios e extensões de privacidade do navegador podem bloquear o script do Braze Web SDK ou solicitações de rede relacionadas, o que pode impedir o carregamento dos Content Cards. Se você estiver usando o método de integração por CDN, considere mudar para o método de integração por NPM, que armazena as bibliotecas do SDK localmente no seu site e pode evitar alguns problemas relacionados a bloqueadores de anúncios.
Interface do feed padrão
Para usar a interface de Content Cards incluída, você precisará especificar onde mostrar o feed no seu site.
Neste exemplo, temos um <div id="feed"></div> no qual queremos colocar o feed dos Content Cards. Usaremos três botões para ocultar, mostrar ou alternar (ocultar ou mostrar com base no 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 Content Cards 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.
| 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 nessa visualização. Invocada com o array de objetos Card, classificado por {pinned, date}. Espera-se que retorne um array de objetos Card ordenados para renderizar para esse usuário. Se omitida, todos os cartões serão exibidos. |
Consulte os documentos de referência do SDK para saber mais sobre a alternância de Content Cards.
Testando Content Cards na web
Você pode testar sua integração de Content Cards usando as ferramentas de desenvolvedor do seu navegador.
- Crie uma Campaign de Content Cards e direcione-a ao seu usuário teste.
- Faça login no site que possui sua integração do Web SDK.
- Abra o console do navegador. No Chrome, clique com o botão direito na página, selecione Inspect e depois selecione a guia Console.
- Execute estes comandos no console:
window.braze.getCachedContentCards()window.braze.toggleContentCards()
Tipos e propriedades do cartão
O modelo de dados dos Content Cards está disponível no Web SDK e oferece os seguintes tipos de Content Cards: ImageOnly, CaptionedImage e ClassicCard. Cada tipo herda propriedades comuns de um modelo base Card e tem as seguintes propriedades adicionais.

Para registrar dados de Content Cards, consulte Registro de análise de dados.
Modelo de cartão base
Todos os Content Cards têm essas propriedades compartilhadas:
| Propriedade | Descrição |
|---|---|
expiresAt |
O registro de data e hora UNIX do tempo de expiração do cartão. |
extras |
(Opcional) Dados de par chave-valor formatados como um objeto de string com uma string de valor. |
id |
(Opcional) O ID do cartão. Isso será informado à Braze com eventos para fins de análise de dados. |
pinned |
Essa propriedade reflete se o cartão foi configurado como “fixado” no dashboard. |
updated |
O registro de data e hora UNIX de quando esse cartão foi modificado pela última vez. |
viewed |
Essa propriedade reflete se o usuário visualizou o cartão ou não. |
isControl |
Essa propriedade é true quando um cartão é um grupo de “controle” em um teste A/B. |
Somente imagem
Os cartões ImageOnly são imagens clicáveis em tamanho real.
| Propriedade | Descrição |
|---|---|
aspectRatio |
A proporção da imagem do cartão, que serve como uma dica antes da conclusão do carregamento da imagem. Observe que a propriedade pode não ser fornecida em determinadas circunstâncias. |
categories |
Essa propriedade serve apenas para organização na sua implementação personalizada; essas categorias podem ser definidas no criador do dashboard. |
clicked |
Essa propriedade indica se esse cartão já foi clicado nesse dispositivo. |
created |
O registro de data e hora UNIX do horário de criação do cartão na Braze. |
dismissed |
Essa propriedade indica se esse cartão foi descartado. |
dismissible |
Essa 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 da URL. |
url |
A URL que será aberta depois que o cartão for clicado. |
Imagem legendada
Os cartões CaptionedImage são imagens clicáveis em tamanho real com texto descritivo.
| Propriedade | Descrição |
|---|---|
aspectRatio |
A proporção da imagem do cartão, que serve como uma dica antes da conclusão do carregamento da imagem. Observe que a propriedade pode não ser fornecida em determinadas circunstâncias. |
categories |
Essa propriedade serve apenas para organização na sua implementação personalizada; essas categorias podem ser definidas no criador do dashboard. |
clicked |
Essa propriedade indica se esse cartão já foi clicado nesse dispositivo. |
created |
O registro de data e hora UNIX do horário de criação do cartão na Braze. |
dismissed |
Essa propriedade indica se esse cartão foi descartado. |
dismissible |
Essa 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 da URL. |
title |
O texto do título desse cartão. |
url |
A URL que será aberta depois que o cartão for 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, que serve como uma dica antes da conclusão do carregamento da imagem. Observe que a propriedade pode não ser fornecida em determinadas circunstâncias. |
categories |
Essa propriedade serve apenas para organização na sua implementação personalizada; essas categorias podem ser definidas no criador do dashboard. |
clicked |
Essa propriedade indica se esse cartão já foi clicado nesse dispositivo. |
created |
O registro de data e hora UNIX do horário de criação do cartão na Braze. |
description |
O texto do corpo deste cartão. |
dismissed |
Essa propriedade indica se esse cartão foi descartado. |
dismissible |
Essa 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 da URL. |
title |
O texto do título desse cartão. |
url |
A URL que será aberta depois que o cartão for clicado. |
Grupo de controle
Se você usar o feed padrão dos Content Cards, as impressões e os cliques serão rastreados automaticamente.
Se você usar uma integração personalizada para Content Cards, precisará registrar impressões quando um cartão de controle tiver sido visto. Nesse caso, 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 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 ControlCard (card instanceof braze.ControlCard).
Métodos do cartão
Métodos do feed padrão
Use estes métodos ao exibir Content Cards usando a interface padrão 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 no lado direito da página se nenhum elemento for fornecido. Aceita uma filterFunction opcional para classificar ou filtrar os cartões antes da exibição. |
hideContentCards |
Oculta o feed padrão de Content Cards se ele estiver sendo exibido no momento. |
toggleContentCards |
Mostra 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 do 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 isso como a forma principal de receber dados de cartões para 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 dos Content Cards. Use isso para exibir cartões imediatamente ao carregar a página sem aguardar uma nova solicitaçã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 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 isso 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 taxa. |
logContentCardImpressions |
Registra eventos de impressão para um array de cartões. Chame isso quando os cartões forem renderizados e visíveis para o usuário. Necessário para relatórios precisos de Campaigns 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 isso quando um usuário interagir com um cartão na sua interface personalizada. Necessário para relatórios precisos de Campaigns, pois os cliques não são rastreados automaticamente fora do feed padrão. |
handleBrazeAction |
Processa a URL de um cartão e executa o comportamento ao clicar configurado, incluindo ações da Braze (URLs brazeActions://) e navegação de URL padrão. Chame isso no manipulador de clique do seu cartão para garantir que os comportamentos ao clicar configurados no dashboard da Braze sejam executados. |
dismissCard |
Descarta programaticamente um cartão, removendo-o do feed do usuário. Use isso para permitir que os usuários descartem cartões na sua interface personalizada. |
Para mais informações, consulte a documentação de referência do SDK.
Práticas recomendadas
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 (como 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 sua inscrição para novas atualizações:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 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 se tornarem 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 o comportamento ao clicar configurado no cartão (como navegar para uma URL ou registrar um evento personalizado).

O argumento passado para logContentCardClick() deve ser um objeto Card original da Braze. Se você transformar ou reconstruir os dados do cartão (por exemplo, serializando e desserializando), os cliques não serão registrados e você verá o erro: “card must be a Card object.”
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 Content Cards.
Configuração de 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:
1
2
3
<script>
window.braze.showContentCards();
</script>

Para ter mais liberdade na personalização da aparência dos Content Cards e do seu feed, é possível integrar diretamente os Content Cards ao seu site nativo. Há duas abordagens que você pode adotar: 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 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 de Content Cards, você pode colar o seguinte no 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 Braze Web SDK, siga as três etapas a seguir no seu dashboard do Google Tag Manager:
- Atualizar modelo de tag
Acesse a página Templates no seu espaço de trabalho. Aqui você verá um ícone indicando que há uma atualização disponível.
Clique nesse ícone e, após revisar a alteração, clique em Accept Update.
- 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 recentemajor.minor. Por exemplo, se a versão mais recente for4.1.2, digite4.1. Você pode ver uma lista das versões do SDK no nosso changelog.
- QA 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 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 da web.

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 da Braze disparada e também explicará quais tags foram ou não disparadas.

Verificar o sequenciamento 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 de Braze Initialization tenha sido concluída. Para corrigir isso, configure o sequenciamento de tags no GTM:
- Abra a tag de ação que não está registrando corretamente.
- Em Advanced Settings > Tag Sequencing, selecione A tag that fires before [this tag].
- Escolha sua tag de 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 o 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 serão exibidos na guia Console das ferramentas de desenvolvedor do seu navegador.
Na sua integração do Google Tag Manager, navegue até a tag de inicialização da Braze e selecione Enable Web SDK Logging.

Pré-requisitos
Antes de usar os Content Cards da Braze, você precisará integrar o SDK da Braze para Android 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 da Braze para Android. A classe ContentCardsFragment será atualizada automaticamente e exibirá o conteúdo dos Content Cards, além de registrar a análise de dados de uso. Os cartões que podem aparecer no 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 e propriedades de cartões
O modelo de dados dos Content Cards está disponível no SDK para Android e oferece os seguintes tipos exclusivos de Content Cards. Cada tipo compartilha um modelo base, 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 dispensado 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 dispensado. Defina como true para marcar o cartão como dispensado. Se um cartão já estiver marcado como dispensado, ele não poderá ser marcado como dispensado novamente. |
isControl() |
Retorna um booleano indicando se este cartão é um cartão de controle e não deve ser renderizado. |
Somente imagem
Cartões somente com 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 será aberta após o cartão ser clicado. 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
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 será aberta após o cartão ser clicado. 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 resultará em um cartão de anúncio de texto. Se uma imagem for incluída, você receberá um cartão de notícias curtas.
| 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 será aberta após o cartão ser clicado. 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. Aplica-se apenas ao cartão de notícias curtas clássico. |
isDismissed |
Retorna um booleano que indica se o cartão foi dispensado. Defina como true para marcar o cartão como dispensado. Se um cartão já estiver marcado como dispensado, ele não poderá ser marcado como dispensado novamente. |
Métodos do 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ários nos servidores da Braze.
| Método | Descrição |
|---|---|
logImpression() |
Registra manualmente uma impressão na Braze para um determinado cartão. |
logClick() |
Registra manualmente um clique na Braze para um determinado cartão. |
Pré-requisitos
Antes de poder usar os Content Cards, você precisará integrar o Braze Swift SDK em seu app. No entanto, não é necessária nenhuma configuração adicional.
Contextos de view controller
A interface padrão dos Content Cards pode ser integrada a partir da biblioteca BrazeUI do SDK da Braze. Crie o view controller dos Content Cards usando a instância braze. Se quiser interceptar e reagir ao ciclo de vida da interface do Content Card, implemente BrazeContentCardUIViewControllerDelegate como o delegado do seu BrazeContentCardUI.ViewController.

Para saber mais sobre as opções de view controller do iOS, consulte a documentação da Apple para desenvolvedores.
A biblioteca BrazeUI do Swift SDK fornece dois contextos de view controller padrão: navegação ou modal. Isso significa que você pode integrar os 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 estilo, conforme descrito no guia de personalização. Você também pode criar um view controller de cartão de conteúdo personalizado em vez de usar o padrão da Braze para ter ainda mais opções de personalização — consulte o tutorial Content Cards UI para obter um exemplo.

Para lidar com a variante de controle dos Content Cards em sua interface personalizada, passe o objeto Braze.ContentCard.Control e, em seguida, chame o método logImpression como faria com qualquer outro tipo de Content Card. O objeto registrará implicitamente uma impressão de controle para informar nossa análise de dados sobre quando um usuário teria visto o cartão de controle.
Navegação
Um navigation controller é um view controller que gerencia um ou mais child view controllers em uma interface de navegação. Veja um exemplo de como inserir uma instância BrazeContentCardUI.ViewController em um 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 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 tem uma barra de navegação na parte superior e um botão Done na lateral da barra. Veja um exemplo de como inserir uma instância BrazeContentCard.ViewController em um 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];
}
Para obter um exemplo de uso dos view controllers BrazeUI, confira as amostras correspondentes da interface dos Content Cards em nosso app Examples.
Modelo de cartão básico
O modelo de dados dos Content Cards está disponível no módulo BrazeKit do Braze Swift SDK. Este módulo contém os seguintes tipos de Content Card, que são uma implementação do tipo Braze.ContentCard. Para obter uma lista completa das propriedades do Content Card e seu uso, consulte a classe ContentCard.
- Somente imagem
- Imagem legendada
- Clássico
- Imagem clássica
- Controle
Para acessar o modelo de dados dos Content Cards, chame contentCards.cards em sua instância braze. Consulte Registro de análise de dados para saber mais sobre a assinatura de dados de cartões.

Lembre-se de que o BrazeKit oferece uma classe alternativa ContentCardRaw para compatibilidade com Objective-C.
Métodos do cartão
Cada cartão é inicializado com um objeto Context, que contém vários métodos para gerenciar o estado do 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 determinada entrada ClickAction. |
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 determinada imagem de cartão de conteúdo a partir de um URL. Esse método pode ser nulo quando o cartão de conteúdo não tiver uma imagem. |
Para saber mais, consulte a documentação da classe Context
Pré-requisitos
Antes de poder usar esse recurso, você precisará integrar o Cordova Braze SDK.
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 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 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.
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 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:
1
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 para os Content Cards de um usuário.
Pré-requisitos
Antes de poder usar esse recurso, você precisará integrar o 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();

Se você optar por criar sua própria interface do usuário para exibir cartões, deverá chamar logContentCardImpression para receber análises de dados desses cartões. Isso inclui os cartões control, que devem ser rastreados mesmo que não sejam exibidos ao usuário.
Você pode usar esses métodos adicionais para criar um feed de Content Cards personalizado em 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. |
getContentCards() |
Recupera os Content Cards do SDK da Braze. Isso retorna uma promessa que é resolvida com a lista mais recente de cartões do servidor. |
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 os URLs para esse cartão devem ser abertos 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 iOS.
Somente imagem
Os cartões somente de imagem são imagens clicáveis e 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. Destina-se a servir 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 em tamanho real clicáveis 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. Destina-se a servir 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 de 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, descrição e uma imagem opcional à esquerda 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 de 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 o cartão de imagem clássico (notícias curtas), consulte a documentação do Android e iOS.
Controle
Os cartões de controle incluem todas as propriedades básicas, com algumas diferenças importantes. E o mais importante:
- A propriedade
isControltem a garantia de sertrue. - A propriedade
extrastem 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.

Lembre-se de que você precisará implementar sua própria IU personalizada, pois os cartões de conteúdo são compatíveis com a IU headless usando o Swift SDK, que não inclui nenhuma IU ou exibição padrão para o 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.


Se você marcar a caixa de seleção tvOS, não poderá personalizar os cartões de conteúdo para tvOS.
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.

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 usar este recurso, você precisará integrar o SDK Unity Braze.
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 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 à esquerda 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. |