アプリ内メッセージ統合
このリファレンス記事では、Android または FireOS アプリケーションにアプリ内メッセージングを統合する方法について説明します。
アプリ内メッセージを使用すると、プッシュ通知でユーザーの日常を邪魔することなく、コンテンツをユーザーに届けることができます。カスタマイズされ調整されたアプリ内メッセージは、ユーザーエクスペリエンスが向上し、オーディエンスがアプリから最大限の価値を得るのに役立ちます。アプリ内メッセージでは、さまざまなレイアウトとカスタマイズツールを選択できるため、これまで以上にユーザーの関心を引き付けることができます。
アプリ内メッセージの例については、ケーススタディをご覧ください。
アプリ内メッセージのタイプ
Braze には、デフォルトのアプリ内メッセージタイプがいくつか用意されており、それぞれメッセージ、画像、Font Awesome アイコン、クリックアクション、分析、編集可能なスタイル、配色でカスタマイズできます。現在利用可能なタイプは以下のとおりです。
独自のカスタムアプリ内メッセージビューを定義することもできます。
すべてのアプリ内メッセージは IInAppMessage
インターフェイスを実装しており、これによってすべてのアプリ内メッセージの基本的な動作と特性が定義されます。InAppMessageBase
は、IInAppMessage
を実装し、基本的なアプリ内メッセージ実装を提供する抽象クラスです。アプリ内メッセージクラスはすべて InAppMessageBase
のサブクラスです。
また、IInAppMessageImmersive
と呼ばれる IInAppMessage
のサブインターフェイスがあり、これによって、クリックアクションと分析に対応したボタンに加え、ヘッダーテキストと閉じるボタンが追加されます。
ボタンを含むアプリ内メッセージの場合、ボタンテキストを追加する前にクリックアクションが追加されると、メッセージ clickAction
も最終ペイロードに含まれます。
InAppMessageImmersiveBase
は、IInAppMessageImmersive
を実装し、基本的な immersive
アプリ内メッセージ実装を提供する抽象クラスです。Modal
アプリ内メッセージは InAppMessageImmersiveBase
のサブクラスです。
HTML アプリ内メッセージは、IInAppMessage
のもう 1 つのサブクラスである IInAppMessageHtml
を実装する InAppMessageHtml
インスタンスです。
メッセージタイプ別に予想される動作
ユーザーがデフォルトのアプリ内メッセージタイプの 1 つを開くと、次のようになります。
Modal
アプリ内メッセージは画面中央に表示され、半透明のパネルに囲まれます。より重要なメッセージングの場合に有用で、2 つのクリックアクションと分析対応ボタンを装備できます。
Full
アプリ内メッセージは、ユーザーコミュニケーションの内容とインパクトを最大化するのに有効です。full
アプリ内メッセージの上半分には画像が含まれ、下半分にはテキストと最大 2 つのクリックアクションと分析対応ボタンが表示されます。
HTML
アプリ内メッセージは、完全にカスタマイズされたユーザーコンテンツを作成するのに便利です。ユーザー定義の HTML アプリ内のメッセージコンテンツは、WebView
に表示され、必要に応じて画像やフォントなどの他のリッチコンテンツを含めることができます。これにより、メッセージの外観と機能を完全に制御できます。
Android アプリ内メッセージは、HTML 内から Braze Web SDK のメソッドを呼び出すための JavaScript brazeBridge
インターフェイスをサポートしています。詳細については、ベストプラクティスを参照してください。
現在、iOS と Android のプラットフォームでは、iFrame でのカスタム HTML アプリ内メッセージの表示はサポートしていません。
カスタムアプリ内メッセージタイプの定義
slideup
アプリ内メッセージオブジェクトは InAppMessageBase
を拡張します。
full
および modal
タイプのメッセージは InAppMessageImmersiveBase
を拡張します。これらのクラスのいずれかを拡張すると、ローカルで生成されたアプリ内メッセージにカスタム機能を追加できるようになります。
統合
ステップ 1:Braze アプリ内メッセージマネージャー登録
アプリ内メッセージ表示は BrazeInAppMessageManager
クラスによって管理されまs。アプリ内のすべてのアクティビティを BrazeInAppMessageManager
に登録して、アプリ内メッセージビューをビュー階層に追加できるようにする必要があります。これを行うには次の 2 つの方法があります。
アクティビティライフサイクルコールバック統合 (推奨)
アクティビティライフサイクルコールバック統合はアプリ内メッセージ登録を自動的に処理するため、追加の統合は不要です。これは、アプリ内メッセージ登録を処理するための推奨統合です。
アプリ内メッセージの手動登録
アクティビティライフサイクル統合を行った場合は、アプリ内メッセージを手動で統合しないでください。
まず、Application.onCreate()
で ensureSubscribedToInAppMessageEvents()
を呼び出します。
1
BrazeInAppMessageManager.getInstance().ensureSubscribedToInAppMessageEvents(context);
1
BrazeInAppMessageManager.getInstance().ensureSubscribedToInAppMessageEvents(context)
次に、アプリ内メッセージを表示できるアクティビティごとに、registerInAppMessageManager()
をそのアクティビティの onResume()
で呼び出す必要があります。
1
2
3
4
5
6
7
@Override
public void onResume() {
super.onResume();
// Registers the BrazeInAppMessageManager for the current Activity. This Activity will now listen for
// in-app messages from Braze.
BrazeInAppMessageManager.getInstance().registerInAppMessageManager(activity);
}
1
2
3
4
5
6
public override fun onResume() {
super.onResume()
// Registers the BrazeInAppMessageManager for the current Activity. This Activity will now listen for
// in-app messages from Braze.
BrazeInAppMessageManager.getInstance().registerInAppMessageManager(this)
}
最後に、registerInAppMessageManager()
が呼び出されたアクティビティごとに、そのアクティビティの onPause()
で unregisterInAppMessageManager()
を呼び出す必要があります。
1
2
3
4
5
6
@Override
public void onPause() {
super.onPause();
// Unregisters the BrazeInAppMessageManager for the current Activity.
BrazeInAppMessageManager.getInstance().unregisterInAppMessageManager(activity);
}
1
2
3
4
5
public override fun onPause() {
super.onPause()
// Unregisters the BrazeInAppMessageManager.
BrazeInAppMessageManager.getInstance().unregisterInAppMessageManager(this)
}
ステップ 2:アプリ内メッセージマネージャー禁止リスト (オプション)
統合では、アプリ内の特定のアクティビティにアプリ内メッセージを表示しないようにする必要が生じる場合があります。アクティビティライフサイクルコールバックの統合により、これを簡単に実現できます。
次のサンプルコードでは、アプリ内メッセージ登録禁止リストに SplashActivity
と SettingsActivity
という 2 つのアクティビティを追加します。
1
2
3
4
5
6
7
8
9
10
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Set<Class> inAppMessageBlocklist = new HashSet<>();
inAppMessageBlocklist.add(SplashActivity.class);
inAppMessageBlocklist.add(SettingsActivity.class);
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener(inAppMessageBlocklist));
}
}
1
2
3
4
5
6
7
8
9
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
val inAppMessageBlocklist = HashSet<Class<*>>()
inAppMessageBlocklist.add(SplashActivity::class.java)
inAppMessageBlocklist.add(SettingsActivity::class.java)
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener(inAppMessageBlocklist))
}
}