Skip to content

アプリ内メッセージ統合

このリファレンス記事では、Android または FireOS アプリケーションにアプリ内メッセージングを統合する方法について説明します。

アプリ内メッセージを使用すると、プッシュ通知でユーザーの日常を邪魔することなく、コンテンツをユーザーに届けることができます。カスタマイズされ調整されたアプリ内メッセージは、ユーザーエクスペリエンスが向上し、オーディエンスがアプリから最大限の価値を得るのに役立ちます。アプリ内メッセージでは、さまざまなレイアウトとカスタマイズツールを選択できるため、これまで以上にユーザーの関心を引き付けることができます。

アプリ内メッセージの例については、ケーススタディをご覧ください。

アプリ内メッセージのタイプ

Braze には、デフォルトのアプリ内メッセージタイプがいくつか用意されており、それぞれメッセージ、画像、Font Awesome アイコン、クリックアクション、分析、編集可能なスタイル、配色でカスタマイズできます。現在利用可能なタイプは以下のとおりです。

独自のカスタムアプリ内メッセージビューを定義することもできます。

すべてのアプリ内メッセージは IInAppMessage インターフェイスを実装しており、これによってすべてのアプリ内メッセージの基本的な動作と特性が定義されます。InAppMessageBase は、IInAppMessage を実装し、基本的なアプリ内メッセージ実装を提供する抽象クラスです。アプリ内メッセージクラスはすべて InAppMessageBase のサブクラスです。

また、IInAppMessageImmersive と呼ばれる IInAppMessage のサブインターフェイスがあり、これによって、クリックアクションと分析に対応したボタンに加え、ヘッダーテキストと閉じるボタンが追加されます。

InAppMessageImmersiveBase は、IInAppMessageImmersive を実装し、基本的な immersive アプリ内メッセージ実装を提供する抽象クラスです。Modal アプリ内メッセージは InAppMessageImmersiveBase のサブクラスです。

HTML アプリ内メッセージは、IInAppMessage のもう 1 つのサブクラスである IInAppMessageHtml を実装する InAppMessageHtml インスタンスです。

メッセージタイプ別に予想される動作

ユーザーがデフォルトのアプリ内メッセージタイプの 1 つを開くと、次のようになります。

Slideup アプリ内メッセージは、画面の上部または下部から「スライドアップ」または「スライドダウン」するため、このような名前が付けられています。画面の一部分だけを覆い、効果的で邪魔にならないメッセージング機能を提供します。

携帯電話の画面の下部からスライドして表示されるアプリ内メッセージに「人間は複雑だ」と表示されています。カスタムエンゲージメントは、そうであってはなりません。バックグラウンドには、同じアプリ内メッセージが Web ページの下端に表示されています。

Full アプリ内メッセージは、ユーザーコミュニケーションの内容とインパクトを最大化するのに有効です。full アプリ内メッセージの上半分には画像が含まれ、下半分にはテキストと最大 2 つのクリックアクションと分析対応ボタンが表示されます。

携帯電話の画面全体に表示されるアプリ内メッセージには、「人間は複雑だ。カスタムエンゲージメントは、そうであってはなりません。バックグラウンドには、同じアプリ内メッセージが Web ページの中央に大きく表示されています。

HTML アプリ内メッセージは、完全にカスタマイズされたユーザーコンテンツを作成するのに便利です。ユーザー定義の HTML アプリ内のメッセージコンテンツは、WebView に表示され、必要に応じて画像やフォントなどの他のリッチコンテンツを含めることができます。これにより、メッセージの外観と機能を完全に制御できます。

Android アプリ内メッセージは、HTML 内から Braze Web SDK のメソッドを呼び出すための JavaScript brazeBridge インターフェイスをサポートしています。詳細については、ベストプラクティスを参照してください。

コンテンツとインタラクティブボタンのカルーセルを持つ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:アプリ内メッセージマネージャー禁止リスト (オプション)

統合では、アプリ内の特定のアクティビティにアプリ内メッセージを表示しないようにする必要が生じる場合があります。アクティビティライフサイクルコールバックの統合により、これを簡単に実現できます。

次のサンプルコードでは、アプリ内メッセージ登録禁止リストに SplashActivitySettingsActivity という 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))
  }
}
「このページはどの程度役に立ちましたか?」
New Stuff!