1. Übersicht
In diesem Codelab erfahren Sie, wie Sie die Leistung Ihrer App während einer Funktionseinführung überwachen. Unsere Beispiel-App verfügt über grundlegende Funktionen und ist so eingerichtet, dass basierend auf einem Firebase Remote Config-Flag ein anderes Hintergrundbild angezeigt wird. Wir gehen Instrumentierungsspuren durch, um die Leistung der App zu überwachen, führen eine Konfigurationsänderung an der App durch, überwachen die Auswirkungen und sehen, wie wir die Leistung verbessern können.
Was Sie lernen werden
- So fügen Sie Firebase Performance Monitoring zu Ihrer mobilen App hinzu, um sofort einsatzbereite Messwerte zu erhalten (z. B. App-Startzeit und langsame oder eingefrorene Frames)
- So fügen Sie benutzerdefinierte Ablaufverfolgungen hinzu, um kritische Codepfade Ihrer Benutzerreisen zu verstehen
- So verwenden Sie das Leistungsüberwachungs-Dashboard, um Ihre Metriken zu verstehen und wichtige Änderungen wie die Einführung einer Funktion zu verfolgen
- So richten Sie Leistungswarnungen ein, um Ihre wichtigsten Kennzahlen zu überwachen
- So führen Sie eine Firebase Remote Config-Änderung ein
Voraussetzungen
- Android Studio 4.0 oder höher
- Ein Android-Emulator mit API-Level 16 oder höher.
- Java-Version 8 oder höher
- Ein grundlegendes Verständnis von Firebase Remote Config
2. Richten Sie das Beispielprojekt ein
Laden Sie den Code herunter
Führen Sie den folgenden Befehl aus, um den Beispielcode für dieses Codelab zu klonen. Dadurch wird auf Ihrem Computer ein Ordner namens codelab-perf-rc-android
:
$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git
Wenn Sie Git nicht auf Ihrem Computer haben, können Sie den Code auch direkt von GitHub herunterladen.
Importieren Sie das Projekt im Ordner firebase-perf-rc-android-start
in Android Studio. Sie werden wahrscheinlich einige Laufzeitausnahmen oder vielleicht eine Warnung über eine fehlende google-services.json
Datei sehen. Wir werden dies im nächsten Abschnitt korrigieren.
In diesem Codelab verwenden Sie das Firebase Assistant -Plug-in, um Ihre Android-App bei einem Firebase-Projekt zu registrieren und die erforderlichen Firebase-Konfigurationsdateien, Plug-ins und Abhängigkeiten zu Ihrem Android-Projekt hinzuzufügen – alles aus Android Studio heraus !
Verbinden Sie Ihre App mit Firebase
- Gehen Sie zu Android Studio / Hilfe > Nach Updates suchen , um sicherzustellen, dass Sie die neuesten Versionen von Android Studio und dem Firebase-Assistenten verwenden.
- Wählen Sie Extras > Firebase aus, um den Assistentenbereich zu öffnen.
- Wählen Sie Leistungsüberwachung aus, um sie Ihrer App hinzuzufügen, und klicken Sie dann auf Erste Schritte mit der Leistungsüberwachung .
- Klicken Sie auf Mit Firebase verbinden, um Ihr Android-Projekt mit Firebase zu verbinden (dadurch wird die Firebase-Konsole in Ihrem Browser geöffnet) .
- Klicken Sie in der Firebase-Konsole auf Projekt hinzufügen und geben Sie dann einen Firebase-Projektnamen ein (wenn Sie bereits ein Firebase-Projekt haben, können Sie stattdessen dieses vorhandene Projekt auswählen) . Klicken Sie auf Weiter und akzeptieren Sie die Bedingungen, um das Firebase-Projekt und eine neue Firebase-App zu erstellen.
Als nächstes sollte ein Dialogfeld zum Verbinden Ihrer neuen Firebase-App mit Ihrem Android Studio-Projekt angezeigt werden.
- Klicken Sie auf Verbinden .
- Öffnen Sie Android Studio. Im Assistentenbereich sehen Sie die Bestätigung, dass Ihre App mit Firebase verbunden ist.
Fügen Sie Ihrer App Leistungsüberwachung hinzu
Klicken Sie im Assistentenbereich von Android Studio auf Leistungsüberwachung zu Ihrer App hinzufügen .
Sie sollten ein Dialogfeld zum Akzeptieren von Änderungen sehen, wonach Android Studio Ihre App synchronisieren sollte, um sicherzustellen, dass alle erforderlichen Abhängigkeiten hinzugefügt wurden.
Schließlich sollten Sie die Erfolgsmeldung im Assistentenbereich in Android Studio sehen, dass alle Abhängigkeiten korrekt eingerichtet sind.
Aktivieren Sie als zusätzlichen Schritt die Debug-Protokollierung , indem Sie den Anweisungen im Schritt „(Optional) Debug-Protokollierung aktivieren“ folgen. Dieselben Anweisungen sind auch in der öffentlichen Dokumentation verfügbar.
3. Führen Sie die App aus
Sie sollten jetzt die Datei google-services.json
im Modulverzeichnis (auf App-Ebene) Ihrer App sehen und Ihre App sollte jetzt kompiliert werden. Klicken Sie in Android Studio auf Ausführen > „App“ ausführen, um die App auf Ihrem Android-Emulator zu erstellen und auszuführen.
Wenn die App ausgeführt wird, sollten Sie zunächst einen Begrüßungsbildschirm wie diesen sehen:
Dann wird nach einigen Sekunden die Hauptseite mit dem Standardbild angezeigt:
Was passiert unter der Haube?
Der Begrüßungsbildschirm ist in SplashScreenActivity implementiert und bewirkt Folgendes:
- In
onCreate()
initialisieren wir Firebase Remote Config-Einstellungen und rufen die Konfigurationswerte ab, die Sie später in diesem Codelab im Remote Config-Dashboard festlegen. - In
executeTasksBasedOnRC()
lesen wir den Konfigurationswert desseasonal_image_url
-Flags. Wenn eine URL vom Konfigurationswert bereitgestellt wird, laden wir das Bild synchron herunter. - Sobald der Download abgeschlossen ist, navigiert die App zu MainActivity und ruft
finish()
auf, umSplashScreenActivity
zu beenden.
Wenn in MainActivity
seasonal_image_url
Remote Config definiert ist, wird die Funktion aktiviert und das heruntergeladene Bild wird als Hintergrund der Hauptseite angezeigt. Andernfalls wird das Standardbild (siehe oben) angezeigt.
4. Richten Sie Remote Config ein
Nachdem Ihre App ausgeführt wird, können Sie das neue Feature-Flag einrichten.
- Suchen Sie im linken Bereich der Firebase-Konsole den Abschnitt Engage und klicken Sie dann auf Remote Config .
- Klicken Sie auf die Schaltfläche Konfiguration erstellen , um das Konfigurationsformular zu öffnen, und fügen Sie
seasonal_image_url
als Parameterschlüssel hinzu. - Klicken Sie auf Beschreibung hinzufügen und geben Sie dann diese Beschreibung ein:
Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
- Klicken Sie auf Neu hinzufügen -> Bedingter Wert -> Neue Bedingung erstellen .
- Geben Sie als Bedingungsname
Seasonal image rollout
ein. - Wählen Sie für den Abschnitt
Applies if...
die OptionUser in random percentile <= 0%
. (Sie möchten die Funktion deaktiviert lassen, bis Sie bereit sind, sie in einem späteren Schritt bereitzustellen.) - Klicken Sie auf Bedingung erstellen . Sie werden diese Bedingung später verwenden, um die neue Funktion für Ihre Benutzer bereitzustellen.
- Öffnen Sie das Formular „Create your first parameter “ und suchen Sie das Feld „Value for Seasonal Image Rollout“ . Geben Sie die URL ein, unter der das saisonale Bild heruntergeladen wird:
https://images.unsplash.com/photo-1552691021-7043334e0b51
- Lassen Sie den Standardwert als leere Zeichenfolge. Dies bedeutet, dass das Standardbild in der Codebasis angezeigt wird und nicht ein Bild, das von einer URL heruntergeladen wurde.
- Klicken Sie auf Speichern .
Sie können sehen, dass die neue Konfiguration als Entwurf erstellt wird.
- Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen oben, um Ihre App zu aktualisieren.
5. Überwachung der Datenladezeit hinzufügen
Ihre App lädt einige Daten vorab, bevor MainActivity
, und zeigt einen Begrüßungsbildschirm an, um diesen Prozess auszublenden. Sie möchten nicht, dass Ihre Benutzer auf diesem Bildschirm zu lange warten, daher ist es normalerweise vorteilhaft, zu überwachen, wie lange der Begrüßungsbildschirm angezeigt wird.
Firebase Performance Monitoring bietet eine Möglichkeit, genau das zu tun. Sie können benutzerdefinierte Code-Traces instrumentieren, um die Leistung von bestimmtem Code in Ihrer App zu überwachen – wie die Ladezeit für Daten und die Verarbeitungszeit Ihrer neuen Funktion.
Um nachzuverfolgen, wie lange der Begrüßungsbildschirm angezeigt wird, fügen Sie SplashScreenActivity eine benutzerdefinierte SplashScreenActivity
hinzu, bei der es sich um die Activity
handelt, die den Begrüßungsbildschirm implementiert.
- Initialisieren, erstellen und starten Sie einen benutzerdefinierten Code-Trace mit dem Namen
splash_screen_trace
:
SplashScreenActivity.java
// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...
public class SplashScreenActivity extends AppCompatActivity {
private static final String TAG = "SplashScreenActivity";
private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";
// TODO: Initialize splash_screen_trace
private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
// ...
}
- Beenden Sie die Ablaufverfolgung in der Methode
onDestroy()
vonSplashScreenActivity
:
SplashScreenActivity.java
@Override
protected void onDestroy() {
super.onDestroy();
// TODO: Stop the splash_screen_trace here
splashScreenTrace.stop();
}
Da Ihre neue Funktion ein Bild herunterlädt und verarbeitet, fügen Sie eine zweite benutzerdefinierte Codeablaufverfolgung hinzu, die die zusätzliche Zeit verfolgt, die Ihre Funktion zu SplashScreenActivity
hinzugefügt hat.
- Initialisieren, erstellen und starten Sie einen benutzerdefinierten Code-Trace mit dem Namen
splash_seasonal_image_processing
:
SplashScreenActivity.java
private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);
if (!seasonalImageUrl.isEmpty()) {
// TODO: Start the splash_seasonal_image_processing here
final Trace seasonalImageProcessingTrace = FirebasePerformance
.startTrace("splash_seasonal_image_processing");
// ...
}
}
- Beenden Sie den Trace in den Methoden
onLoadFailed()
undonResourceReady()
desRequestListener
:
SplashScreenActivity.java
Glide.with(SplashScreenActivity.this.getApplicationContext())
.asBitmap()
.load(seasonalImageUrl)
.signature(new ObjectKey(Utils.getCacheUUID()))
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(
@Nullable GlideException e,
Object model, Target<Bitmap> target,
boolean isFirstResource) {
// TODO: Stop the splash_seasonal_image_processing here
seasonalImageProcessingTrace.stop();
launchMainActivity();
return true;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model,
Target<Bitmap> target, DataSource dataSource,
boolean isFirstResource) {
// TODO: Stop the splash_seasonal_image_processing here
seasonalImageProcessingTrace.stop();
launchMainActivity();
return true;
}
})
.preload();
Nachdem Sie nun benutzerdefinierte Codeablaufverfolgungen hinzugefügt haben, um die Dauer des Begrüßungsbildschirms ( splash_screen_trace)
und die Verarbeitungszeit der neuen Funktion ( splash_seasonal_image_processing
) zu verfolgen, führen Sie die App erneut in Android Studio aus. Sie sollten eine Protokollierungsmeldung sehen, die die Logging trace metric: splash_screen_trace
, gefolgt von der Dauer der Ablaufverfolgung. Sie sehen keine Protokollnachricht für splash_seasonal_image_processing
, da Sie die neue Funktion noch nicht aktiviert haben.
6. Fügen Sie der Ablaufverfolgung ein benutzerdefiniertes Attribut hinzu
Für Ablaufverfolgungen von benutzerdefiniertem Code protokolliert die Leistungsüberwachung automatisch Standardattribute (gemeinsame Metadaten wie App-Version, Land, Gerät usw.), sodass Sie die Daten für die Ablaufverfolgung in der Firebase-Konsole filtern können . Sie können auch benutzerdefinierte Attribute hinzufügen und überwachen.
In Ihrer App haben Sie gerade zwei benutzerdefinierte Codeablaufverfolgungen hinzugefügt, um die Dauer des Begrüßungsbildschirms und die Verarbeitungszeit der neuen Funktion zu überwachen. Ein Faktor, der diese Dauer beeinflussen kann, ist, ob das angezeigte Bild das Standardbild ist oder ob das Bild von einer URL heruntergeladen werden muss. Und wer weiß – vielleicht haben Sie irgendwann andere URLs, von denen Sie ein Bild herunterladen.
Fügen wir also diesen benutzerdefinierten Code-Traces ein benutzerdefiniertes Attribut hinzu, das die saisonale Bild-URL darstellt. Auf diese Weise können Sie später Dauerdaten nach diesen Werten filtern.
- Fügen Sie das benutzerdefinierte Attribut (
seasonal_image_url_attribute
) fürsplash_screen_trace
am Anfang der MethodeexecuteTasksBasedOnRC
:
SplashScreenActivity.java
private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);
// TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
if (seasonalImageUrl.isEmpty()) {
splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
} else {
splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
}
// ...
}
- Fügen Sie das gleiche benutzerdefinierte Attribut für
splash_seasonal_image_processing
direkt nach demstartTrace("splash_seasonal_image_processing")
-Aufruf hinzu:
SplashScreenActivity.java
if (!seasonalImageUrl.isEmpty()) {
// TODO: Start the splash_seasonal_image_processing here
final Trace seasonalImageProcessingTrace = FirebasePerformance
.startTrace("splash_seasonal_image_processing");
// TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
seasonalImageProcessingTrace
.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
// ...
}
Nachdem Sie nun ein benutzerdefiniertes Attribut ( seasonal_image_url_attribute
) für Ihre beiden benutzerdefinierten Traces ( splash_screen_trace
und splash_seasonal_image_processing
) hinzugefügt haben, führen Sie die App erneut in Android Studio aus. Sie sollten eine Protokollierungsmeldung sehen, die das Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'.
Sie haben den Remote Config-Parameter seasonImageUrl noch nicht aktiviert, weshalb der Attributwert unset
ist.
Das Leistungsüberwachungs-SDK sammelt die Ablaufverfolgungsdaten und sendet sie an Firebase. Sie können die Daten im Leistungs -Dashboard der Firebase-Konsole anzeigen, die wir im nächsten Schritt des Codelabs ausführlich erläutern.
7. Konfigurieren Sie Ihr Leistungsüberwachungs-Dashboard
Konfigurieren Sie Ihr Dashboard, um Ihre Funktion zu überwachen
Wählen Sie in der Firebase-Konsole das Projekt mit Ihrer Friendly Eats App aus.
Suchen Sie im linken Bereich den Abschnitt Release & Monitor und klicken Sie dann auf Performance .
Sie sollten Ihr Leistungs -Dashboard mit Ihren allerersten Datenpunkten in Ihrem Metrik-Board sehen! Das Leistungsüberwachungs-SDK sammelt Leistungsdaten von Ihrer App und zeigt sie innerhalb von Minuten nach der Erfassung an.
Auf diesem Metrikboard können Sie wichtige Metriken für Ihre App nachverfolgen. Die Standardansicht enthält die Dauer Ihrer App-Startzeitverfolgung, aber Sie können die Metriken hinzufügen, die Ihnen am wichtigsten sind. Da Sie die neu hinzugefügte Funktion nachverfolgen, können Sie Ihr Dashboard so anpassen, dass die Dauer des benutzerdefinierten Code-Trace splash_screen_trace
.
- Klicken Sie auf eines der leeren Kästchen Metrik auswählen.
- Wählen Sie im Dialogfenster den Trace-Typ Benutzerdefinierte Traces und den Trace-Namen
splash_screen_trace
.
- Klicken Sie auf Metrik auswählen , und Sie sollten die Dauer von
splash_screen_trace
sehen, die Ihrem Dashboard hinzugefügt wurde!
Sie können dieselben Schritte verwenden, um andere Metriken hinzuzufügen, die Ihnen wichtig sind, damit Sie schnell sehen können, wie sich ihre Leistung im Laufe der Zeit und sogar mit verschiedenen Releases ändert.
Das Metrik-Board ist ein leistungsstarkes Tool , um die Leistung wichtiger Metriken zu verfolgen, die von Ihren Benutzern erlebt werden. Für dieses Codelab haben Sie einen kleinen Datensatz in einem engen Zeitbereich, sodass Sie andere Dashboardansichten verwenden, die Ihnen helfen, die Leistung der Funktionseinführung zu verstehen.
8. Führen Sie Ihr Feature ein
Nachdem Sie Ihre Überwachung eingerichtet haben, können Sie die zuvor eingerichtete Firebase Remote Config-Änderung ( seasonal_image_url)
einführen.
Um eine Änderung einzuführen, kehren Sie zur Seite „Remote Config“ in der Firebase-Konsole zurück, um das Nutzerperzentil Ihrer Targeting-Bedingung zu erhöhen. Normalerweise würden Sie neue Funktionen für einen kleinen Teil der Benutzer einführen und sie nur dann erweitern, wenn Sie sicher sind, dass es keine Probleme damit gibt. In diesem Codelab sind Sie jedoch die einzigen Benutzer der App, sodass Sie das Perzentil auf 100 % ändern können.
- Klicken Sie oben auf der Seite auf die Registerkarte Bedingungen .
- Klicken Sie auf die
Seasonal image rollout
, die Sie zuvor hinzugefügt haben. - Ändern Sie das Perzentil auf 100 %.
- Klicken Sie auf Bedingung speichern .
- Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen.
Zurück in Android Studio starten Sie die App in Ihrem Emulator neu, um die neue Funktion zu sehen. Nach dem Begrüßungsbildschirm sollten Sie den neuen leeren Hauptbildschirm sehen!
9. Überprüfen Sie die Leistungsänderungen
Sehen wir uns nun die Leistung beim Laden des Begrüßungsbildschirms mithilfe des Leistungs -Dashboards in der Firebase-Konsole an. In diesem Schritt des Codelabs verwenden Sie verschiedene Teile des Dashboards, um Leistungsdaten anzuzeigen.
- Scrollen Sie auf der Hauptregisterkarte Dashboard nach unten zur Ablaufverfolgungstabelle und klicken Sie dann auf die Registerkarte Benutzerdefinierte Ablaufverfolgungen. In dieser Tabelle sehen Sie die benutzerdefinierten Code-Traces, die Sie zuvor hinzugefügt haben, sowie einige Out-of-the-Box-Traces .
- Nachdem Sie die neue Funktion aktiviert haben, suchen Sie nach dem benutzerdefinierten Code-Trace
splash_seasonal_image_processing
, der die Zeit gemessen hat, die zum Herunterladen und Verarbeiten des Bildes benötigt wurde. Aus dem Duration -Wert der Ablaufverfolgung können Sie ersehen, dass dieser Download und die Verarbeitung viel Zeit in Anspruch nehmen.
- Da Sie Daten für
splash_seasonal_image_processing
haben, können Sie die Dauer dieser Ablaufverfolgung zu Ihrem Metrik-Board oben auf der Registerkarte Dashboard hinzufügen.
Klicken Sie wie zuvor auf eines der leeren Kästchen Select a metric (Metrik auswählen). Wählen Sie im Dialogfenster den Trace-Typ Benutzerdefinierte Traces und den Trace-Namen splash_seasonal_image_processing
. Klicken Sie abschließend auf Metrik auswählen , um diese Metrik zum Metrik-Board hinzuzufügen.
- Um die Unterschiede weiter zu bestätigen, können Sie sich die Daten für
splash_screen_trace
genauer ansehen. Klicken Sie im Metrik-Board auf die Kartesplash_screen_trace
und dann auf Metrikdetails anzeigen .
- Auf der Detailseite sehen Sie unten links eine Liste mit Attributen, einschließlich des benutzerdefinierten Attributs, das Sie zuvor erstellt haben. Klicken Sie auf das benutzerdefinierte Attribut
seasonal_image_url_attribute
, um die Splash-Screen-Dauer für jede saisonale Bild-URL auf der rechten Seite anzuzeigen:
- Ihre Werte für die Dauer des Begrüßungsbildschirms werden sich wahrscheinlich etwas von denen im obigen Screenshot unterscheiden, aber Sie sollten eine längere Dauer haben, wenn das Bild von einer URL heruntergeladen wird, als wenn Sie das Standardbild verwenden (dargestellt durch "unset").
In diesem Codelab mag der Grund für diese längere Dauer einfach sein, aber in einer echten App ist er vielleicht nicht so offensichtlich. Die gesammelten Dauerdaten stammen von verschiedenen Geräten, auf denen die App unter verschiedenen Netzwerkverbindungsbedingungen ausgeführt wird, und diese Bedingungen können schlechter sein als erwartet. Sehen wir uns an, wie Sie dieses Problem untersuchen würden, wenn dies eine reale Situation wäre.
- Klicken Sie oben auf der Seite auf Leistung , um zur Hauptregisterkarte Dashboard zurückzukehren:
- Klicken Sie in der Ablaufverfolgungstabelle unten auf der Seite auf die Registerkarte Netzwerkanforderungen . In dieser Tabelle sehen Sie alle Netzwerkanfragen Ihrer App, zusammengefasst in URL-Mustern , einschließlich des URL-Musters
images.unsplash.com/**
. Wenn Sie den Wert dieser Antwortzeit mit der Gesamtzeit vergleichen, die für das Herunterladen und Verarbeiten von Bildern benötigt wird (dh die Dauer dersplash_seasonal_image_processing
), sehen Sie, dass ein Großteil der Zeit für das Herunterladen des Bildes aufgewendet wird.
Leistungsbefunde
Bei der Firebase-Leistungsüberwachung haben Sie die folgenden Auswirkungen auf die Endbenutzer festgestellt, wenn die neue Funktion aktiviert ist:
- Die für
SplashScreenActivity
aufgewendete Zeit hat zugenommen. - Die Dauer für
splash_seasonal_image_processing
war sehr groß. - Die Verzögerung war auf die Antwortzeit für den Bilddownload und die entsprechende benötigte Bearbeitungszeit des Bildes zurückzuführen.
Im nächsten Schritt mindern Sie die Auswirkungen auf die Leistung, indem Sie das Feature zurücksetzen und ermitteln, wie Sie die Implementierung des Features verbessern können.
10. Setzen Sie die Funktion zurück
Es ist nicht wünschenswert, die Wartezeit Ihrer Benutzer während des Begrüßungsbildschirms zu verlängern. Einer der Hauptvorteile von Remote Config ist die Möglichkeit, Ihre Einführung anzuhalten und rückgängig zu machen, ohne eine andere Version für Ihre Benutzer freigeben zu müssen. Auf diese Weise können Sie schnell auf Probleme reagieren (wie die Leistungsprobleme, die Sie im letzten Schritt entdeckt haben) und die Anzahl unzufriedener Benutzer minimieren.
Als schnelle Abhilfe setzen Sie das Rollout-Perzentil auf 0
zurück, damit alle Ihre Benutzer wieder das Standardbild sehen:
- Gehen Sie zurück zur Seite „ Remote Config “ in der Firebase-Konsole.
- Klicken Sie oben auf der Seite auf Bedingungen .
- Klicken Sie auf die
Seasonal image rollout
, die Sie zuvor hinzugefügt haben. - Ändern Sie das Perzentil auf 0 %.
- Klicken Sie auf Bedingung speichern .
- Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen.
Starten Sie die App in Android Studio neu, und Sie sollten den ursprünglichen Hauptbildschirm im leeren Zustand sehen:
11. Beheben Sie die Leistungsprobleme
Sie haben zuvor im Codelab festgestellt, dass das Herunterladen eines Bildes für Ihren Begrüßungsbildschirm die Verlangsamung Ihrer App verursacht hat. Wenn Sie sich das heruntergeladene Bild genauer ansehen, sehen Sie, dass Sie die ursprüngliche Auflösung des Bildes verwenden, die über 2 MB betrug! Eine schnelle Lösung für Ihr Leistungsproblem besteht darin, die Qualität auf eine geeignetere Auflösung zu reduzieren, damit das Herunterladen des Bilds weniger Zeit in Anspruch nimmt.
Führen Sie den Remote Config-Wert erneut aus
- Gehen Sie zurück zur Seite „ Remote Config “ in der Firebase-Konsole.
- Klicken Sie auf das Symbol „ Bearbeiten “ für den Parameter „
seasonal_image_url
“. - Aktualisieren Sie das Image-Rollout „Value for Seasonal“ auf
https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640
und klicken Sie dann auf Speichern .
- Klicken Sie oben auf der Seite auf die Registerkarte Bedingungen .
- Klicken Sie auf Rollout für saisonale Bilder und setzen Sie das Perzentil auf 100 % zurück.
- Klicken Sie auf Bedingung speichern .
- Klicken Sie auf die Schaltfläche Änderungen veröffentlichen .
12. Testen Sie den Fix und richten Sie Warnungen ein
Führen Sie die App lokal aus
Führen Sie die App erneut aus, wenn der neue Konfigurationswert so eingestellt ist, dass eine andere Download-Bild-URL verwendet wird. Dieses Mal sollten Sie beachten, dass die auf dem Begrüßungsbildschirm verbrachte Zeit kürzer ist als zuvor.
Zeigen Sie die Leistung der Änderungen an
Kehren Sie zum Leistungs -Dashboard in der Firebase-Konsole zurück, um zu sehen, wie die Messwerte aussehen.
- Dieses Mal verwenden Sie die Ablaufverfolgungstabelle, um zur Detailseite zu navigieren. Klicken Sie unten in der Ablaufverfolgungstabelle auf der Registerkarte Benutzerdefinierte Ablaufverfolgungen auf die benutzerdefinierte Ablaufverfolgung splash_seasonal_image_processing , um erneut eine detailliertere Ansicht der
splash_seasonal_image_processing
.
- Klicken Sie auf das benutzerdefinierte Attribut
seasonal_image_url_attribute
, um die Aufschlüsselung der benutzerdefinierten Attribute erneut anzuzeigen. Wenn Sie den Mauszeiger über die URLs bewegen, sehen Sie einen Wert, der der neuen URL für das verkleinerte Bild entspricht:https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640
(mit dem?w=640
Am Ende). Der diesem Bild zugeordnete Dauerwert ist erheblich kürzer als der Wert für das vorherige Bild und für Ihre Benutzer akzeptabler!
- Nachdem Sie die Leistung Ihres Begrüßungsbildschirms verbessert haben, können Sie Warnungen einrichten, die Sie benachrichtigen, wenn eine Ablaufverfolgung einen von Ihnen festgelegten Schwellenwert überschreitet. Öffnen Sie das Leistungs -Dashboard und klicken Sie auf das Symbol für das Überlaufmenü (drei Punkte) für splash_screen_trace und klicken Sie auf Warnungseinstellungen .
- Klicken Sie auf den Umschalter, um die Dauerwarnung zu aktivieren. Legen Sie den Schwellenwert so fest, dass er etwas über dem angezeigten Wert liegt, sodass Sie eine E-Mail erhalten, wenn Ihr splash_screen_trace den Schwellenwert überschreitet.
- Klicken Sie auf Speichern , um Ihre Benachrichtigung zu erstellen. Scrollen Sie nach unten zur Ablaufverfolgungstabelle und klicken Sie dann auf die Registerkarte Benutzerdefinierte Ablaufverfolgungen, um zu sehen, dass Ihre Warnung aktiviert ist!
13. Herzlichen Glückwunsch!
Herzliche Glückwünsche! Sie haben das Firebase Performance Monitoring SDK aktiviert und Traces gesammelt, um die Leistung einer neuen Funktion zu messen! Sie haben wichtige Leistungsmetriken für die Einführung einer neuen Funktion überwacht und schnell reagiert, wenn ein Leistungsproblem entdeckt wurde. All dies war durch die Möglichkeit möglich, Konfigurationsänderungen mit Remote Config vorzunehmen und Leistungsprobleme in Echtzeit zu überwachen.
Was wir abgedeckt haben
- Hinzufügen des Firebase Performance Monitoring SDK zu Ihrer App
- Hinzufügen eines benutzerdefinierten Code-Trace zu Ihrem Code, um ein bestimmtes Feature zu messen
- Einrichten eines Remote-Konfigurationsparameters und eines bedingten Werts zum Steuern/Einführen einer neuen Funktion
- Verstehen, wie das Leistungsüberwachungs-Dashboard verwendet wird, um Probleme während eines Rollouts zu identifizieren
- Einrichten von Leistungswarnungen, um Sie zu benachrichtigen, wenn die Leistung Ihrer App einen von Ihnen festgelegten Schwellenwert überschreitet