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