warning:
AppboyKit (também conhecido como o SDK Objective-C) não é mais suportado e foi substituído pelo Swift SDK. Não receberá mais novos recursos, correções de bugs, atualizações de segurança ou suporte técnico—no entanto, o envio de mensagens e a análise de dados continuarão a funcionar normalmente. Para saber mais, veja Apresentando o Novo SDK Braze Swift.
integração do cartão de conteúdo
Modelo de dados de Cartões de Conteúdo
O modelo de dados dos cartões de conteúdo está disponível no SDK para iOS.
Obtenção dos dados
Para acessar o modelo de dados dos Cartões de Conteúdo, inscreva-se nos eventos de atualização dos Cartões de Conteúdo:
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 pelo 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 cartão de conteúdo
A Braze oferece três tipos de cartão de conteúdo: 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 cartão de conteúdo base - ABKContentCard
| Propriedade |
Descrição |
idString |
(Somente leitura) O ID do cartão definido pelo Braze. |
viewed |
Essa propriedade reflete se o usuário visualizou o cartão ou não. |
created |
(Somente leitura) Esta propriedade é o timestamp unix do horário de criação do cartão da Braze. |
expiresAt |
(Somente leitura) Esta propriedade é o timestamp unix do tempo de expiração do cartão. |
dismissible |
Esta propriedade reflete se o usuário pode dispensar o cartão. |
pinned |
Essa propriedade reflete se o cartão foi configurado como “fixado” no dashboard. |
dismissed |
Esta 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 um URL HTTP(s) ou um URL de protocolo. |
openURLInWebView |
Esta propriedade determina se o URL será aberto dentro do app ou em um navegador web externo. |
extras |
Um NSDictionary opcional de valores NSString. |
propriedades do cartão de conteúdo de banner - ABKBannerContentCard
| Propriedade |
Descrição |
image |
Esta propriedade é o URL da imagem do cartão. |
imageAspectRatio |
Esta 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 cartão de conteúdo da imagem legendada - ABKCaptionedImageCard
| Propriedade |
Descrição |
image |
Esta propriedade é o URL da imagem do cartão. |
imageAspectRatio |
Esta propriedade é a proporção da imagem do cartão. |
title |
O texto do título do cartão. |
cardDescription |
O texto do corpo para o cartão. |
domain |
O texto do link para a URL da propriedade, como @”blog.braze.com”. Ele pode ser exibido na interface do usuário do cartão para indicar a ação/direção de clicar no cartão. |
Propriedades do cartão de conteúdo clássico - ABKClassicContentCard
| Propriedade |
Descrição |
image |
(Opcional) Esta propriedade é a URL da imagem do cartão. |
title |
O texto do título do cartão. |
cardDescription |
O texto do corpo para o cartão. |
domain |
O texto do link para a URL da propriedade, como @”blog.braze.com”. Ele pode ser exibido na interface do usuário do cartão para indicar a ação e a direção do clique no cartão. |
Métodos do cartão
| Método |
Descrição |
logContentCardImpression |
Registre manualmente uma impressão no Braze para um determinado cartão. |
logContentCardClicked |
Registre manualmente um clique no 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 uma dispensa no 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 Cartões de Conteúdo
Os Cartões de Conteúdo podem ser integrados com dois contextos de controlador de visualização: navegação ou modal.
Contexto de navegação
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)
|
note:
Para personalizar o título da barra de navegação, defina a propriedade title do navigationItem da instância ABKContentCardsTableViewController.
Contexto modal
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 Concluído 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 Cartões de Conteúdo.
note:
Para personalizar o cabeçalho, defina a propriedade de título do navigationItem pertencente à instância ABKContentCardsTableViewController incorporada na instância pai ABKContentCardsViewController.