
AppboyKit(Objective-C SDKとも呼ばれます)はもはやサポートされておらず、Swift SDK. 新しい機能、バグ修正、セキュリティー更新s、またはテクニカルサポートを受けません。ただし、メッセージングと分析は通常どおり機能し続けます。詳しくは、新しいBrazeの概要SDK]を参照してください。
アプリ内メッセージ表示のカスタム処理
ABKInAppMessageControllerDelegateを設定すると、アプリ内メッセージが表示される前に次のデリゲートメソッドが呼び出されます。
1
- (ABKInAppMessageDisplayChoice) beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage;
func beforeInAppMessageDisplayed(inAppMessage: ABKInAppMessage!) -> ABKInAppMessageDisplayChoice
ABKInAppMessageUIDelegateのみを実装した場合は、代わりに次のUIデリゲートメソッドが呼び出されます。
- (ABKInAppMessageDisplayChoice) beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage withKeyboardIsUp:(BOOL)keyboardIsUp;
func beforeInAppMessageDisplayed(inAppMessage: ABKInAppMessage!, withKeyboardIsUp keyboardIsUp: Bool) -> ABKInAppMessageDisplayChoice
このデリゲートメソッドを実装し、ABKInAppMessageDisplayChoiceに対して次のいずれかの値を返すことで、アプリ内メッセージ処理をカスタマイズできます。
ABKInAppMessageDisplayChoice |
動作 |
|---|---|
Objective-C: ABKDisplayInAppMessageNowSwift: displayInAppMessageNow |
メッセージはすぐに表示されます。 |
Objective-C: ABKDisplayInAppMessageLaterSwift: displayInAppMessageLater |
メッセージは表示されず、スタックの一番上に戻されます。 |
Objective-C: ABKDiscardInAppMessageSwift: discardInAppMessage |
メッセージは破棄され、表示されません。 |
beforeInAppMessageDisplayed:デリゲートメソッドを使用して、アプリ内メッセージの表示ロジックを追加したり、Brazeが表示する前にアプリ内メッセージをカスタマイズしたり、Brazeのアプリ内メッセージ表示ロジックおよびUIを完全にオプトアウトしたりできます。
実装例については、サンプルアプリケーションをご覧ください。
表示前のアプリ内メッセージの上書き
アプリ内メッセージの表示動作を変更したい場合は、必要な表示ロジックをbeforeInAppMessageDisplayed:デリゲートメソッドに追加する必要があります。たとえば、キーボードが現在表示されている場合は画面の上部からアプリ内メッセージを表示したり、アプリ内メッセージデータモデルを取得してアプリ内メッセージを自分で表示したりできます。
セッションの開始時にアプリ内メッセージキャンペーンが表示されない場合は、必要な表示ロジックがbeforeInAppMessageDisplayed:デリゲートメソッドに追加されていることを確認してください。これにより、キーボードが表示されている場合でも、アプリ内メッセージキャンペーンを画面の上部から表示できます。
ダークモードを無効にする
ユーザーデバイスでダークモードが有効になっているときにアプリ内メッセージがダークモードスタイルを採用しないようにするには、ABKInAppMessage.enableDarkThemeプロパティを使用します。ABKInAppMessageControllerDelegate.beforeInAppMessageDisplayed:またはABKInAppMessageUIDelegate.beforeInAppMessageDisplayed:メソッドのいずれかから、メソッドのinAppMessageパラメーターのenableDarkThemeプロパティをNOに設定します。
// ABKInAppMessageControllerDelegate
- (ABKInAppMessageDisplayChoice)beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage {
...
inAppMessage.enableDarkTheme = NO;
...
return ABKDisplayInAppMessageNow;
}
// ABKInAppMessageUIDelegate
- (ABKInAppMessageDisplayChoice)beforeInAppMesssageDisplayed:(ABKInAppMessage *)inAppMessage
withKeyboardIsUp:(BOOL)keyboardIsUp {
...
inAppMessage.enableDarkTheme = NO;
...
return ABKDisplayInAppMessageNow;
}
// 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クラスで次のメソッドを使用して分析をログに記録する必要があります。
// 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;
// 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のアプリ内メッセージ)のボタンクリック数を記録する必要があります。
// Logs button click analytics
- (void)logInAppMessageClickedWithButtonID:(NSInteger)buttonID;
// Logs button click analytics
func logInAppMessageClickedWithButtonID(buttonId: NSInteger)
メソッド宣言
詳細については、次のヘッダーファイルを参照してください。
実装サンプル
AppDelegate.mアプリ内メッセージサンプルアプリを参照してください。