Skip to content


Gestion personnalisée de l’affichage des messages in-app

Lorsque le ABKInAppMessageControllerDelegate est défini, la méthode de délégation suivante sera appelée avant l’affichage des messages in-app :

1
- (ABKInAppMessageDisplayChoice) beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage;
1
func beforeInAppMessageDisplayed(inAppMessage: ABKInAppMessage!) -> ABKInAppMessageDisplayChoice

Si vous n’avez implémenté que ABKInAppMessageUIDelegate, la méthode suivante du délégué d’interface utilisateur sera appelée à la place :

1
- (ABKInAppMessageDisplayChoice) beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage withKeyboardIsUp:(BOOL)keyboardIsUp;
1
func beforeInAppMessageDisplayed(inAppMessage: ABKInAppMessage!, withKeyboardIsUp keyboardIsUp: Bool) -> ABKInAppMessageDisplayChoice

Vous pouvez personnaliser la gestion des messages in-app en implémentant cette méthode de délégation et en renvoyant l’une des valeurs suivantes pour ABKInAppMessageDisplayChoice :

ABKInAppMessageDisplayChoice Comportement
Objective-C : ABKDisplayInAppMessageNow
Swift : displayInAppMessageNow
Le message sera affiché immédiatement.
Objective-C : ABKDisplayInAppMessageLater
Swift : displayInAppMessageLater
Le message ne sera pas affiché et sera replacé en haut de la pile.
Objective-C : ABKDiscardInAppMessage
Swift : discardInAppMessage
Le message sera supprimé et ne sera pas affiché.

Vous pouvez utiliser la méthode de délégation beforeInAppMessageDisplayed: pour ajouter une logique d’affichage des messages in-app, personnaliser les messages in-app avant que Braze ne les affiche, ou vous désengager complètement de la logique d’affichage et de l’interface utilisateur de Braze pour les messages in-app.

Consultez notre exemple d’application pour un exemple de mise en œuvre.

Remplacer les messages in-app avant l’affichage

Si vous souhaitez modifier le comportement d’affichage des messages in-app, vous devez ajouter toute logique d’affichage nécessaire à votre méthode de délégation beforeInAppMessageDisplayed:. Par exemple, vous pouvez souhaiter afficher le message in-app depuis le haut de l’écran si le clavier est actuellement affiché, ou récupérer le modèle de données du message in-app et afficher le message in-app vous-même.

Si la campagne de messages in-app ne s’affiche pas lorsque la session a été lancée, assurez-vous que la logique d’affichage nécessaire a été ajoutée à votre méthode de délégation beforeInAppMessageDisplayed:. Cela permet à la campagne de messages in-app de s’afficher depuis le haut de l’écran même si le clavier est affiché.

Désactivation du mode sombre

Pour empêcher les messages in-app d’adopter le style du mode sombre lorsque l’appareil de l’utilisateur a activé le mode sombre, utilisez la propriété ABKInAppMessage.enableDarkTheme. Depuis la méthode ABKInAppMessageControllerDelegate.beforeInAppMessageDisplayed: ou la méthode ABKInAppMessageUIDelegate.beforeInAppMessageDisplayed:, définissez la propriété enableDarkTheme du paramètre inAppMessage de la méthode sur NO.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// ABKInAppMessageControllerDelegate
- (ABKInAppMessageDisplayChoice)beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage {
  ...
  inAppMessage.enableDarkTheme = NO;
  ...
  return ABKDisplayInAppMessageNow;
}

// ABKInAppMessageUIDelegate
- (ABKInAppMessageDisplayChoice)beforeInAppMesssageDisplayed:(ABKInAppMessage *)inAppMessage
                                            withKeyboardIsUp:(BOOL)keyboardIsUp {
  ...
  inAppMessage.enableDarkTheme = NO;
  ...
  return ABKDisplayInAppMessageNow;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ABKInAppMessageControllerDelegate
func before(inAppMessageDisplayed inAppMessage: ABKInAppMessage) -> ABKInAppMessageDisplayChoice {
  ...
  inAppMessage.enableDarkTheme = false
  ...
  return ABKInAppMessageDisplayChoice.displayInAppMessageNow
}

// ABKInAppMessageUIDelegate
func before(inAppMessageDisplayed inAppMessage: ABKInAppMessage, withKeyboardIsUp keyboardIsUp: Bool) -> ABKInAppMessageDisplayChoice {
  ...
  inAppMessage.enableDarkTheme = false
  ...
  return ABKInAppMessageDisplayChoice.displayInAppMessageNow
}

Masquer la barre d’état pendant l’affichage

Pour les messages in-app Full et HTML, le SDK tentera par défaut de placer le message par-dessus la barre d’état. Cependant, dans certains cas, la barre d’état peut toujours apparaître au-dessus du message in-app. À partir de la version 3.21.1 du SDK iOS, vous pouvez forcer le masquage de la barre d’état lors de l’affichage des messages in-app Full et HTML en définissant ABKInAppMessageHideStatusBarKey sur YES dans les appboyOptions transmises à startWithApiKey:.

Enregistrement des impressions et des clics

L’enregistrement des impressions et des clics de messages in-app n’est pas automatique lorsque vous implémentez une gestion entièrement personnalisée (c.-à-d. que vous contournez l’affichage des messages in-app de Braze en renvoyant ABKDiscardInAppMessage dans votre beforeInAppMessageDisplayed:). Si vous choisissez de déployer votre propre interface utilisateur à l’aide de nos modèles de messages in-app, vous devez enregistrer les données analytiques à l’aide des méthodes suivantes sur la classe ABKInAppMessage :

1
2
3
4
// Registers that a user has viewed an in-app message with the Braze server.
- (void) logInAppMessageImpression;
// Registers that a user has clicked on an in-app message with the Braze server.
- (void) logInAppMessageClicked;
1
2
3
4
// Registers that a user has viewed an in-app message with the Braze server.
func logInAppMessageImpression()
// Registers that a user has clicked on an in-app message with the Braze server.
func logInAppMessageClicked()

De plus, vous devriez enregistrer les clics sur les boutons des sous-classes de ABKInAppMessageImmersive (c.-à-d., messages in-app Modal et Full) :

1
2
// Logs button click analytics
- (void)logInAppMessageClickedWithButtonID:(NSInteger)buttonID;
1
2
// Logs button click analytics
func logInAppMessageClickedWithButtonID(buttonId: NSInteger)

Déclarations de méthode

Pour plus d’informations, consultez les fichiers d’en-tête suivants :

Exemples d’implémentation

Voir l’exemple d’application de messages in-app AppDelegate.m.

New Stuff!