Skip to content


Integração de Content Cards

Modelo de dados de Content Cards

O modelo de dados de Content Cards está disponível no SDK para iOS.

Obtenção dos dados

Para acessar o modelo de dados de Content Cards, inscreva-se nos eventos de atualização de Content Cards:

1
2
3
4
5
6
// Subscribe to Content Cards updates
// Note: you should remove the observer where appropriate
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(contentCardsUpdated:)
                                             name:ABKContentCardsProcessedNotification
                                           object:nil];
1
2
3
4
5
6
7
// Called when Content Cards are refreshed (via `requestContentCardsRefresh`)
- (void)contentCardsUpdated:(NSNotification *)notification {
  BOOL updateIsSuccessful = [notification.userInfo[ABKContentCardsProcessedIsSuccessfulKey] boolValue];
  if (updateIsSuccessful) {
    // get the cards using [[Appboy sharedInstance].contentCardsController getContentCards];
  }
}
1
2
3
4
5
// Subscribe to content card updates
// Note: you should remove the observer where appropriate
NotificationCenter.default.addObserver(self, selector:
  #selector(contentCardsUpdated),
  name:NSNotification.Name.ABKContentCardsProcessed, object: nil)
1
2
3
4
5
6
7
8
// Called when the Content Cards are refreshed (via `requestContentCardsRefresh`)
@objc private func contentCardsUpdated(_ notification: Notification) {
  if let updateIsSuccessful = notification.userInfo?[ABKContentCardsProcessedIsSuccessfulKey] as? Bool {
    if (updateIsSuccessful) {
      // get the cards using Appboy.sharedInstance()?.contentCardsController.contentCards
    }
  }
}

Se você quiser alterar os dados do cartão depois de enviados pela Braze, recomendamos armazenar uma cópia profunda dos dados do cartão localmente, atualizar os dados e exibi-los você mesmo. Os cartões são acessíveis via ABKContentCardsController.

Modelo de Content Card

A Braze oferece três tipos de Content Cards: banner, imagem legendada e clássico. Cada tipo herda propriedades comuns de uma classe base ABKContentCard e possui as seguintes propriedades adicionais.

Propriedades do modelo de Content Card base - ABKContentCard

Propriedade Descrição
idString (Somente leitura) O ID do cartão definido pela Braze.
viewed Essa propriedade reflete se o usuário visualizou o cartão ou não.
created (Somente leitura) Essa propriedade é o timestamp unix do horário de criação do cartão na Braze.
expiresAt (Somente leitura) Essa propriedade é o timestamp unix do tempo de expiração do cartão.
dismissible Essa propriedade reflete se o usuário pode descartar o cartão.
pinned Essa propriedade reflete se o cartão foi configurado como “fixado” no dashboard.
dismissed Essa propriedade reflete se o usuário descartou o cartão.
url A URL que será aberta após o cartão ser clicado. Pode ser uma URL HTTP(s) ou uma URL de protocolo.
openURLInWebView Essa propriedade determina se a URL será aberta dentro do app ou em um navegador web externo.
extras Um NSDictionary opcional de valores NSString.
Propriedade Descrição
image Essa propriedade é a URL da imagem do cartão.
imageAspectRatio Essa propriedade é a proporção da imagem do cartão e serve como uma dica antes que o carregamento da imagem seja concluído. Observe que a propriedade pode não ser fornecida em certas circunstâncias.

Propriedades do Content Card de imagem legendada - ABKCaptionedImageCard

Propriedade Descrição
image Essa propriedade é a URL da imagem do cartão.
imageAspectRatio Essa propriedade é a proporção da imagem do cartão.
title O texto do título do cartão.
cardDescription O texto do corpo do cartão.
domain O texto do link para a URL da propriedade, como @”blog.braze.com”. Pode ser exibido na interface do cartão para indicar a ação/direção ao clicar no cartão.

Propriedades do Content Card clássico - ABKClassicContentCard

Propriedade Descrição
image (Opcional) Essa propriedade é a URL da imagem do cartão.
title O texto do título do cartão.
cardDescription O texto do corpo do cartão.
domain O texto do link para a URL da propriedade, como @”blog.braze.com”. Pode ser exibido na interface do cartão para indicar a ação e a direção ao clicar no cartão.

Métodos do cartão

Método Descrição
logContentCardImpression Registre manualmente uma impressão na Braze para um determinado cartão.
logContentCardClicked Registre manualmente um clique na Braze para um determinado cartão. O SDK só registrará um clique no cartão quando o cartão tiver a propriedade url com um valor válido.
logContentCardDismissed Registre manualmente um descarte na Braze para um cartão específico. O SDK só registrará um descarte de cartão se a propriedade dismissed do cartão ainda não estiver definida como true.
isControlCard Determine se um cartão é o cartão de Controle para um teste A/B.

Para saber mais, consulte a documentação de referência da classe.

Integração do controlador de visualização de Content Cards

Content Cards podem ser integrados com dois contextos de controlador de visualização: navegação ou modal.

Exemplo de como inserir uma instância ABKContentCardsTableViewController em um controlador de navegação:

1
2
3
4
ABKContentCardsTableViewController *contentCards = [[ABKContentCardsTableViewController alloc] init];
contentCards.title = @"Content Cards Title";
contentCards.disableUnreadIndicator = YES;
[self.navigationController pushViewController:contentCards animated:YES];
1
2
3
4
let contentCards = ABKContentCardsTableViewController()
contentCards.title = "Content Cards Title"
contentCards.disableUnreadIndicator = true
navigationController?.pushViewController(contentCards, animated: true)

Este modal é usado para apresentar o controlador de visualização em uma visualização modal, com uma barra de navegação no topo e um botão Done na lateral da barra.

1
2
3
4
ABKContentCardsViewController *contentCards = [[ABKContentCardsViewController alloc] init];
contentCards.contentCardsViewController.title = @"Content Cards Title";
contentCards.contentCardsViewController.disableUnreadIndicator = YES;
[self.navigationController presentViewController:contentCards animated:YES completion:nil];
1
2
3
4
let contentCards = ABKContentCardsViewController()
contentCards.contentCardsViewController.title = "Content Cards Title"
contentCards.contentCardsViewController.disableUnreadIndicator = true
self.present(contentCards, animated: true, completion: nil)

Para exemplos de controlador de visualização, confira o app de exemplo de Content Cards.

New Stuff!