Firebase In-App Messaging を使用すると、コーディング作業をほとんど行うことなく、ユーザーとの多種多様なインタラクションを作成、構成、ターゲティングできます。Google Analytics の機能をそのまま活用して、ユーザーの実際の特性、アクティビティ、選択にメッセージング イベントを関連付けることができます。Firebase In-App Messaging SDK をさらに統合することで、アプリ内メッセージの動作をさらにカスタマイズできます。ユーザーがメッセージを操作したときに応答したり、Analytics フレームワークの外部でメッセージ イベントをトリガーしたり、ユーザーがメッセージ操作に関連する個人データの共有を制御できるようにしたりできます。
ユーザーがアプリ内メッセージを操作した場合に応答する
アクションを使用すると、アプリ内メッセージを使用してユーザーをウェブサイトまたはアプリの特定の画面に誘導できます。
コードを使用して、基本的な操作(クリックと閉じる)、インプレッション数(メッセージの検証済み視聴回数)、SDK によって記録および確認された表示エラーに応答できます。たとえば、���ッセージがカードモーダルとして作成されている場合は、ユーザーがカードで 2 つの URL のどちらをクリックしたかを追跡してフォローアップできます。
カード操作を処理するために DisplayDelegate を実装する
アプリ内メッセージへの操作が行われるたびに呼び出される、アプリ内メッセージングの表示デリゲートを登録できます。これを行うには、InAppMessagingDisplayDelegate
プロトコルに従ってクラスを実装し、それを InAppMessaging
インスタンスで delegate プロパティとして設定します。
たとえば、ユーザーがカード形式のメッセージでクリックしたリンクを追跡できるようにするには、DisplayDelegate
プロトコルに沿って messageClicked
メソッドを実装するクラスを定義することで、ユーザーがクリックしたリンクにアクセスできるようにします。
Swift
InAppMessagingAction など、実装可能なコールバック メソッドとそのパラメータのセットについては、Swift の表示デリゲートのリファレンスをご覧ください。
// In CardActionFiamDelegate.swift
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
// ...
}
func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
dismissType: FIRInAppMessagingDismissType) {
// ...
}
func impressionDetected(for inAppMessage: InAppMessagingDisplayMessage) {
// ...
}
func displayError(for inAppMessage: InAppMessagingDisplayMessage, error: Error) {
// ...
}
}
// In AppDelegate.swift
// Register the delegate with the InAppMessaging instance
let myFiamDelegate = CardActionFiamDelegate()
InAppMessaging.inAppMessaging().delegate = myFiamDelegate;
Objective-C
FIRInAppMessagingDisplayMessage など、実装可能なコールバック メソッドとそのパラメータのセットについては、Objective-C の表示デリゲートのリファレンスをご覧ください。
// In CardActionFiamDelegate.h
@interface CardActionFiamDelegate : NSObject <FIRInAppMessagingDisplayDelegate>
@end
// In CardActionFiamDelegate.m
@implementation CardActionFiamDelegate
- (void)displayErrorForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
error:(nonnull NSError *)error {
// ...
}
- (void)impressionDetectedForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
// ...
}
- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
// ...
}
- (void)messageDismissed:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
dismissType:(FIRInAppMessagingDismissType)dismissType {
// ...
}
@end
// In AppDelegate.m
CardActionFiamDelegate *myFiamDelegate = [CardActionFiamDelegate new];
[FIRInAppMessaging inAppMessaging].delegate = myFiamDelegate;
プログラムでアプリ内メッセージをトリガーする
Firebase In-App Messaging のデフォルトでは、追加の統合を行わなくても、Firebase 向け Google アナリティクスのイベントを使用してアプリ内メッセージをトリガーできます。また、Firebase In-App Messaging SDK のプログラム トリガーを使用して、プログラムでイベントを手動でトリガーすることもできます。
In-App Messaging のキャンペーン作成ツールでキャンペーンを新規作成するか、既存のキャンペーンを選択します。作成ツールのワークフローのスケジュール設定のステップで、新規または既存のメッセージング イベントのイベント ID をメモします。メモしたら、ID によりイベントをトリガーするようにアプリを準備します。
Swift
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
Objective-C
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];
キャンペーンのカスタム メタデータを使用する
キャンペーンでは、一連の Key-Value ペアでカスタムデータを指定できます。たとえば、ユーザーがメッセージを操作したときに、このデータを使用してプロモーション コードを表示できます。
Swift
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
// Get data bundle from the inapp message
let appData = inAppMessage.appData
// ...
}
}
Objective-C
@implementation CardActionFiamDelegate
- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
appData = inAppMessage.appData
// ...
}
@end
アプリ内メッセージを一時的に無効にする
デフォルトでは、Firebase In-App Messaging は、アプリの現在の状態に関係なく、トリガー条件が満たされるたびにメッセージをレンダリングします。一連の支払い処理画面が中断されないようにするなど、なんらかの理由でメッセージの表示を抑制したい場合は、このページの Objective-C の例示のように SDK の messageDisplaySuppressed
プロパティを使用します。
[FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;
このプロパティを YES
に設定すると、Firebase In-App Messaging でメッセージが表示されなくなり、NO
に設定するとメッセージ表示が再度有効になります。SDK によって、アプリの再起動時にプロパティが NO
にリセットされます。抑制されたメッセージは SDK によって無視されます。Firebase In-App Messaging でそのメッセージを表示できるようにするには、抑制が無効である間に、そのトリガー条件が再び満たされる必要があります。
オプトアウト メッセージ配信を有効にする
デフォルトでは、Firebase In-App Messaging はメッセージング キャンペーンの対象であるすべてのアプリユーザーにメッセージを自動的に配信します。これらのメッセージを配信するために、Firebase In-App Messaging SDK では Firebase インストール ID を使用して各ユーザーのアプリが識別されます。つまり、In-App Messaging は、インストール ID にリンクされたクライアント データを Firebase サーバーに送信する必要があります。どのデータを送信するかをユーザーが������制御できるように��るには、自動データ������を無効にして、データ共有を承認できるようにします。
そのためには、Firebase In-App Messaging の自動初期化を無効にし、オプトイン ユーザー用にサービスを手動で初期化する必要があります。
Info.plist
ファイル内の新しいキーで自動初期化を無効にします。- キー:
FirebaseInAppMessagingAutomaticDataCollectionEnabled
- 値:
NO
- キー:
選択したユーザーの Firebase In-App Messaging を手動で初期化します。
// Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO // in Info.plist [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
automaticDataCollectionEnabled
をYES
に設定すると、値はアプリケーションの再起動後も保持され、Info.plist
内の値は上書きされます。初期化を再び無効にしたい場合(後でユーザーがデータ収集をオプトアウトした場合など)は、このプロパティをNO
に設定します。