1. Einführung
Ziele
In diesem Codelab führen Sie einen Test für In-App-Messaging für eine mehrplattformfähige mobile App für Restaurantempfehlungen durch, die auf Flutter und Cloud Firestore basiert.
Danach können Sie In-App-Messaging-Tests entwerfen und implementieren, um das Nutzer-Engagement für jede iOS- oder Android-App effektiv zu steigern und dabei nur wenig Code zu schreiben.
Aufgaben in diesem Lab
- Firebase In-App-Messaging (FIAM) in einer Flutter-App verwenden
- Darstellung von In-App-Mitteilungen anpassen
- In-App-Messaging-Test entwerfen und in Ihrer App implementieren
- Ergebnisse eines In-App-Messaging-Tests auswerten
Was möchten Sie in diesem Codelab lernen?
Firebase In-App-Messaging
Mit Firebase In-App-Messaging (FIAM) können Sie Nutzer, die Ihre App aktiv verwenden, ansprechen. Dazu senden Sie ihnen gezielte und kontextbezogene Nachrichten, die sie dazu bewegen sollen, wichtige In-App-Aktionen durchzuführen, z. B. ein Level in einem Spiel erreichen, einen Artikel kaufen oder Inhalte abonnieren.
Firebase A/B Testing
Firebase A/B Testing (ABT) basiert auf Google Optimize und hilft Ihnen, die Nutzerfreundlichkeit Ihrer App zu optimieren. Sie können damit ganz einfach Produkt- und Marketingtests durchführen, analysieren und skalieren. Sie können Änderungen an der Benutzeroberfläche, den Funktionen oder Interaktionen Ihrer App testen, um herauszufinden, ob sie sich auf wichtige Messwerte wie Umsatz und Kundenbindung auswirken, bevor Sie sie einführen.
Voraussetzungen
Wenn Sie mit Flutter oder Firestore nicht sehr vertraut sind, absolvieren Sie zuerst das Codelab zu Firebase für Flutter:
Sie können dieses Codelab auf einem der folgenden Geräte ausführen:
- Ein physisches Gerät (Android oder iOS), das mit Ihrem Computer verbunden und auf den Entwicklermodus gesetzt ist.
- iOS-Simulator (Xcode-Tools müssen installiert sein.)
- Der Android-Emulator. (Erforderliche Einrichtung in Android Studio)
Außerdem benötigen Sie Folgendes:
- Einen Browser Ihrer Wahl, z. B. Chrome
- Eine IDE oder ein Texteditor Ihrer Wahl, z. B. Android Studio oder VS Code, die mit den Dart- und Flutter-Plug-ins konfiguriert sind. Für die Verwendung mit Flutter wird VS Code empfohlen.
- Die neueste stabile Version von Flutter (oder die Betaversion, wenn Sie gerne an der Spitze stehen).
- Ein Google-Konto, z. B. ein Gmail-Konto, zum Erstellen und Verwalten Ihres Firebase-Projekts.
- Der Beispielcode des Codelabs Im nächsten Schritt erfahren Sie, wie Sie den Code abrufen.
2. Einrichten
Code abrufen
Klonen Sie das GitHub-Repository über die Befehlszeile:
git clone https://github.com/FirebaseExtended/codelab-friendlyeats-flutter.git friendlyeats-flutter
Der Beispielcode wird in das Verzeichnis friendlyeats-flutter
geklont. Führen Sie Befehle ab sofort aus diesem Verzeichnis aus:
cd friendlyeats-flutter
Wechseln Sie dann in das Codelab-Verzeichnis und rufen Sie den fiam-abt
-Zweig ab:
git checkout fiam-abt
Dieser Branch enthält den gesamten für dieses Codelab erforderlichen Code, einschließlich einer fertigen Version im Ordner done
. Die anderen Branches in diesem Repository enthalten Code zum Erstellen der FriendlyEats-App, wie im Firestore Flutter-Codelab für mehrere Plattformen gezeigt. Für dieses Codelab haben wir die Webintegration in diesem Branch entfernt.
Start-App importieren
Öffnen oder importieren Sie das Verzeichnis codelab-fiam-abt
in Ihre bevorzugte IDE. Dieses Verzeichnis enthält den Startcode für das Codelab, das aus einer App für Restaurantempfehlungen besteht. In diesem Codelab instrumentieren Sie einen Test für In-App-Messaging für die Nutzer dieser App.
Firebase-Projekt erstellen
- Klicken Sie in der Firebase Console auf Projekt hinzufügen und geben Sie als Namen für das Firebase-Projekt FriendlyEats ein. Notieren Sie sich die Projekt-ID Ihres Firebase-Projekts oder klicken Sie auf das Symbol Bearbeiten, um die gewünschte Projekt-ID festzulegen.
- Prüfen Sie, ob Google Analytics für das Projekt aktiviert ist, und klicken Sie dann auf Weiter.
- Klicken Sie auf Projekt erstellen.
Glückwunsch! Sie haben gerade Ihr erstes Firebase-Projekt erstellt. Klicken Sie jetzt auf den Projektnamen, um die Console aufzurufen.
Als Nächstes konfigurieren und aktivieren Sie die erforderlichen Dienste mit der Firebase Console.
Anonyme Authentifizierung aktivieren
Die Authentifizierung steht in diesem Codelab zwar nicht im Mittelpunkt, aber es ist wichtig, dass Ihre App eine gewisse Authentifizierungsmethode hat. Sie verwenden die anonyme Anmeldung, d. h., der Nutzer wird ohne Aufforderung angemeldet.
So aktivieren Sie die anonyme Anmeldung:
- Suchen Sie in der Firebase Console in der linken Navigationsleiste nach Authentifizierung.
- Klicken Sie auf Authentifizierung, dann auf Jetzt starten und wählen Sie den Tab Anmeldemethode aus. Sie können auch direkt zur Firebase Console wechseln.
- Aktivieren Sie den Anmeldeanbieter Anonym und klicken Sie auf Speichern.
Wenn Sie die anonyme Anmeldung aktivieren, können Ihre Nutzer sich bei der App automatisch anmelden. Weitere Informationen finden Sie in der Dokumentation zur anonymen Authentifizierung für Android und iOS.
Cloud Firestore einrichten
Die App verwendet Cloud Firestore, um Restaurantinformationen und -bewertungen zu speichern und zu empfangen.
So richten Sie Cloud Firestore in Ihrem Firebase-Projekt ein:
- Maximieren Sie im linken Bereich der Firebase Console Build und wählen Sie dann Firestore-Datenbank aus.
- Klicken Sie auf Datenbank erstellen.
- Lassen Sie die Datenbank-ID auf
(default)
. - Wählen Sie einen Speicherort für die Datenbank aus und klicken Sie auf Weiter.
Für eine echte App sollten Sie einen Speicherort in der Nähe Ihrer Nutzer auswählen. - Klicken Sie auf Im Testmodus starten. Lesen Sie den Haftungsausschluss zu den Sicherheitsregeln.
Später in diesem Codelab fügen Sie Sicherheitsregeln hinzu, um Ihre Daten zu schützen. Veröffentlichen oder verteilen Sie keine App, ohne Sicherheitsregeln für Ihre Datenbank hinzuzufügen. - Klicken Sie auf Erstellen.
3. Firebase-Konfiguration für Mobilgeräte
Die meisten Codeänderungen, die zum Aktivieren der Firebase-Unterstützung erforderlich sind, wurden bereits in das Projekt eingecheckt, an dem Sie gerade arbeiten. Wenn Sie jedoch Unterstützung für mobile Plattformen hinzufügen möchten, müssen Sie Folgendes tun:
- Gewünschte Plattform im Firebase-Projekt registrieren
- Laden Sie die platformspezifische Konfigurationsdatei herunter und fügen Sie sie dem Code hinzu.
Im obersten Verzeichnis Ihrer Flutter-App befinden sich die Unterverzeichnisse ios
und android
. Diese Verzeichnisse enthalten die plattformspezifischen Konfigurationsdateien für iOS bzw. Android.
iOS konfigurieren
Wählen Sie in der Firebase Console oben in der linken Navigationsleiste Projekteinstellungen aus und klicken Sie auf der Seite Allgemein unter Meine Apps auf die Schaltfläche „iOS“.
Das folgende Dialogfeld sollte angezeigt werden:
- Wichtig ist die Angabe der iOS-Bundle-ID. Sie erhalten die Bundle-ID, indem Sie die nächsten drei Schritte ausführen.
- Rufen Sie im Befehlszeilentool das Verzeichnis der obersten Ebene Ihrer Flutter-App auf.
- Führen Sie den Befehl
open ios/Runner.xcworkspace
aus, um Xcode zu öffnen.
- Klicken Sie in Xcode im linken Bereich auf Runner, um den Tab Allgemein im rechten Bereich aufzurufen (siehe Abbildung). Kopieren Sie den Wert für Bundle Identifier.
- Kehren Sie zum Firebase-Dialogfeld zurück, fügen Sie die kopierte Bundle-ID in das Feld iOS-Bundle-ID ein und klicken Sie auf App registrieren.
- Folgen Sie in Firebase der Anleitung, um die Konfigurationsdatei
GoogleService-Info.plist
herunterzuladen. - Kehren Sie zu Xcode zurück. Beachten Sie, dass Runner einen Unterordner hat, der ebenfalls Runner heißt (siehe vorheriges Bild).
- Ziehen Sie die Datei
GoogleService-Info.plist
, die Sie gerade heruntergeladen haben, in den Unterordner Runner. - Klicken Sie im Dialogfeld in Xcode auf Fertigstellen.
- Kehren Sie zur Firebase Console zurück. Klicken Sie im Einrichtungsschritt auf Weiter, überspringen Sie die restlichen Schritte und kehren Sie zur Hauptseite der Firebase Console zurück.
Sie haben die Konfiguration Ihrer Flutter-App für iOS abgeschlossen.
Android konfigurieren
- Wählen Sie in der Firebase Console oben in der linken Navigationsleiste Projekteinstellungen aus und klicken Sie auf der Seite Allgemein unter Meine Apps auf die Schaltfläche Android.
Das folgende Dialogfeld sollte angezeigt werden :
- Der wichtigste Wert ist der Android-Paketname. Sie erhalten den Paketnamen, wenn Sie die folgenden beiden Schritte ausführen:
- Öffnen Sie im Verzeichnis Ihrer Flutter-App die Datei
android/app/src/main/AndroidManifest.xml
. - Suchen Sie im
manifest
-Element den Stringwert des Attributspackage
. Dieser Wert ist der Android-Paketname (z. B.com.yourcompany.yourproject
). Kopieren Sie diesen Wert. - Fügen Sie im Firebase-Dialogfeld den kopierten Paketnamen in das Feld Android-Paketname ein.
- Für dieses Codelab benötigen Sie kein SHA-1-Signaturzertifikat für die Fehlerbehebung. Lassen Sie dieses Feld leer.
- Klicken Sie auf App registrieren.
- Folgen Sie in Firebase der Anleitung, um die Konfigurationsdatei
google-services.json
herunterzuladen. - Rufen Sie das Verzeichnis Ihrer Flutter-App auf und verschieben Sie die Datei
google-services.json
, die Sie gerade heruntergeladen haben, in das Verzeichnisandroid/app
. - Überspringen Sie in der Firebase Console die restlichen Schritte und kehren Sie zur Hauptseite der Firebase Console zurück.
- Die gesamte Gradle-Konfiguration wurde bereits eingecheckt. Wenn Ihre App noch ausgeführt wird, schließen Sie sie und erstellen Sie sie neu, damit gradle Abhängigkeiten installieren kann.
Sie haben die Konfiguration Ihrer Flutter-App für Android abgeschlossen.
4. App lokal ausführen
Sie können jetzt mit der Arbeit an Ihrer App beginnen. Führen Sie die App zuerst lokal aus. Sie können die App jetzt auf jeder von Ihnen konfigurierten Plattform ausführen, für die Sie ein Gerät und einen Emulator haben.
Mit dem folgenden Befehl können Sie herausfinden, welche Geräte verfügbar sind:
flutter devices
Je nachdem, welche Geräte verfügbar sind, sieht die Ausgabe des Befehls in etwa so aus:
Führen Sie die Anwendung jetzt mit dem folgenden Befehl lokal aus:
flutter run
Jetzt sollte Ihre Kopie von FriendlyEats angezeigt werden, die mit Ihrem Firebase-Projekt verknüpft ist.
Die App stellt automatisch eine Verbindung zu Ihrem Firebase-Projekt her und meldet Sie als anonymen Nutzer an.
5. Erste Mitteilung erstellen und testen
Firebase In-App-Messaging in Ihre App einbinden
Die grundlegende Integration von In-App-Messaging ist völlig ohne Code. Sie müssen lediglich die Abhängigkeit hinzufügen und schon kann es losgehen. Fügen Sie der Datei pubspec.yaml
die folgende Abhängigkeit hinzu:
dependencies:
# ...
firebase_in_app_messaging: ^0.4.0
# ...
Nachricht in der Firebase Console schreiben
Nachdem Sie Ihrer App FIAM hinzugefügt haben, können Sie eine Nachricht verfassen, die beim ersten Öffnen Ihrer App ausgelöst wird.
So verfassen Sie Ihre erste Nachricht:
- Klicken Sie in der Firebase Console im Abschnitt Interagieren auf In-App-Messaging.
- Klicken Sie im Bereich „In-App-Messaging“ auf Erste Kampagne erstellen.
Erstellen Sie eine einfache modale Nachricht, um zu prüfen, ob die Integration funktioniert. Sie können die Mitteilung nach Belieben anpassen, indem Sie Bilder, Schaltflächen hinzufügen oder Farben ändern.
Richten Sie das Targeting auf die App aus, mit der Sie testen möchten. Je nach Integrationspfad können Sie iOS, Android oder beides auswählen.
Wir möchten, dass die Mitteilung beim Öffnen der App ausgelöst wird. Daher eignet sich die Standardkonfiguration für die Planung.
Sobald die Planung abgeschlossen ist, können wir die Mitteilung veröffentlichen. Klicken Sie auf „Überprüfen“. Daraufhin sollte in etwa Folgendes angezeigt werden:
Nachricht in der App ansehen
Deinstallieren Sie jetzt die App und installieren Sie sie dann wieder. Beim Öffnen sollte die von Ihnen erstellte Nachricht angezeigt werden. Glückwunsch, Sie haben gerade Ihre erste In-App-Nachricht gesendet. Im nächsten Schritt erfahren Sie, wie Sie ein Analyseereignis hinzufügen, um eine In-App-Mitteilung basierend auf den Aktionen Ihrer Nutzer in der App auszulösen.
6. Firebase Analytics für die erweiterte Auslösung von Nachrichten einbinden
Firebase Analytics in Ihre App einbinden
Damit wir nachvollziehen können, wie Nutzer mit unserer App interagieren, und basierend auf ihren Aktionen eine In-App-Nachricht auslösen können, fügen wir jetzt ein Analytics-Ereignis hinzu, wenn ein Nutzer auf ein Restaurant klickt.
- Fügen Sie Flutter in
pubspec.yaml
die Abhängigkeit „Firebase Analytics“ hinzu.
dependencies:
# ...
firebase_analytics: ^1.0.1
# ...
- Analysen in
home_page.dart
importieren
import 'package:firebase_analytics/firebase_analytics.dart';
- Fügen Sie der Klasse „HomePage“ in
home_page.dart
eine Instanz von Firebase Analytics hinzu.
class HomePage extends StatefulWidget {
static const route = '/';
static FirebaseAnalytics analytics = FirebaseAnalytics();
HomePage({Key key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
- Analytics-Ereignis auslösen, wenn der Nutzer in
home_page.dart
auf eine Restaurantkarte klickt
onRestaurantPressed: (id) async {
await HomePage.analytics.logEvent(name: 'click_restaurant');
Navigator.pushNamed(context,
RestaurantPage.route,
arguments: RestaurantPageArguments(id: id));
})
Nachricht so bearbeiten, dass sie durch das Analyseereignis ausgelöst wird
Da wir jetzt das Ereignis „click_restaurant“ haben, lösen wir unsere In-App-Nachricht anhand dieses Ereignisses aus, nicht wenn der Nutzer die App öffnet.
Kehren Sie in der Firebase Console zu „In-App-Nachricht“ zurück und bearbeiten Sie die vorhandene Kampagne.
Ändern Sie nun den Bereich „Planung“, damit die Nachricht vom neuen Ereignis ausgelöst wird.
Dort können wir unsere Änderungen veröffentlichen, indem wir auf die Schaltfläche „Überprüfen“ klicken.
Trigger in der App testen
Jetzt sollten Sie Ihre App mit
flutter run
Wenn Sie auf ein Restaurant klicken, sollte Ihre In-App-Nachricht angezeigt werden.
7. FIAM- und ABT-Kampagne erstellen
Mit einem Ziel beginnen
Unsere Friendlyeats-App sieht schon toll aus, aber damit sie nützlich ist, brauchen wir einige Rezensionen. Diese stammen von Friendlyeats-Nutzern. Wir sollten also eine Möglichkeit finden, Nutzer dazu anzuregen, Rezensionen zu hinterlassen.
Definieren wir zuerst unser Conversion-Ereignis.
Da wir wissen möchten, ob Nutzer Rezensionen zu Restaurants verfassen, fügen wir ein Analyseereignis hinzu, um dieses Verhalten zu messen.
- Importieren Sie Firebase Analytics wie zuvor und fügen Sie RestaurantPage in
restaurant_page.dart
eine Instanz von Analytics hinzu.
class RestaurantPage extends StatefulWidget {
static const route = '/restaurant';
static FirebaseAnalytics analytics = FirebaseAnalytics();
final String _restaurantId;
RestaurantPage({Key key, @required String restaurantId})
: _restaurantId = restaurantId,
super(key: key);
@override
_RestaurantPageState createState() =>
_RestaurantPageState(restaurantId: _restaurantId);
}
- Jetzt lassen wir ein Ereignis in
_onCreateReviewPressed
auslösen, wenn wir eine Rezension inrestaurant_page.dart
speichern.
if (newReview != null) {
// Log successful review
await RestaurantPage.analytics.logEvent(name: 'review_success');
// Save the review
return data.addReview(restaurantId: _restaurant.id, review: newReview);
}
A/B-Test in der Firebase Console konfigurieren
Nachdem wir nun wissen, wie In-App-Messaging-Kampagnen erstellt werden, sollten wir uns überlegen, welche Art von Verhalten wir mit diesen Kampagnen in unserer App fördern möchten. Wir würden uns freuen, wenn mehr Nutzer Rezensionen für FriendlyEats hinterlassen würden. Das würde die App noch nützlicher machen. Wir könnten dies mithilfe von In-App-Mitteilungen fördern. Eine Möglichkeit ist eine einfache In-App-Nachricht, in der Nutzer aufgefordert werden, eine Rezension für das Restaurant zu verfassen, um die FriendlyEats-App zu verbessern. Eine andere Möglichkeit besteht darin, in einer In-App-Nachricht einen Anreiz für das Verfassen einer Rezension anzubieten, z. B. einen Gutschein oder Rabattcode für ein bestimmtes Restaurant.
Mit beiden Ansätzen könnte die Häufigkeit erhöht werden, mit der Nutzer Rezensionen für Restaurants auf FriendlyEats verfassen. Es scheint, dass das Bereitstellen eines Gutscheins in diesem Fall eine noch stärkere Wirkung haben könnte. Aber wie viel wahrscheinlicher ist es, dass Nutzer eine Rezension schreiben, wenn Sie diesen Gutschein anbieten? Ist der Gutschein überhaupt die Kosten wert? Um das herauszufinden, führen wir einen Test für In-App-Messaging durch. Mit Firebase A/B-Tests können wir Nutzern zufällig eine unserer In-App-Mitteilungen anzeigen und die Auswirkungen auf das Nutzerverhalten messen, ähnlich wie bei einem klinischen Test. Das Beste daran ist, dass Sie das ganz über die Firebase Console erledigen können – ganz ohne Code.
So erstellen Sie Ihren ersten Test für In-App-Messaging:
- Klicken Sie in der Firebase Console im Bereich Engage (Interagieren) auf A/B-Tests.
- Klicken Sie auf Test erstellen und wählen Sie aus, dass Sie einen In-App-Messaging-Test durchführen möchten. Daraufhin wird der unten dargestellte Test-Builder geöffnet.
Geben Sie dem Test einen Namen und optional eine Beschreibung.
- Im nächsten Schritt verfassen Sie die verschiedenen In-App-Mitteilungen, die Sie an die Nutzer in Ihrem Test senden. Die erste In-App-Nachricht, die wir verfassen, ist die „Baseline“ oder Kontrollgruppe unseres Tests. Wir können diese Nachricht als einfache Aufforderung zur Rezension verwenden:
- Nachdem wir nun eine Baseline haben, erstellen wir eine Variante: die In-App-Nachricht, in der Nutzern ein Gutscheincode angeboten wird, um sie zu einer Rezension zu bewegen. In der Vorschau unten ist das nicht vollständig zu sehen, aber der Betreff der Nachricht lautet „Gutschein sichern, Rezension hinterlassen!“ und der Textkörper lautet: „Verwenden Sie beim nächsten Besuch im Burrito Cafe den Gutscheincode FRIENDLYEATS-15 an der Kasse, um 15% Rabatt auf Ihre Bestellung zu erhalten. Und vergiss nicht, danach eine Rezension zu hinterlassen!“ Hoffentlich werden einige Nutzer dadurch dazu inspiriert, das Burrito-Café zu besuchen.
Im nächsten Schritt legen wir das Targeting auf unsere App fest und legen die Auslieferung fest. Dies ist der Prozentsatz der infrage kommenden Nutzer (Nutzer, die die Ausrichtungs-/Triggerbedingungen erfüllen), denen eine der Mitteilungen im Test angezeigt wird. In diesem Beispiel können wir diesen Wert einfach auf 100% festlegen, da alle Nutzer entweder die Kontrollgruppe oder unsere Gutscheinvariante sehen sollen. Wenn Sie eine Kontrollgruppe haben möchten, der keine In-App-Mitteilung angezeigt wird, können Sie diesen Prozentsatz reduzieren.
- Als Nächstes definieren Sie einige Ziele für den Test. Das ist das Ergebnis des Tests, das wir messen möchten. Wir legen dies als
review_success
-Analyseereignis fest, das wir im vorherigen Abschnitt definiert haben, da wir die Auswirkungen unserer verschiedenen In-App-Mitteilungen auf Nutzer sehen möchten, die Restaurantrezensionen hinterlassen. - Für die Planung lassen wir die Kampagne sofort beginnen und legen
click_restaurant
als Auslösebedingung fest, damit Nutzer eine der beiden In-App-Mitteilungen sehen, wenn sie auf ein Restaurant klicken.
- Jetzt müssen wir nur noch den Test überprüfen und auf Test starten klicken. Jetzt können wir uns zurücklehnen und auf die Daten aus unserem Test warten.
Datenerhebung in Echtzeit ansehen
Nachdem wir den Test gestartet haben, sehen Nutzer von FriendlyEats beim Klicken auf ein Restaurant zufällig eine der beiden von uns verfassten In-App-Mitteilungen, entweder die Baseline-Mitteilung oder die Variante. So werden unsere Nutzer in zwei Gruppen unterteilt, je nachdem, welche Mitteilung sie gesehen haben. In der Firebase Console können wir dann im Bereich „A/B-Tests“ die Live-Analysedaten beider Gruppen vergleichen. Es dauert einige Zeit, bis Daten eingehen, da wir warten müssen, bis Nutzer die In-App-Mitteilungen tatsächlich sehen und entsprechend handeln. So könnten Ihre Ergebnisse aussehen, wenn genügend Daten vorhanden sind:
In diesem Fall hat sich die Variante deutlich gegenüber der Kontrollgruppe verbessert. Daher können wir die Option Variante bereitstellen auswählen, wodurch die In-App-Mitteilung mit dem Gutschein für alle Nutzer eingeführt wird.
8. Glückwunsch
Herzlichen Glückwunsch! Sie haben Ihren ersten Test für In-App-Messaging erstellt und ausgeführt. Sie können jetzt einen Test in Ihrer eigenen App durchführen und die Ergebnisse nutzen, um Ihre In-App-Messaging-Kampagnen effektiver zu gestalten.
Wie geht es weiter?
Sehen Sie sich einige dieser Codelabs an:
Weitere Informationen
Wir haben nur an der Oberfläche dessen gekratzt, was mit Firebase In-App Messaging und Firebase A/B Testing möglich ist. Weitere Informationen finden Sie hier:
- Messaging-Tests mit A/B-Tests erstellen
- Remote Config-Tests mit A/B-Tests erstellen
- Anwendungsfälle für Firebase In-App Messaging
- Firebase In-App-Messaging-Nachrichten anpassen