firebase-in-app-messaging について
Flutter 向け Firebase In-App Messaging の実装ガイドです。プログラムからのトリガー、メッセージ抑制、データ収集への同意、端末テスト、キャンペーン設定を扱います。
主な機能
- 01プログラムによるメッセージのトリガーと抑制
- 02オプトイン形式のデータ収集制御
- 03端末ごとのキャンペーンテスト
- 04キャンペーンのターゲティングとスケジュール
- 05メッセージ形式と A/B テスト
活用シーン
- 01アプリのイベント後にメッセージを表示
- 02決済フロー中のメッセージ抑制
- 03データ収集前にユーザーの同意を取得
- 04指定端末でキャンペーン表示をテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ evanca/ flutter-ai-rules --skill firebase-in-app-messagingインストール後、Claude Code で/firebase-in-app-messagingを入力して読み込まれたか確認します。
詳細
Firebase In-App Messaging スキル
このスキルでは、セットアップ、プログラムによるトリガー、プライバシー制御、テストのワークフロー、キャンペーン管理を含め、Flutter アプリケーションで Firebase In-App Messaging を正しく実装する方法を説明します。
使用するタイミング
次の場合にこのスキルを使用します。
- Flutter プロジェクトで Firebase In-App Messaging をセットアップする場合。
- アプリ内メッセージをプログラムでトリガーまたは抑制する場合。
- GDPR またはユーザーのプライバシー遵守のため、データ収集のオプトインを実装する場合。
- 配信前に特定のデバイスでキャンペーンをテストする場合。
- メッセージの種類、ターゲティングルール、A/B テストを設定する場合。
1. セットアップと設定
flutter pub add firebase_in_app_messaging
import 'package:firebase_in_app_messaging/firebase_in_app_messaging.dart';
- In-App Messaging の機能を使用する前に、Firebase を初期化してください。
- In-App Messaging は、電力を節約するため、デフォルトで1 日に 1 回サーバーからメッセージを取得します。
セットアップチェックリスト
- In-App Messaging にアクセスする前に、
Firebase.initializeApp()の処理が完了することを確認します。 - Firebase コンソールでテストキャンペーンを作成し、連携を確認します。
- デバイス固有のテスト用に Installation ID を確認します(「テスト」セクションを参照)。
2. メッセージのトリガーと表示
Google Analytics イベントを使用すると、追加のコードなしでアプリ内メッセージをトリガーできます。プログラムでトリガーする場合は、次のようにします。
// Trigger a message tied to a custom event
await FirebaseInAppMessaging.instance.triggerEvent("purchase_complete");
重要なフロー中のメッセージを抑制する
class PaymentScreen extends StatefulWidget {
@override
State<PaymentScreen> createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
@override
void initState() {
super.initState();
// Suppress messages during payment
FirebaseInAppMessaging.instance.setMessagesSuppressed(true);
}
@override
void dispose() {
// Re-enable messages when leaving payment flow
FirebaseInAppMessaging.instance.setMessagesSuppressed(false);
super.dispose();
}
}
- アプリを再起動すると、抑制は自動的に解除されます。
- 抑制中のメッセージは無視されます。抑制を解除した後に、トリガー条件を再度満たす必要があります。
- 抑制する一般的なフロー:決済処理、オンボーディングウィザード、フォーム送信画面。
3. ユーザーのプライバシーとデータ収集のオプトイン
デフォルトでは、In-App Messaging はターゲットとなるすべてのユーザーにメッセージを自動配信します。
自動収集を無効にする — iOS(Info.plist):
<key>FirebaseInAppMessagingAutomaticDataCollectionEnabled</key>
<false/>
自動収集を無効にする — Android(AndroidManifest.xml):
<meta-data
android:name="firebase_inapp_messaging_auto_data_collection_enabled"
android:value="false" />
実行時にオプトインしたユーザーに対して有効にする:
// Call after user consents to data collection
Future<void> enableMessaging() async {
await FirebaseInAppMessaging.instance.setAutomaticDataCollectionEnabled(true);
}
// Call if user revokes consent
Future<void> disableMessaging() async {
await FirebaseInAppMessaging.instance.setAutomaticDataCollectionEnabled(false);
}
- 手動で設定した設定値はアプリの再起動後も保持され、設定ファイルの値より優先されます。
- GDPR に準拠するには、自動収集をデフォルトで無効にし、ユーザーの明示的な同意を得た後にのみ有効にしてください。
4. テストとデバッグ
Installation ID を確認する
- Android: logcat を
FIAM.Headlessでフィルタリングし、Starting InAppMessaging runtime with Installation ID YOUR_INSTALLATION_IDを探します。 - iOS: Xcode のスキーム設定で、実行時引数として
-FIRDebugEnabledを追加します。コンソールで[Firebase/InAppMessaging][I-IAM180017]を探します。
キャンペーンをテストする
- Firebase コンソールでキャンペーンを開き、Test on your Device を選択します。
- 上の手順で確認した Installation ID を入力します。
- テストメッセージは、次回のアプリ起動時またはフォアグラウンドイベント時に表示されます。
- 適切なレンダリングと動作を確認するため、必ず実機でテストしてください。
- 各メッセージの種類(モーダル、バナー、カード、画像のみ)をテストし、さまざまな画面サイズでレイアウトを確認します。
5. キャンペーン管理
- Firebase コンソールの Messaging > In-App Messaging からキャンペーンを作成します。
- メッセージの種類:モーダル、バナー、カード、画像のみ。
キャンペーン設定のワークフロー
- デザイン — メッセージの種類を選択し、外観(タイトル、本文、画像、ボタン)をカスタマイズします。
- ターゲット設定 — アプリのバージョン、言語、ユーザーセグメント、または Analytics ベースの条件でオーディエンスを定義します。
- スケジュール設定 — 開始日と終了日、配信頻度の上限(1 回、セッションごとに 1 回など)を設定します。
- トリガー — メッセージを表示する Analytics イベント(例:
app_open、purchase_complete)を選択します。 - テスト — 公開前にデバイスでテストします。
- 公開 — キャンペーンを開始し、パフォーマンスをモニタリングします。
- カスタムメタデータ(キーと値のペア)を使用すると、ユーザーがメッセージを操作したときに参照できる追加情報を渡せます。
- A/B テストを使用して、メッセージの内容、タイミング、コンバージョン率を最適化します。
- Firebase コンソールのアナリティクスで、キャンペーンのパフォーマンス(インプレッション、クリック、コンバージョン)をモニタリングします。
参考資料
コメント
Markdown 対応