warning:
AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK.
Intégration d’une carte de contenu
Modèle de données de cartes de contenu
Le modèle de données de cartes de contenu est disponible dans le SDK iOS.
Obtenir les données
Pour accéder au modèle de données des cartes de contenu, abonnez-vous aux événements de mise à jour des cartes de contenu :
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
}
}
}
|
Si vous souhaitez modifier les données de la carte après qu’elles aient été envoyées par Braze, nous vous recommandons de stocker localement une copie complète des données de la carte, de mettre les données à jour et de les afficher vous-même. Les cartes sont accessibles via ABKContentCardsController
.
Modèle de carte de contenu
Braze propose trois types de cartes de contenu : bannière, image légendée et classique. Chaque type hérite des propriétés communes d’une classe ABKContentCard
de base et possède les propriétés supplémentaires suivantes.
Propriétés du modèle de carte de contenu de base : ABKContentCard
Propriété |
Description |
idString |
(Lecture seule) L’ID de la carte est défini par Braze. |
viewed |
Cette propriété indique si l’utilisateur a vu la carte ou non. |
created |
(Lecture seule) Cette propriété est l’horodatage Unix du temps de création de la carte par Braze. |
expiresAt |
(Lecture seule) Cette propriété est l’horodatage Unix du temps du délai d’expiration de la carte. |
dismissible |
Cette propriété indique si l’utilisateur peut ignorer la carte. |
pinned |
Cette propriété reflète si la carte a été définie comme « épinglée » dans le tableau de bord. |
dismissed |
Cette propriété reflète si l’utilisateur a rejeté la carte. |
url |
L’URL qui sera ouverte après avoir cliqué sur la carte. Il peut s’agir d’une URL HTTP(S) ou d’une URL de protocole. |
openURLInWebView |
Cette propriété détermine si l’URL sera ouverte dans l’application ou dans un navigateur Web externe. |
extras |
Un NSDictionary facultatif de valeurs NSString . |
Propriétés de la Content Card de la bannière - ABKBannerContentCard
Propriété |
Description |
image |
Cette propriété est l’URL de l’image de la carte. |
imageAspectRatio |
Cette propriété est le rapport hauteur/largeur de l’image de la carte et sert d’indice avant que le chargement d’image ne soit terminé. Veuillez noter que la propriété peut ne pas être fournie dans certaines circonstances. |
Propriétés de la carte de contenu de l’image sous-titrée : ABKCaptionedImageCard
Propriété |
Description |
image |
Cette propriété est l’URL de l’image de la carte. |
imageAspectRatio |
Cette propriété est le rapport hauteur/largeur de l’image de la carte. |
title |
Le texte du titre pour la carte. |
cardDescription |
Le texte du corps pour la carte. |
domain |
Le texte du lien pour l’URL de propriété, par exemple @”blog.braze.com”. Il peut être affiché sur l’interface utilisateur de la carte pour indiquer l’action/la direction du clic sur la carte. |
Propriétés de la Classic Content Card - ABKClassicContentCard
Propriété |
Description |
image |
(Facultatif) Cette propriété est l’URL de l’image de la carte. |
title |
Le texte du titre pour la carte. |
cardDescription |
Le texte du corps pour la carte. |
domain |
Le texte du lien pour l’URL de propriété, par exemple @”blog.braze.com”. Il peut être affiché sur l’interface utilisateur de la carte pour indiquer l’action et la direction du clic sur la carte. |
Méthodes de carte
Méthode |
Description |
logContentCardImpression |
Enregistrer manuellement une impression sur Braze pour une carte particulière. |
logContentCardClicked |
Enregistrer manuellement un clic sur Braze pour une carte particulière. Le SDK ne journalisera une carte que lorsque la carte aura la propriété url avec une valeur valide. |
logContentCardDismissed |
Enregistrer manuellement un rejet sur Braze pour une carte particulière. Le SDK ne journalisera qu’une fermeture de carte de contenu si la propriété dismissed de la carte n’est pas déjà définie sur true . |
isControlCard |
Déterminez si une carte est la carte de contrôle pour un test A/B. |
Reportez-vous à la documentation de référence de classe pour plus de détails.
Intégration du contrôleur de visualisation des cartes de contenu
Les cartes de contenu peuvent être intégrées à deux contextes de contrôleur de visualisation : navigation ou modal.
Contexte de navigation
Exemple de notification push d’une instance ABKContentCardsTableViewController
dans un contrôleur de navigation :
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:
Pour personnaliser le titre de la barre de navigation, définissez la propriété de titre de ABKContentCardsTableViewController
l’instance navigationItem
.
Contexte modal
Cette fenêtre modale est utilisée pour présenter le contrôleur de visualisation dans une vue modale, avec une barre de navigation sur le dessus et un Terminé sur le côté de la barre.
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)
|
Pour des exemples de contrôleurs de vue, consultez notre exemple d’application Cartes de contenu.
note:
Pour personnaliser l’en-tête, définissez la propriété de titre du navigationItem
appartenant à l’instance ABKContentCardsTableViewController
intégrée dans l’instance ABKContentCardsViewController
parente.