コンソールへ移動

Firebase のアプリ内メッセージングのメッセージをカスタマイズする

メッセージにアクションを追加する

アクションを使用すると、アプリ内メッセージングを使用してユーザーをウェブサイトまたはアプリの特定の画面に誘導できます。

iOS

Firebase アプリ内メッセージングは、ディープリンク ハンドラを使用してアクションを処理します。SDK では多数のハンドラを使用できるため、アプリケーションにすでにハンドラが 1 つある場合は、Firebase アプリ内メッセージングはそれ以上の設定を行わなくてもそのハンドラを使用できます。まだハンドラを持っていない場合は、Firebase Dynamic Links を使用できます。詳しくは、iOS で Dynamic Links を作成するをご覧ください。

Android

Firebase アプリ内メッセージングは、ディープリンク ハンドラを使用してアクションを処理します。SDK では多数のハンドラを使用できるため、アプリケーションにすでにハンドラが 1 つある場合は、Firebase アプリ内メッセージングはそれ以上の設定を行わなくてもそのハンドラを使用できます。まだハンドラを持っていない場合は、Firebase Dynamic Links を使用できます。詳しくは、Android で Firebase Dynamic Links を作成するをご覧ください。

Firebase コンソールを使用してメッセージにアクションを追加する

アプリにディープリンク ハンドラが追加されたら、アクションを使用してキャンペーンを作成する準備が整いました。Firebase コンソールを開いてアプリ内メッセージングを開き、新しいキャンペーンを開始するか既存のキャンペーンを編集します。そのキャンペーンで、ボタンテキストボタン アクションイメージ アクション、またはバナー アクションを実装します。アクションは関連するディープリンクとなります。

アクションの形式は、選択したメッセージのレイアウトによって異なります。モーダルによって、カスタムボタンのテキスト コンテンツ、テキストの色、および背景色を持つ操作ボタンが取得されます。一方、イメージとトップバナーはインタラクティブとなり、タップすると指定されたアクションが実行されます。

オプトイン メッセージ配信を有効にする

デフォルトでは、Firebase アプリ内メッセージングでメッセージがアプリのすべてのユーザーに自動的に配信されます。これらのメッセージを配信するために、Firebase アプリ内メッセージング SDK では Firebase インスタンス ID を使用して各ユーザーのアプリが識別されます。つまり、アプリ内メッセージングでは、インスタンス ID にリンクされたクライアント データを Firebase サーバーに送信する必要があります。どのデータを送信するかをユーザーが細かく制御できるようにするには、オプトイン データ収集を有効にして、データ共有を承認できるようにします。

そのためには、Firebase アプリ内メッセージングの自動初期化を無効にし、オプトイン ユーザー用にサービスを手動で初期化する必要があります。

