Skip to content

Análise de dados de registro

Se quiser exibir os cartões de conteúdo de uma maneira totalmente personalizada, você poderá implementar sua própria interface de apresentação de cartões de conteúdo. No entanto, dados como impressões, cliques e descartes só são tratados automaticamente quando modelos de cartão padrão são utilizados. Ao implementar uma interface totalmente personalizada, você precisará lidar com esses dados manualmente. Para fazer isso, preencha sua interface do usuário personalizada com dados dos modelos de dados do Braze e registre manualmente análises de dados, como impressões e cliques. Depois de entender como registrar a análise de dados, você poderá ver as maneiras comuns pelas quais os clientes do Braze criam cartões de conteúdo personalizados.

Ouvindo as atualizações do cartão

Ao implementar seus cartões de conteúdo personalizados, você pode analisar os objetos do cartão de conteúdo e extrair seus dados de carga útil, como title, cardDescription e imageUrl. Em seguida, você pode usar os dados do modelo resultante para preencher sua interface personalizada.

Para obter os modelos de dados do cartão de conteúdo, inscreva-se para receber as atualizações do cartão de conteúdo. Preste atenção especial em duas propriedades:

  • id: Representa a string de ID do cartão de conteúdo. Esse é o identificador exclusivo usado para registrar análises de dados de cartões de conteúdo personalizados.
  • extras: Engloba todos os pares de valores-chave do dashboard do Braze.

Todas as propriedades fora de id e extras são opcionais para análise de cartões de conteúdo personalizados. Para saber mais sobre o modelo de dados, consulte o artigo de integração de cada plataforma: Android, iOS, Web.

Etapa 1: Criar uma variável de assinante privada

Para assinar as atualizações do cartão, primeiro declare uma variável privada em sua classe personalizada para manter o assinante:

1
2
// subscriber variable
private IEventSubscriber<ContentCardsUpdatedEvent> mContentCardsUpdatedSubscriber;

Etapa 2: Inscrever-se para receber atualizações

Em seguida, adicione o seguinte código para inscrever-se para receber as atualizações dos cartões de conteúdo da Braze, normalmente dentro de Activity.onCreate() da atividade dos cartões de conteúdo personalizados:

1
2
3
4
5
6
7
8
9
10
11
12
13
// Remove the previous subscriber before rebuilding a new one with our new activity.
Braze.getInstance(context).removeSingleSubscription(mContentCardsUpdatedSubscriber, ContentCardsUpdatedEvent.class);
mContentCardsUpdatedSubscriber = new IEventSubscriber<ContentCardsUpdatedEvent>() {
    @Override
    public void trigger(ContentCardsUpdatedEvent event) {
        // List of all Content Cards
        List<Card> allCards = event.getAllCards();

        // Your logic below
    }
};
Braze.getInstance(context).subscribeToContentCardsUpdates(mContentCardsUpdatedSubscriber);
Braze.getInstance(context).requestContentCardsRefresh();

Etapa 3: Cancelar inscrição

Também recomendamos cancelar a inscrição quando sua atividade personalizada sair de vista. Adicione o seguinte código ao método de ciclo de vida onDestroy() de sua atividade:

1
Braze.getInstance(context).removeSingleSubscription(mContentCardsUpdatedSubscriber, ContentCardsUpdatedEvent.class);

Etapa 1: Criar uma variável de assinante privada

Para assinar as atualizações do cartão, primeiro declare uma variável privada em sua classe personalizada para manter o assinante:

1
private var contentCardsUpdatedSubscriber: IEventSubscriber<ContentCardsUpdatedEvent>? = null

Etapa 2: Inscrever-se para receber atualizações

Em seguida, adicione o seguinte código para inscrever-se para receber as atualizações dos cartões de conteúdo da Braze, normalmente dentro de Activity.onCreate() da atividade dos cartões de conteúdo personalizados:

1
2
3
4
5
6
7
8
9
10
// Remove the previous subscriber before rebuilding a new one with our new activity.
Braze.getInstance(context).subscribeToContentCardsUpdates(contentCardsUpdatedSubscriber)
Braze.getInstance(context).requestContentCardsRefresh()
  // List of all Content Cards
  val allCards = event.allCards

  // Your logic below
}
Braze.getInstance(context).subscribeToContentCardsUpdates(mContentCardsUpdatedSubscriber)
Braze.getInstance(context).requestContentCardsRefresh(true)

Etapa 3: Cancelar inscrição

Também recomendamos cancelar a inscrição quando sua atividade personalizada sair de vista. Adicione o seguinte código ao método de ciclo de vida onDestroy() de sua atividade:

1
Braze.getInstance(context).removeSingleSubscription(contentCardsUpdatedSubscriber, ContentCardsUpdatedEvent::class.java)

Para acessar o modelo de dados dos cartões de conteúdo, chame contentCards.cards em sua instância braze.

1
let cards: [Braze.ContentCard] = AppDelegate.braze?.contentCards.cards

Além disso, você também pode manter uma inscrição para observar as alterações em seus cartões de conteúdo. Você pode fazer isso de duas maneiras:

  1. Manutenção de um cancelável; ou
  2. Manutenção de um AsyncStream.

