Firebase In-App Messaging を使用すると、コーディング作業をほとんど行うことなく、ユーザーとの多種多様なインタラクションを作成、構成、ターゲティングできます。Google アナリティクスの機能をそのまま活用して、ユーザーの実際の特性、アクティビティ、選択にメッセージング イベントを関連付けることができます。Firebase In-App Messaging SDK を追加で統合することで、アプリ内メッセージの動作をさらに調整できます。たとえば、ユーザーがメッセージを操作した際に応答する、アナリティクス フレームワークの外部にあるメッセージ イベントをトリガーする、メッセージングの操作に関連する個人データの共有の制御をユーザーに許可するなどが可能になります。
ユーザーがアプリ内メッセージを操作した場合に応答する
アクションを使用すると、アプリ内メッセージを使用してユーザーをウェブサイトまたはアプリの特定の画面に誘導できます。
コードを使用して、基本的な操作(クリックと閉じる)、インプレッション数(メッセージの検証済み視聴回数)、SDK によって記録および確認された表示エラーに応答できます。たとえば、メッセージがカードモーダルとして作成されている場合は、ユーザーがカードで 2 つの URL のどちらをクリックしたかを追跡してフォローアップできます。
カード操作のイベント リスナーを実装する
デベロッパーのワークフローでは、ユーザーのアクティビティ(インプレッションの表示、メッセージのクリック)に対応するインターフェースに準拠するイベント リスナークラスを実装するか、エラーを表示してから FirebaseInAppMessaging
インスタンスにイベント リスナーを登録します。
たとえば、ユーザーがカード形式のメッセージでクリックしたリンクを追跡できるようにするには、FirebaseInAppMessagingClickListener
インターフェースに従って messageClicked
メソッドを実装するクラスを定義することで、アプリ内メッセージングの Action
オブジェクトにアクセスできるようにします。これにより、ユーザーがクリックしたリンク内の URL が明らかになります。
まず、クリック リスナーを実装します。
Kotlin+KTX
class MyClickListener : FirebaseInAppMessagingClickListener { override fun messageClicked(inAppMessage: InAppMessage, action: Action) { // Determine which URL the user clicked val url = action.actionUrl // Get general information about the campaign val metadata = inAppMessage.campaignMetadata // ... } }
Java
public class MyClickListener implements FirebaseInAppMessagingClickListener { @Override public void messageClicked(InAppMessage inAppMessage, Action action) { // Determine which URL the user clicked String url = action.getActionUrl(); // Get general information about the campaign CampaignMetadata metadata = inAppMessage.getCampaignMetadata(); // ... } }
次に、そのリスナーを登録します。
Kotlin+KTX
val listener = MyClickListener() Firebase.inAppMessaging.addClickListener(listener)
Java
MyClickListener listener = new MyClickListener(); FirebaseInAppMessaging.getInstance().addClickListener(listener);
実装可能なコールバック メソッドとそのパラメータについては、適切な Android Listener インターフェース リファレンス(FirebaseInAppMessagingImpressionListener、FirebaseInAppMessagingClickListener、FirebaseInAppMessagingDisplayErrorListener)をご覧ください。
プログラムでアプリ内メッセージをトリガーする
Firebase In-App Messaging のデフォルトでは、追加の統合を行わなくても、Firebase 向け Google アナリティクスのイベントを使用してアプリ内メッセージをトリガーできます。また、Firebase In-App Messaging SDK のプログラム トリガーを使用して、プログラムでイベントを手動でトリガーすることもできます。
In-App Messaging のキャンペーン作成ツールでキャンペーンを新規作成するか、既存のキャンペーンを選択します。作成ツールのワークフローのスケジュール設定のステップで、新規または既存のメッセージング イベントのイベント ID をメモします。メモしたら、ID によりイベントをトリガーするようにアプリを準備します。
Kotlin+KTX
// somewhere in the app's code Firebase.inAppMessaging.triggerEvent("exampleTrigger")
Java
// somewhere in the app's code FirebaseInAppMessaging.getInstance().triggerEvent("exampleTrigger");
キャンペーンのカスタム メタデータを使用する
キャンペーンでは、一連の Key-Value ペアでカスタムデータを指定できます。たとえば、ユーザーがメッセージを操作したときに、このデータを使用してプロモーション コードを表示できます。
Kotlin+KTX
class MyClickListenerBundles : FirebaseInAppMessagingClickListener { override fun messageClicked(inAppMessage: InAppMessage, action: Action) { // Determine which URL the user clicked val url = action.actionUrl // Get data bundle for the inapp message val dataBundle: Map<String, String>? = inAppMessage.data // ... } }
Java
public class MyClickListenerBundles implements FirebaseInAppMessagingClickListener { @Override public void messageClicked(InAppMessage inAppMessage, Action action) { // Determine which URL the user clicked String url = action.getActionUrl(); // Get data bundle for the inapp message Map<String, String> dataBundle = inAppMessage.getData(); // ... } }
アプリ内メッセージを一時的に無効にする
Firebase In-App Messaging のデフォルトでは、アプリの現在の状態に関係なく、トリガー条件が満たされるたびにメッセージがレンダリングされます。一連の支払い処理画面が中断されないようにするなど、なんらかの理由でメッセージの表示を抑制したい場合は、SDK の setMessagesSuppressed
メソッドを使用します。
Kotlin+KTX
Firebase.inAppMessaging.setMessagesSuppressed(true)
Java
FirebaseInAppMessaging.getInstance().setMessagesSuppressed(true);
メソッドに true
を渡すと、Firebase In-App Messaging でメッセージが表示されなくなり、false
に設定するとメッセージ表示が再度有効になります。SDK によって、アプリの再起動時にメッセージの抑制が無効になります。抑制されたメッセージは SDK によって無視されます。Firebase In-App Messaging でそのメッセージを表示できるようにするには、抑制が無効である間に、そのトリガー条件が再び満たされる必要があります。
メッセージ配信のオプトアウトを行えるようにする
Firebase In-App Messaging のデフォルトでは、メッセージング キャンペーンの対象であるすべてのアプリユーザーに、メッセージが自動的に配信されます。これらのメッセージを配信するために、Firebase In-App Messaging SDK では Firebase インストール ID を使用して各ユーザーのアプリが識別されます。つまり、アプリ内メッセージングでは、インストール ID にリンクされたクライアント データを Firebase サーバーに送信する必要があります。どのデータを送信するかをユーザーが細かく制御できるようにするには、自動データ収集を無効にして、データ共有を承認できるようにします。
そのためには、Firebase In-App Messaging の自動初期化を無効にし、オプトイン ユーザー用にサービスを手動で初期化する必要があります。
<meta-data android:name="firebase_inapp_messaging_auto_data_collection_enabled" android:value="false" />AndroidManifest.xml
ファイル内でmeta-data
タグを使用して自動初期化を無効にします。選択したユーザーの Firebase In-App Messaging を手動で初期化します。
Kotlin+KTX
// Only needed if firebase_inapp_messaging_auto_data_collection_enabled is set to // false in AndroidManifest.xml Firebase.inAppMessaging.isAutomaticDataCollectionEnabled = true
Java
// Only needed if firebase_inapp_messaging_auto_data_collection_enabled is set to // false in AndroidManifest.xml FirebaseInAppMessaging.getInstance().setAutomaticDataCollectionEnabled(true);
データ収集設定を手動で設定すると、値はアプリケーションの再起動後も保持され、
AndroidManifest.xml
内の値は上書きされます。初期化を再び無効にしたい場合、たとえば、後でユーザーがデータ収集をオプトアウトした場合は、setAutomaticDataCollectionEnabled
メソッドにfalse
を渡します。