iOS

  1. Info.plist ファイル内の新しいキーで自動初期化を無効にします。

    • キー: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • 値: NO
  2. 選択したユーザーの Firebase アプリ内メッセージングを手動で初期化します。

    [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
    

automaticDataCollectionEnabledYES に設定すると、値はアプリケーションの再起動後も保持され、Info.plist 内の値は上書きされます。初期化を再び無効にしたい場合、たとえば、後でユーザーがコレクションをオプトアウトした場合は、このプロパティを NO に設定します。

Android

  1. AndroidManifest.xml ファイル内で meta-data タグを使用して自動初期化を無効にします。

    <meta-data
    android:name="firebase_inapp_messaging_auto_data_collection_enabled"
    android:value="false" />
    

  2. 選択したユーザーの Firebase アプリ内メッセージングを手動で初期化します。

    FirebaseInAppMessaging.setAutomaticDataCollectionEnabled(true);
    

データ設定を手動で設定すると、値はアプリケーションの再起動後も保持され、AndroidManifest.xml 内の値は上書きされます。初期化を再び無効にしたい場合、たとえば、後でユーザーがコレクションをオプトアウトした場合は、setAutomaticDataCollectionEnabled メソッドに false を渡します。

メッセージングを一時的に無効にする

iOS

デフォルトでは、Firebase アプリ内メッセージングで、アプリの現在の状態に関係なく、トリガー条件が満たされるたびにメッセージがレンダリングされます。なんらかの理由で FIAM メッセージの表示を抑制したい場合は、SDK の messageDisplaySuppressed プロパティを使用して実行できます。

[FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

このプロパティを YES に設定すると、Firebase アプリ内メッセージングでメッセージが表示されなくなり、NO に設定するとメッセージ表示が再度有効になります。SDK によって、アプリの再起動時にプロパティが NO にリセットされます。抑制されたメッセージは SDK によって無視されます。Firebase アプリ内メッセージングでそのメッセージを表示できるようにするには、抑制が無効になっている間に、そのトリガー条件が再び満たされる必要があります。

Android

デフォルトでは、Firebase アプリ内メッセージングで、アプリの現在の状態に関係なく、トリガー条件が満たされるたびにメッセージがレンダリングされます。なんらかの理由で FIAM メッセージの表示を抑制したい場合は、SDK の setMessagesSuppressed メソッドを使用して実行できます。

FirebaseInAppMessaging.setMessagesSuppressed(true);

メソッドに true を渡すと、Firebase アプリ内メッセージングでメッセージが表示されなくなり、false に設定するとメッセージ表示が再度有効になります。SDK によって、アプリの再起動時にメッセージングの抑制が無効になります。抑制されたメッセージは SDK によって無視されます。Firebase アプリ内メッセージングでそのメッセージを表示できるようにするには、抑制が無効である間に、そのトリガー条件が再び満たされる必要があります。

メッセージの表示を変更する

iOS

Firebase アプリ内メッセージングを使用すると、メッセージのレイアウト、フォント スタイル、ボタンの形などを変更して、アプリでのメッセージの表示方法をカスタマイズできます。メッセージの表示方法を変更するには 2 つの方法があります。1 つは、デフォルトの Firebase アプリ内メッセージングの表示を変更する方法、もう 1 つは独自のメッセージ表示ライブラリをゼロから作成する方法です。

デフォルトの表示を変更する

メッセージをカスタマイズする最も簡単な方法は、Firebase アプリ内メッセージングのデフォルトのメッセージ表示コードを利用する方法です。

firebase-ios-sdk リポジトリのクローンを作成する

まず、firebase-ios-sdk リポジトリの最新リリースのクローンを作成して、InAppMessagingDisplay ディレクトリを開きます。

変更するメッセージの種類を選択する

リポジトリのクローンが作成されたら、Firebase アプリ内メッセージングのメッセージ タイプ(ModalBanner または ImageOnly)を変更します。このタイプは、Firebase アプリ内メッセージングのキャンペーン作成フローで使用されるメッセージ レイアウトに対応しています。

それぞれのタイプがアクセスできるデータセットは、Firebase コンソールのキャンペーン カスタマイズ オプションによって決まります。

タイプ titleText bodyText textColor backgroundColor imageData actionButton
Modal check check check check check check
Banner check check check check check
ImageOnly check

メッセージを表示するレンダリング コードを変更する

メッセージ タイプには制限がありますが、その点を除けば、メッセージを自由に変更できます。たとえば、アプリの一番下にバナーを表示したり、モーダル内でアクション ボタンを移動したりするなど、アプリに合わせてメッセージの外観を変更できます。

メッセージの表示を変更する際には、次の 2 つの点に注意してください。

  • メッセージ タイプのディレクトリ: メッセージ タイプごとに別のディレクトリがあり、そのディレクトにタイプのロジックを決めるファイルが存在します。
  • ストーリーボード: InAppMessagingDisplay ライブラリの .storyboard ファイルを使用して、3 つのメッセージ タイプの UI を定義することもできます。

お好みのメッセージ タイプのディレクトリにあるファイルを変更し、.storyboard で対応するセクションを変更して、メッセージの表示をカスタマイズします。

変更後の InAppMessagingDisplay を使用するようにプロファイルを更新する

Firebase アプリ内メッセージングで、デフォルトではなく変更後の設定でメッセージが表示されるようにするには、カスタマイズした InAppMessagingDisplay を使用するようにプロファイルを更新します。

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YourProject' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for YourProject
pod 'Firebase'

# Remove the default InAppMessagingDisplay pod:
# pod 'Firebase/InAppMessagingDisplay'

# Overwrite it with a version that points to your local copy:
pod `FirebaseInAppMessagingDisplay', :path => '~/Path/To/The/Cloned/Repo/'

end
これで、ポッドを更新してアプリを再度ビルドすると、カスタマイズした新しい設定でメッセージが表示されます。

独自のメッセージ表示ライブラリを作成する

メッセージを表示する UI を作成する場合、InAppMessagingDisplay ライブラリを使用せずに、独自のコードをゼロから作成することもできます。

FIRInAppMessagingRendering インターフェースを実装するクラスをビルドする

Firebase アプリ内メッセージングは、FIRInAppMessaging クラスを使用して Firebase サーバーとアプリ間の通信を処理します。このクラスは、FIRInAppMessagingRendering プロトコルを使用して、受信したメッセージを表示します。独自の表示ライブラリをビルドするには、このプロトコルを実装するクラスを作成します。

プロトコルの定義とそれに準拠する方法が InAppMessaging ライブラリの FIRInAppMessagingRendering.h ファイルに記述されています。Firebase アプリ内メッセージングをすでに設定している場合、このファイルは Xcode プロジェクト ディレクトリにあります。

FirebaseInAppMessaging > Frameworks > FirebaseInAppMessaging.framework > Headers > FIRInAppMessagingRendering.h の順に移動します。

メッセージ表示ライブラリを使用するように messageDisplayComponent を設定する

FIRInAppMessagingmessageDisplayComponent プロパティを使用して、メッセージの表示時に使用するオブジェクトを決定します。このプロパティをカスタム メッセージの表示クラスに設定すると、Firebase アプリ内メッセージングはユーザーのライブラリを使用してメッセージを表示します。

[FIRInAppMessaging inAppMessaging].messageDisplayComponent = yourFIRInAppMessagingRenderingInstance;

Firebase アプリ内メッセージングのヘッドレス バージョンを使用するようにプロファイルを変更する

Firebase アプリ内メッセージングのデフォルトのポッド Firebase/InAppMessagingDisplay は、自身をユーザーアプリの messageDisplayComponent として自動的に割り当てます。それを回避するには、ヘッドレスの Firebase/InAppMessaging ポッドを使用します。

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YourProject' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for YourProject
pod 'Firebase'

# Remove the default InAppMessagingDisplay pod:
# pod 'Firebase/InAppMessagingDisplay'

# Include the headless pod instead:
pod `Firebase/InAppMessaging'

end
これで、ポッドを更新してアプリを再度ビルドすると、カスタマイズした新しい設定でメッセージが表示されます。

Android

Firebase GitHub リポジトリで入手可能な、Android 用 Firebase アプリ内メッセージング表示 SDK を使用して、アプリ内メッセージングによるメッセージの表示方法をカスタマイズできます。

独自表示の作成は、次の 2 段階で行います。

  1. FirebaseInAppMessagingDisplay クラスの独自の実装を作成します。
  2. その実装をヘッドレスの Firebase アプリ内メッセージング SDK に登録します。

まず、FirebaseInAppMessagingDisplayImpl.java で Firebase アプリ内メッセージング チームの実装をご確認ください。