Skip to content


アプリ内メッセージ表示のカスタム処理

ABKInAppMessageControllerDelegate を設定すると、アプリ内メッセージが表示される前に次のデリゲートメソッドが呼び出されます。

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

ABKInAppMessageUIDelegate を実装しただけの場合は、代わりに次の UI デリゲートメソッドが呼び出されます。

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

このデリゲートメソッドを実装し、ABKInAppMessageDisplayChoice に対して次のいずれかの値を返すことで、アプリ内メッセージ処理をカスタマイズできます。

ABKInAppMessageDisplayChoice Behavior
Objective-C: ABKDisplayInAppMessageNow
Swift: displayInAppMessageNow
メッセージはすぐに表示されます。
Objective-C: ABKDisplayInAppMessageLater
Swift: displayInAppMessageLater
メッセージは表示されず、スタックの最上部に戻されます。
Objective-C: ABKDiscardInAppMessage
Swift: discardInAppMessage
メッセージは破棄され、表示されません。

beforeInAppMessageDisplayed: デリゲートメソッドを使用して、アプリ内メッセージ表示ロジックを追加したり、Braze によって表示される前にアプリ内メッセージをカスタマイズしたり、Braze のアプリ内メッセージ表示ロジックと UI を完全にオプトアウトしたりできます。

実装例については、サンプルアプリケーションをご覧ください。

表示前のアプリ内メッセージの上書き

アプリ内メッセージの表示動作を変更したい場合は、必要な表示ロジックを beforeInAppMessageDisplayed: デリゲートメソッドに追加する必要があります。たとえば、キーボードが現在表示されている場合は画面の上部からアプリ内メッセージを表示したり、アプリ内メッセージデータモデルをを取得してアプリ内メッセージを自分で表示したりできます。

セッションの開始時にアプリ内メッセージキャンペーンが表示されない場合は、必要な表示ロジックが beforeInAppMessageDisplayed: デリゲートメソッドに追加されていることを確認してください。これにより、キーボードが表示されている場合でも、アプリ内メッセージキャンペーンを画面の上部から表示できます。

ダークモードを無効にする

ユーザーデバイスでダークモードが有効になっているときにアプリ内メッセージがダークモードスタイルを採用しないようにするには、ABKInAppMessage.enableDarkTheme プロパティを使用します。ABKInAppMessageControllerDelegate.beforeInAppMessageDisplayed: または ABKInAppMessageUIDelegate.beforeInAppMessageDisplayed:メソッドのいずれかから、メソッドの inAppMessage パラメーターの enableDarkTheme プロパティを NO に設定します。

```objc // ABKInAppMessageControllerDelegate - (ABKInAppMessageDisplayChoice)beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage { … inAppMessage.enableDarkTheme = NO; … return ABKDisplayInAppMessageNow; }

// ABKInAppMessageUIDelegate - (ABKInAppMessageDisplayChoice)beforeInAppMesssageDisplayed:(ABKInAppMessage *)inAppMessage withKeyboardIsUp:(BOOL)keyboardIsUp { … inAppMessage.enableDarkTheme = NO; … return ABKDisplayInAppMessageNow; } ```

```swift // 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 } ```

表示中にステータスバーを非表示にする

Full および HTML のアプリ内メッセージの場合、SDK はデフォルトでメッセージをステータスバーの上に配置しようとします。ただし、場合によっては、ステータスバーがアプリ内メッセージの上に表示されたままになることがあります。iOS SDK のバージョン 3.21.1 以降では、startWithApiKey: に渡された appboyOptions 内で ABKInAppMessageHideStatusBarKeyYES に設定することで、Full および HTML のアプリ内メッセージを表示するときにステータスバーを強制的に非表示にできます。

インプレッション数とクリック数を記録する

完全なカスタム処理を実装している場合 (たとえば、beforeInAppMessageDisplayed:ABKDiscardInAppMessage を返すことで、Braze のアプリ内メッセージ表示を回避します)、アプリ内メッセージのインプレッション数とクリック数のログへの記録は自動的には行われません。アプリ内メッセージモデルを使用して独自のUIを実装する場合は、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()

さらに、ABKInAppMessageImmersive のサブクラス (つまりModalFull のアプリ内メッセージなど) のボタンクリック数を記録する必要があります。

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

メソッド宣言

追加情報については、以下のヘッダーファイルを参照してください。

実装サンプル

AppDelegate.m アプリ内メッセージサンプルアプリを参照してください。

「このページはどの程度役に立ちましたか?」
New Stuff!