This page references our older Objective-C SDK. Check out our new Swift SDK to integrate our latest Swift-first library.
アプリ内メッセージ表示のカスタム処理
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
内で ABKInAppMessageHideStatusBarKey
を YES
に設定することで、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
のサブクラス (つまり、Modal
と Full
のアプリ内メッセージなど) のボタンクリック数を記録する必要があります。
1
2
// Logs button click analytics
- (void)logInAppMessageClickedWithButtonID:(NSInteger)buttonID;
1
2
// Logs button click analytics
func logInAppMessageClickedWithButtonID(buttonId: NSInteger)
メソッド宣言
追加情報については、以下のヘッダーファイルを参照してください。
実装サンプル
AppDelegate.m
アプリ内メッセージサンプルアプリを参照してください。