Cancelável

1
2
3
4
5
6
// This subscription is maintained through a Braze cancellable, which will observe for changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
let cancellable = AppDelegate.braze?.contentCards.subscribeToUpdates { [weak self] contentCards in
  // Implement your completion handler to respond to updates in `contentCards`.
}

AsyncStream

1
let stream: AsyncStream<[Braze.ContentCard]> = AppDelegate.braze?.contentCards.cardsStream
1
NSArray<BRZContentCardRaw *> *contentCards = AppDelegate.braze.contentCards.cards;

Além disso, para manter uma inscrição em seus cartões de conteúdo, você poderá chamar subscribeToUpdates:

1
2
3
4
// This subscription is maintained through Braze cancellable, which will continue to observe for changes until the subscription is cancelled.
BRZCancellable *cancellable = [self.braze.contentCards subscribeToUpdates:^(NSArray<BRZContentCardRaw *> *contentCards) {
  // Implement your completion handler to respond to updates in `contentCards`.
}];

Registre uma função de retorno de chamada para se inscrever para receber atualizações quando os cartões forem atualizados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import * as braze from "@braze/web-sdk";

braze.subscribeToContentCardsUpdates((updates) => {
  const cards = updates.cards;
// For example:
  cards.forEach(card => {
    if (card.isControl) {
      // Do not display the control card, but remember to call `logContentCardImpressions([card])`
    }
    else if (card instanceof braze.ClassicCard || card instanceof braze.CaptionedImage) {
      // Use `card.title`, `card.imageUrl`, etc.
    }
    else if (card instanceof braze.ImageOnly) {
      // Use `card.imageUrl`, etc.
    }
  })
});

braze.openSession();

Eventos de registro

O registro de métricas valiosas, como impressões, cliques e descartes, é rápido e simples. Defina um listener (ouvinte) de cliques personalizado para lidar manualmente com essas análises de dados.

O BrazeManager pode fazer referência às dependências do SDK da Braze, como a lista de vetores de objetos do cartão de conteúdo, para obter o Card e chamar os métodos de registro da Braze. Use a classe base ContentCardable para facilitar a referência e o fornecimento de dados para o BrazeManager.

Para registrar uma impressão ou clicar em um cartão, ligue para Card.logClick() ou Card.logImpression() respectivamente.

É possível registrar manualmente ou definir um cartão de conteúdo como “descartado” para a Braze com isDismissed. Se um cartão já tiver sido marcado como descartado, ele não poderá ser marcado como descartado novamente.

Para criar um ouvinte de cliques personalizado, crie uma classe que implemente IContentCardsActionListener e registre-a em BrazeContentCardsManager. Implemente o método onContentCardClicked() que será chamado quando o usuário clicar em um cartão de conteúdo. Em seguida, instrua a Braze a usar seu ouvinte de clique do cartão de conteúdo.

Por exemplo:

1
2
3
4
5
6
7
8
9
10
11
BrazeContentCardsManager.getInstance().setContentCardsActionListener(new IContentCardsActionListener() {
  @Override
  public boolean onContentCardClicked(Context context, Card card, IAction cardAction) {
    return false;
  }

  @Override
  public void onContentCardDismissed(Context context, Card card) {

  }
});

Por exemplo:

1
2
3
4
5
6
7
8
9
BrazeContentCardsManager.getInstance().contentCardsActionListener = object : IContentCardsActionListener {
  override fun onContentCardClicked(context: Context, card: Card, cardAction: IAction): Boolean {
    return false
  }

  override fun onContentCardDismissed(context: Context, card: Card) {

  }
}

Implemente o protocolo BrazeContentCardUIViewControllerDelegate e defina seu objeto delegado como a propriedade delegate de BrazeContentCardUI.ViewController. Esse delegado tratará de passar os dados do seu objeto personalizado de volta ao Braze para serem registrados. Para obter um exemplo, consulte o tutorial da interface do usuário dos cartões de conteúdo.

1
2
3
4
5
6
7
8
9
10
11
12
// Set the delegate when creating the Content Cards controller
contentCardsController.delegate = delegate

// Method to implement in delegate
func contentCard(
    _ controller: BrazeContentCardUI.ViewController,
    shouldProcess clickAction: Braze.ContentCard.ClickAction,
    card: Braze.ContentCard
  ) -> Bool {
  // Intercept the content card click action here.
  return true
}
1
2
3
4
5
6
7
8
9
10
// Set the delegate when creating the Content Cards controller
contentCardsController.delegate = delegate;

// Method to implement in delegate
- (BOOL)contentCardController:(BRZContentCardUIViewController *)controller
                shouldProcess:(NSURL *)url
                         card:(BRZContentCardRaw *)card {
  // Intercept the content card click action here.
  return YES;
}

Registre eventos de impressão quando os cartões forem visualizados por usuários usando logContentCardImpressions:

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

braze.logContentCardImpressions([card1, card2, card3]);

Registre os eventos de clique do cartão quando os usuários interagirem com um cartão usando logContentCardClick:

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

braze.logContentCardClick(card);
QUÃO ÚTIL FOI ESTA PÁGINA?
New Stuff!