Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when running in-app message campaigns, triggering/suppressing messages, configuring opt-in data collection, testing on specific devices, or handling message callbacks.
.claude/skills/evanca-firebase-in-app-messaging/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 5% | 0% |
This skill defines how to correctly implement Firebase In-App Messaging in Flutter applications, covering setup, programmatic triggers, privacy controls, testing workflows, and campaign management.
Use this skill when:
flutter pub add firebase_in_app_messagingdartimport 'package:firebase_in_app_messaging/firebase_in_app_messaging.dart';
Firebase.initializeApp() completes before accessing In-App Messaging.Use Google Analytics events to trigger in-app messages without additional code. For programmatic triggering:
dart// Trigger a message tied to a custom event await FirebaseInAppMessaging.instance.triggerEvent("purchase_complete");
dartclass 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(); } }
By default, In-App Messaging automatically delivers messages to all targeted users.
Disable automatic collection — iOS (Info.plist):
xml<key>FirebaseInAppMessagingAutomaticDataCollectionEnabled</key> <false/>
Disable automatic collection — Android (AndroidManifest.xml):
xml<meta-data android:name="firebase_inapp_messaging_auto_data_collection_enabled" android:value="false" />
Enable for users who opt in at runtime:
dart// 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); }
FIAM.Headless — look for Starting InAppMessaging runtime with Installation ID YOUR_INSTALLATION_ID.-FIRDebugEnabled as a runtime argument in Xcode scheme settings. Look for [Firebase/InAppMessaging][I-IAM180017] in the console.app_open, purchase_complete).Other measured skills in the registry, with their headline benchmark lift.