Skip to content


Angepasste Handhabung der Anzeige von In-App-Nachrichten

Wenn die ABKInAppMessageControllerDelegate gesetzt ist, wird die folgende Delegatenmethode aufgerufen, bevor In-App-Nachrichten angezeigt werden:

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

Wenn Sie nur ABKInAppMessageUIDelegate implementiert haben, wird stattdessen die folgende UI-Delegate-Methode aufgerufen:

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

Sie können die Behandlung von In-App-Nachrichten anpassen, indem Sie diese Delegatenmethode implementieren und einen der folgenden Werte für ABKInAppMessageDisplayChoice zurückgeben:

ABKInAppMessageDisplayChoice Verhalten
Objective-C: ABKDisplayInAppMessageNow
Swift: displayInAppMessageNow
Die Nachricht wird sofort angezeigt.
Objective-C: ABKDisplayInAppMessageLater
Swift: displayInAppMessageLater
Die Nachricht wird nicht angezeigt und wieder oben auf dem Stack abgelegt.
Objective-C: ABKDiscardInAppMessage
Swift: discardInAppMessage
Die Nachricht wird verworfen und nicht angezeigt.

Mit der Delegatenmethode beforeInAppMessageDisplayed: können Sie eine Logik für die Anzeige von In-App-Nachrichten hinzufügen, In-App-Nachrichten anpassen, bevor Braze sie anzeigt, oder die Anzeigelogik und das UI von Braze für In-App-Nachrichten vollständig umgehen.

In unserer Beispielanwendung finden Sie ein Implementierungsbeispiel.

In-App-Nachrichten vor der Anzeige außer Kraft setzen

Wenn Sie das Anzeigeverhalten von In-App-Nachrichten ändern möchten, sollten Sie die erforderliche Anzeigelogik zu Ihrer beforeInAppMessageDisplayed:-Delegatenmethode hinzufügen. So können Sie z. B. die In-App-Nachricht vom oberen Bildschirmrand aus anzeigen lassen, wenn gerade die Tastatur eingeblendet ist, oder das Datenmodell der In-App-Nachricht übernehmen und die In-App-Nachricht selbst anzeigen.

Wenn die In-App-Nachricht-Campaign nicht angezeigt wird, wenn die Sitzung gestartet wurde, vergewissern Sie sich, dass Sie die notwendige Anzeigelogik zu Ihrer beforeInAppMessageDisplayed:-Delegatenmethode hinzugefügt haben. Damit kann die In-App-Nachricht-Campaign auch dann vom oberen Bildschirmrand aus angezeigt werden, wenn die Tastatur eingeblendet ist.

Dark Mode deaktivieren

Um zu verhindern, dass In-App-Nachrichten das Design des Dark Mode übernehmen, wenn auf dem Gerät der Nutzer:innen der Dark Mode aktiviert ist, verwenden Sie die Eigenschaft ABKInAppMessage.enableDarkTheme. Setzen Sie entweder in der Methode ABKInAppMessageControllerDelegate.beforeInAppMessageDisplayed: oder ABKInAppMessageUIDelegate.beforeInAppMessageDisplayed: die Eigenschaft enableDarkTheme des Parameters inAppMessage auf 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
}

Ausblenden der Statusleiste während der Anzeige

Bei Full- und HTML-In-App-Nachrichten versucht das SDK standardmäßig, die Nachricht über der Statusleiste zu platzieren. In einigen Fällen kann die Statusleiste jedoch weiterhin über der In-App-Nachricht erscheinen. Ab Version 3.21.1 des iOS SDK können Sie erzwingen, dass die Statusleiste beim Anzeigen von Full- und HTML-In-App-Nachrichten ausgeblendet wird, indem Sie ABKInAppMessageHideStatusBarKey auf YES innerhalb der appboyOptions setzen, die an startWithApiKey: übergeben werden.

Impressionen und Klicks protokollieren

Die Protokollierung von Impressionen und Klicks bei In-App-Nachrichten erfolgt nicht automatisch, wenn Sie eine vollständig angepasste Handhabung implementieren (z. B. wenn Sie die Anzeige von In-App-Nachrichten durch Braze umgehen, indem Sie ABKDiscardInAppMessage in Ihrer beforeInAppMessageDisplayed:-Methode zurückgeben). Wenn Sie sich dafür entscheiden, Ihr eigenes UI unter Verwendung unserer In-App-Nachricht-Modelle zu implementieren, müssen Sie die Analytics mit den folgenden Methoden der Klasse ABKInAppMessage protokollieren:

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()

Außerdem sollten Sie die Button-Klicks in den Unterklassen von ABKInAppMessageImmersive protokollieren (d. h. Modal- und Full-In-App-Nachrichten):

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

Methoden-Deklarationen

Weitere Informationen finden Sie in den folgenden Header-Dateien:

Beispiele für die Implementierung

Siehe die Beispiel-App für In-App-Nachrichten AppDelegate.m.

New Stuff!