Leistungsüberwachung von Feature-Roll-outs

1. Übersicht

In diesem Codelab erfahren Sie, wie Sie die Leistung Ihrer App während der Einführung einer Funktion überwachen. Unsere Beispiel-App hat grundlegende Funktionen und ist so eingerichtet, dass je nach Firebase Remote Config-Flag ein anderes Hintergrundbild angezeigt wird. Wir werden uns ansehen, wie wir Traces instrumentieren, um die Leistung der App zu überwachen, eine Konfigurationsänderung für die App bereitstellen, die Auswirkungen beobachten und die Leistung verbessern können.

Lerninhalte

  • Firebase Performance Monitoring in Ihre mobile App einbinden, um sofort einsatzbereite Messwerte wie App-Startzeit und langsame oder eingefrorene Frames zu erhalten
  • Benutzerdefinierte Traces hinzufügen, um kritische Codepfade Ihrer Nutzerpfade zu analysieren
  • So können Sie das Dashboard für die Leistungsüberwachung verwenden, um Ihre Messwerte zu analysieren und wichtige Änderungen wie die Einführung einer Funktion zu verfolgen
  • Leistungsbenachrichtigungen einrichten, um wichtige Messwerte im Blick zu behalten
  • Firebase Remote Config-Änderung einführen

Vorbereitung

  • Android Studio ab Version 4.0
  • Ein Android-Emulator mit API-Level 16 oder höher.
  • Java-Version 8 oder höher
  • Grundkenntnisse von Firebase Remote Config

2. Beispielprojekt einrichten

Code herunterladen

Führen Sie den folgenden Befehl aus, um den Beispielcode für dieses Codelab zu klonen. Dadurch wird auf Ihrem Computer ein Ordner mit dem Namen codelab-perf-rc-android erstellt:

$ 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. Wahrscheinlich werden einige Laufzeitfehler oder eine Warnung zu einer fehlenden google-services.json-Datei angezeigt. Das werden wir im nächsten Abschnitt korrigieren.

In diesem Codelab registrieren Sie Ihre Android-App mit dem Firebase Assistant-Plug-in in einem Firebase-Projekt und fügen Ihrem Android-Projekt die erforderlichen Firebase-Konfigurationsdateien, Plug-ins und Abhängigkeiten hinzu – alles in Android Studio!

App mit Firebase verbinden

  1. Rufen Sie Android Studio/Hilfe > Nach Updates suchen auf, um sicherzugehen, dass Sie die neuesten Versionen von Android Studio und des Firebase Assistant verwenden.
  2. Wählen Sie Tools > Firebase aus, um den Bereich Assistant zu öffnen.
    c0e42ef063d21eab.png
  3. Wählen Sie Performance Monitoring aus, um es Ihrer App hinzuzufügen, und klicken Sie dann auf Performance Monitoring verwenden.
  4. Klicken Sie auf Connect to Firebase, um Ihr Android-Projekt mit Firebase zu verbinden. Dadurch wird die Firebase Console in Ihrem Browser geöffnet.
  5. Klicken Sie auf die Schaltfläche zum Erstellen eines neuen Projekts und geben Sie einen Projektnamen ein (z. B. Feature Rollout Performance Codelab).
  6. Klicken Sie auf Weiter.
  7. Lesen und akzeptieren Sie bei Aufforderung die Firebase-Nutzungsbedingungen und klicken Sie dann auf Weiter.
  8. (Optional) Aktivieren Sie die KI-Unterstützung in der Firebase Console (als „Gemini in Firebase“ bezeichnet).
  9. Für dieses Codelab benötigen Sie kein Google Analytics. Deaktivieren Sie daher die Google Analytics-Option.
    Sie können Google Analytics optional aktivieren, da es erweiterte Targeting-Optionen für die Remote-Konfiguration bietet. In diesem Codelab wird jedoch eine Targeting-Option verwendet, für die Google Analytics nicht erforderlich ist.
  10. Als Nächstes sollte ein Dialogfeld angezeigt werden, in dem Sie Ihre neue Firebase-App mit Ihrem Android Studio-Projekt verknüpfen können.
    51a549ebde2fe57a.png
  11. Klicken Sie auf Verbinden.
  12. Öffnen Sie Android Studio. Im Bereich Assistant sehen Sie die Bestätigung, dass Ihre App mit Firebase verbunden ist.
    40c24c4a56a45990.png

Performance Monitoring in Ihre App einbinden

Klicken Sie in Android Studio im Bereich Assistant auf Add Performance Monitoring to your app (Performance Monitoring zu Ihrer App hinzufügen).

Es sollte ein Dialogfeld zum Übernehmen von Änderungen angezeigt werden. Danach sollte Android Studio Ihre App synchronisieren, um sicherzustellen, dass alle erforderlichen Abhängigkeiten hinzugefügt wurden.

3046f3e1f5fea06f.png

Schließlich sollte im Bereich Assistant in Android Studio die Erfolgsmeldung angezeigt werden, dass alle Abhängigkeiten richtig eingerichtet sind.

62e79fd18780e320.png

Als zusätzlichen Schritt können Sie Debug-Logging aktivieren. Folgen Sie dazu der Anleitung im Schritt „(Optional) Debug-Logging aktivieren“. Dieselbe Anleitung ist auch in der öffentlichen Dokumentation verfügbar.

3. Anwendung ausführen

Die Datei google-services.json sollte jetzt im Modulverzeichnis (auf App-Ebene) Ihrer App angezeigt werden und Ihre App sollte sich jetzt kompilieren lassen. Klicken Sie in Android Studio auf Run > Run 'app' (Ausführen > „App“ ausführen), um die App in Ihrem Android-Emulator zu erstellen und auszuführen.

Wenn die App ausgeführt wird, sollte zuerst ein Ladebildschirm wie dieser angezeigt werden:

ffbd413a6983b205.png

Nach einigen Sekunden wird die Hauptseite mit dem Standardbild angezeigt:

d946cab0df319e50.png

Was passiert im Hintergrund?

Der Splash-Screen wird in SplashScreenActivity implementiert und führt Folgendes aus:

  1. In onCreate() initialisieren wir die Firebase Remote Config-Einstellungen und rufen die Konfigurationswerte ab, die Sie später in diesem Codelab im Remote Config-Dashboard festlegen.
  2. In executeTasksBasedOnRC() lesen wir den Konfigurationswert des Flags seasonal_image_url. Wenn eine URL durch den Konfigurationswert bereitgestellt wird, laden wir das Bild synchron herunter.
  3. Nach Abschluss des Downloads wird in der App zu MainActivity gewechselt und finish() aufgerufen, um SplashScreenActivity zu beenden.

Wenn seasonal_image_url in MainActivity über Remote Config definiert ist, wird das Feature aktiviert und das heruntergeladene Bild als Hintergrund der Hauptseite angezeigt. Andernfalls wird das Standardbild (siehe oben) angezeigt.

4. Remote Config einrichten

Nachdem Ihre App ausgeführt wird, können Sie das neue Feature-Flag einrichten.

  1. Suchen Sie im linken Bereich der Firebase Console nach dem Abschnitt Engage und klicken Sie dann auf Remote Config.
  2. Klicken Sie auf die Schaltfläche Konfiguration erstellen, um das Konfigurationsformular zu öffnen und seasonal_image_url als Parameterschlüssel hinzuzufügen.
  3. Klicken Sie auf Textzeile 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.
  4. Klicken Sie auf Neu hinzufügen > Bedingter Wert > Neue Bedingung erstellen.
  5. Geben Sie als Bedingungsname Seasonal image rollout ein.
  6. Wählen Sie für den Abschnitt Applies if... die Option User in random percentile <= 0% aus. (Sie möchten die Funktion deaktiviert lassen, bis Sie sie in einem späteren Schritt einführen.)
  7. Klicken Sie auf Bedingung erstellen. Sie verwenden diese Bedingung später, um die neue Funktion für Ihre Nutzer einzuführen.

7a07526eb9e81623.png

  1. Öffnen Sie Erstes Parameterformular erstellen und suchen Sie das Feld Wert für die Einführung saisonaler Bilder. Geben Sie die URL ein, unter der das saisonale Bild heruntergeladen werden soll: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. Lassen Sie den Standardwert als leeren String. Das bedeutet, dass das Standardbild im Code anstelle eines von einer URL heruntergeladenen Bildes angezeigt wird.
  3. Klicken Sie auf Speichern.

99e6cd2ebcdced.png

Die neue Konfiguration wird als Entwurf erstellt.

  1. Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen oben, um Ihre App zu aktualisieren.

39cd3e96d370c7ce.png

5. Überwachung der Datenladezeit hinzufügen

Ihre App lädt einige Daten vor dem Anzeigen von MainActivity vorab und zeigt einen Ladebildschirm an, um diesen Vorgang zu verbergen. Nutzer sollten nicht zu lange auf diesem Bildschirm warten müssen. Es ist daher in der Regel sinnvoll, die Anzeigedauer des Startbildschirms zu überwachen.

Mit Firebase Performance Monitoring haben Sie genau diese Möglichkeit. Sie können benutzerdefinierte Code-Traces instrumentieren, um die Leistung von bestimmtem Code in Ihrer App zu überwachen, z. B. die Ladezeit für Daten und die Verarbeitungszeit Ihrer neuen Funktion.

Wenn Sie erfassen möchten, wie lange der Begrüßungsbildschirm angezeigt wird, fügen Sie SplashScreenActivity einen benutzerdefinierten Code-Trace hinzu. SplashScreenActivity ist die Activity, in der der Begrüßungsbildschirm implementiert ist.

  1. 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");
    
    // ...
}
  1. Beenden Sie den Trace in der Methode onDestroy() von SplashScreenActivity:

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 einen zweiten benutzerdefinierten Code-Trace hinzu, mit dem die zusätzliche Zeit erfasst wird, die durch Ihre Funktion zu SplashScreenActivity hinzugekommen ist.

  1. 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");

        // ...
    }
}
  1. Beenden Sie den Trace in den Methoden onLoadFailed() und onResourceReady() der RequestListener:

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 Code-Traces hinzugefügt haben, um die Dauer des Begrüßungsbildschirms (splash_screen_trace)) und die Verarbeitungszeit der neuen Funktion (splash_seasonal_image_processing) zu erfassen, führen Sie die App noch einmal in Android Studio aus. Sie sollten eine Logging-Meldung mit Logging trace metric: splash_screen_trace und der Dauer des Traces sehen. Sie sehen keine Log-Meldung für splash_seasonal_image_processing, da Sie die neue Funktion noch nicht aktiviert haben.

6. Dem Trace ein benutzerdefiniertes Attribut hinzufügen

Bei benutzerdefinierten Code-Traces werden automatisch Standardattribute (allgemeine Metadaten wie App-Version, Land, Gerät usw.) protokolliert, damit Sie die Daten für den Trace in der Firebase Console filtern können. Sie können auch benutzerdefinierte Attribute hinzufügen und überwachen.

Sie haben Ihrer App gerade zwei benutzerdefinierte Code-Traces hinzugefügt, um die Dauer des Splash-Screens und die Verarbeitungszeit des neuen Features zu überwachen. Ein Faktor, der sich auf diese Zeiträume auswirken kann, ist, ob das angezeigte Bild das Standardbild ist oder ob das Bild von einer URL heruntergeladen werden muss. Vielleicht haben Sie irgendwann verschiedene URLs, über die Sie ein Bild herunterladen.

Fügen wir diesen benutzerdefinierten Code-Traces also ein benutzerdefiniertes Attribut hinzu, das die URL des saisonalen Bildes darstellt. So können Sie die Daten zur Dauer später nach diesen Werten filtern.

  1. Fügen Sie das benutzerdefinierte Attribut (seasonal_image_url_attribute) für splash_screen_trace am Anfang der Methode executeTasksBasedOnRC hinzu:

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);
    }

    // ...
}
  1. Fügen Sie direkt nach dem startTrace("splash_seasonal_image_processing")-Aufruf dasselbe benutzerdefinierte Attribut für splash_seasonal_image_processing 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 für beide benutzerdefinierten Traces (splash_screen_trace und splash_seasonal_image_processing) ein benutzerdefiniertes Attribut (seasonal_image_url_attribute) hinzugefügt haben, führen Sie die App noch einmal in Android Studio aus. Sie sollten eine Protokollierungsmeldung mit Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. You have not yet enabled the Remote Config parameter seasonalImageUrl which is why the attribute value is unset sehen.

Das Performance Monitoring SDK erfasst die Tracedaten und sendet sie an Firebase. Sie können die Daten im Dashboard zur Leistungsüberwachung der Firebase Console ansehen. Das Dashboard wird im nächsten Schritt des Codelabs ausführlich beschrieben.

7. Dashboard zur Leistungsüberwachung konfigurieren

Dashboard für die Überwachung der Funktion konfigurieren

Wählen Sie in der Firebase Console das Projekt mit Ihrer Friendly Eats-App aus.

Suchen Sie im linken Bereich den Abschnitt Veröffentlichen & Überwachen und klicken Sie dann auf Leistung.

Auf dem Leistungs-Dashboard sollten Sie die ersten Datenpunkte in Ihrem Messwertboard sehen. Das Performance Monitoring SDK erfasst Leistungsdaten aus Ihrer App und zeigt sie innerhalb weniger Minuten nach der Erfassung an.

f57e5450b70034c9.png

In diesem Messwertboard können Sie wichtige Messwerte für Ihre App im Blick behalten. Die Standardansicht enthält die Dauer des App-Startzeit-Traces. Sie können aber auch die Messwerte hinzufügen, die für Sie am wichtigsten sind. Da Sie die neue Funktion, die Sie hinzugefügt haben, erfassen, können Sie Ihr Dashboard so anpassen, dass die Dauer des benutzerdefinierten Code-Traces splash_screen_trace angezeigt wird.

  1. Klicken Sie auf eines der leeren Felder Messwert auswählen.
  2. Wählen Sie im Dialogfeld den Tracetyp Benutzerdefinierte Traces und den Tracenamen splash_screen_trace aus.

1fb81f4dba3220e0.png

  1. Klicken Sie auf Messwert auswählen. Die Dauer von splash_screen_trace sollte jetzt in Ihrem Dashboard angezeigt werden.

Sie können diese Schritte auch verwenden, um andere Messwerte hinzuzufügen, die für Sie wichtig sind. So können Sie schnell sehen, wie sich ihre Leistung im Laufe der Zeit und sogar bei verschiedenen Releases ändert.

1d465c021e58da3b.png

Das Messwert-Dashboard ist ein leistungsstarkes Tool, mit dem Sie die Leistung wichtiger Messwerte im Blick behalten können, die Ihre Nutzer sehen. In diesem Codelab haben Sie nur eine kleine Menge an Daten in einem kurzen Zeitraum. Daher verwenden Sie andere Dashboardansichten, mit denen Sie die Leistung der Einführung der Funktion besser nachvollziehen können.

8. Funktion einführen

Nachdem Sie das Monitoring eingerichtet haben, können Sie die Firebase Remote Config-Änderung (seasonal_image_url)) bereitstellen, die Sie zuvor eingerichtet haben.

Wenn Sie eine Änderung einführen möchten, kehren Sie in der Firebase Console zur Seite „Remote Config“ zurück und erhöhen Sie das Nutzerperzentil Ihrer Targeting-Bedingung. Normalerweise stellen Sie neue Funktionen nur einem kleinen Teil der Nutzer zur Verfügung und erhöhen diesen Anteil erst, wenn Sie sicher sind, dass es keine Probleme gibt. In diesem Codelab sind Sie jedoch der einzige Nutzer der App. Sie können das Perzentil also auf 100 % ändern.

  1. Klicken Sie oben auf der Seite auf den Tab Bedingungen.
  2. Klicken Sie auf die Bedingung Seasonal image rollout, die Sie zuvor hinzugefügt haben.
  3. Ändern Sie das Perzentil auf 100%.
  4. Klicken Sie auf Bedingung speichern.
  5. Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen.

70f993502b27e7a0.png

Starten Sie die App in Ihrem Emulator neu, um die neue Funktion zu sehen. Nach dem Splash-Screen sollte der neue leere Hauptbildschirm angezeigt werden.

b0cc91b6e48fb842.png

9. Leistungsänderungen prüfen

Sehen wir uns nun die Leistung des Ladevorgangs des Splash-Screens im Leistungs-Dashboard in der Firebase Console an. In diesem Schritt des Codelabs sehen Sie sich Leistungsdaten in verschiedenen Bereichen des Dashboards an.

  1. Scrollen Sie auf dem Tab Dashboard nach unten zur Tabelle mit den Traces und klicken Sie dann auf den Tab Benutzerdefinierte Traces. In dieser Tabelle sehen Sie die benutzerdefinierten Code-Traces, die Sie zuvor hinzugefügt haben, sowie einige Standard-Traces.
  2. Nachdem Sie die neue Funktion aktiviert haben, suchen Sie nach dem benutzerdefinierten Code-Trace splash_seasonal_image_processing, in dem die Zeit gemessen wird, die zum Herunterladen und Verarbeiten des Bildes benötigt wurde. Anhand des Duration-Werts des Traces können Sie sehen, dass das Herunterladen und Verarbeiten viel Zeit in Anspruch nimmt.

439adc3ec71805b7.png

  1. Da Sie Daten für splash_seasonal_image_processing haben, können Sie die Dauer dieses Traces dem Messwertboard oben auf dem Tab Dashboard hinzufügen.

Klicken Sie wie zuvor auf eines der leeren Felder Messwert auswählen. Wählen Sie im Dialogfeld den Tracetyp Benutzerdefinierte Traces und den Tracenamen splash_seasonal_image_processing aus. Klicken Sie abschließend auf Messwert auswählen, um diesen Messwert dem Messwert-Board hinzuzufügen.

7fb64d2340410576.png

  1. Um die Unterschiede weiter zu bestätigen, können Sie sich die Daten für splash_screen_trace genauer ansehen. Klicken Sie im Messwert-Dashboard auf die Karte splash_screen_trace und dann auf Messwertdetails ansehen.

b1c275c30679062a.png

  1. Auf der Detailseite sehen Sie unten links eine Liste mit Attributen, darunter das benutzerdefinierte Attribut, das Sie zuvor erstellt haben. Klicken Sie auf das benutzerdefinierte Attribut seasonal_image_url_attribute, um rechts die Dauer des Splashscreens für jede saisonale Bild-URL aufzurufen:

8fa1a69019bb045e.png

  1. Die Werte für die Dauer des Splash-Screens sind wahrscheinlich etwas anders als im Screenshot oben. Sie sollten jedoch eine längere Dauer haben, wenn das Bild von einer URL heruntergeladen wird, als wenn das Standardbild verwendet wird (durch „unset“ dargestellt).

In diesem Codelab ist der Grund für die längere Dauer möglicherweise offensichtlich, in einer echten App ist das aber nicht immer der Fall. Die erhobenen Zeitangaben stammen von verschiedenen Geräten, auf denen die App unter verschiedenen Netzwerkbedingungen ausgeführt wird. Diese Bedingungen können schlechter sein als erwartet. Sehen wir uns an, wie Sie dieses Problem in einer realen Situation untersuchen würden.

  1. Klicken Sie oben auf der Seite auf Leistung, um zum Haupttab Dashboard zurückzukehren: 640b696b79d90103.png
  2. Klicken Sie unten auf der Seite in der Tabelle „Traces“ (Traces) auf den Tab Network requests (Netzwerkanfragen). In dieser Tabelle sehen Sie alle Netzwerkanfragen Ihrer App, die in URL-Muster zusammengefasst sind, einschließlich des URL-Musters images.unsplash.com/**. Wenn Sie den Wert dieser Reaktionszeit mit der Gesamtzeit vergleichen, die für das Herunterladen und Verarbeiten des Bildes benötigt wird (d.h. die Dauer des splash_seasonal_image_processing-Traces), sehen Sie, dass ein Großteil der Zeit für das Herunterladen des Bildes aufgewendet wird.

6f92ce0f23494507.png

Leistungsergebnisse

Mit Firebase Performance Monitoring haben Sie die folgenden Auswirkungen auf die Endnutzer mit aktivierter neuer Funktion beobachtet:

  1. Die auf SplashScreenActivity verbrachte Zeit ist gestiegen.
  2. Die Dauer für splash_seasonal_image_processing war sehr lang.
  3. Die Verzögerung war auf die Reaktionszeit für den Bilddownload und die entsprechende Verarbeitungszeit zurückzuführen, die für das Bild erforderlich war.

Im nächsten Schritt minimieren Sie die Auswirkungen auf die Leistung, indem Sie die Funktion zurücksetzen und herausfinden, wie Sie die Implementierung der Funktion verbessern können.

10. Funktion zurücksetzen

Es ist nicht wünschenswert, dass Nutzer während des Splash-Screens länger warten müssen. Einer der Hauptvorteile von Remote Config ist die Möglichkeit, die Einführung zu pausieren und rückgängig zu machen, ohne eine weitere Version für Ihre Nutzer veröffentlichen zu müssen. So können Sie schnell auf Probleme reagieren (z. B. die Leistungsprobleme, die Sie im letzten Schritt entdeckt haben) und die Anzahl unzufriedener Nutzer minimieren.

Als schnelle Abhilfe setzen Sie den Prozentsatz für die Einführung auf 0 zurück, damit alle Nutzer wieder das Standardbild sehen:

  1. Kehren Sie in der Firebase Console zur Seite Remote Config zurück.
  2. Klicken Sie oben auf der Seite auf Bedingungen.
  3. Klicken Sie auf die Seasonal image rollout-Bedingung, die Sie zuvor hinzugefügt haben.
  4. Ändern Sie das Perzentil in 0 %.
  5. Klicken Sie auf Bedingung speichern.
  6. Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen.

18c4f1cbac955a04.png

Starten Sie die App in Android Studio neu. Nun sollte der ursprüngliche leere Hauptbildschirm angezeigt werden:

d946cab0df319e50.png

11. Leistungsprobleme beheben

Im Codelab haben Sie bereits herausgefunden, dass das Herunterladen eines Bildes für den Ladebildschirm die Verlangsamung Ihrer App verursacht hat. Wenn Sie sich das heruntergeladene Bild genauer ansehen, stellen Sie fest, dass Sie die Originalauflösung des Bildes verwendet haben, die über 2 MB lag. Eine schnelle Lösung für Ihr Leistungsproblem besteht darin, die Qualität auf eine angemessenere Auflösung zu reduzieren, damit das Bild schneller heruntergeladen wird.

Remote Config-Wert noch einmal bereitstellen

  1. Kehren Sie in der Firebase Console zur Seite Remote Config zurück.
  2. Klicken Sie für den Parameter seasonal_image_url auf das Symbol Bearbeiten.
  3. Aktualisieren Sie den Wert für die saisonale Bildbereitstellung auf https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 und klicken Sie auf Speichern.

828dd1951a2ec4a4.png

  1. Klicken Sie oben auf der Seite auf den Tab Bedingungen.
  2. Klicken Sie auf Saisonale Bildbereitstellung und stellen Sie das Perzentil wieder auf 100 % ein.
  3. Klicken Sie auf Bedingung speichern.

1974fa3bb789f36c.png

  1. Klicken Sie auf die Schaltfläche Änderungen veröffentlichen.

12. Korrektur testen und Warnungen einrichten

App lokal ausführen

Führen Sie die App noch einmal aus, nachdem Sie den neuen Konfigurationswert so festgelegt haben, dass eine andere Download-Bild-URL verwendet wird. Die Zeit, die auf dem Splash-Screen verbracht wird, sollte diesmal kürzer sein als zuvor.

b0cc91b6e48fb842.png

Leistung der Änderungen ansehen

Kehren Sie in der Firebase Console zum Leistungs-Dashboard zurück, um sich die Messwerte anzusehen.

  1. Dieses Mal verwenden Sie die Tabelle „Traces“, um zur Detailseite zu gelangen. Klicken Sie unten in der Tracetabelle auf dem Tab Benutzerdefinierte Traces auf den benutzerdefinierten Trace splash_seasonal_image_processing, um sich noch einmal eine detailliertere Ansicht des zugehörigen Messwerts für die Dauer anzusehen.

2d7aaca03112c062.png

  1. Klicken Sie auf das benutzerdefinierte Attribut seasonal_image_url_attribute, um die Aufschlüsselung der benutzerdefinierten Attribute noch einmal aufzurufen. Wenn Sie den Mauszeiger auf die URLs bewegen, sehen Sie einen Wert, der der neuen URL für das Bild in reduzierter Größe entspricht: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 (mit dem ?w=640 am Ende). Der Dauerwert für dieses Bild ist deutlich kürzer als der Wert für das vorherige Bild und für Ihre Nutzer akzeptabler.

10e30c037a4237a2.png

  1. Nachdem Sie die Leistung Ihres Startbildschirms verbessert haben, können Sie Benachrichtigungen einrichten, die Sie informieren, wenn ein Trace einen von Ihnen festgelegten Grenzwert überschreitet. Öffnen Sie das Leistungs-Dashboard, klicken Sie für splash_screen_trace auf das Dreipunkt-Menü und dann auf Benachrichtigungseinstellungen.

4bd0a2a1faa14479.png

  1. Klicken Sie auf den Schieberegler, um die Benachrichtigung Dauer zu aktivieren. Legen Sie den Grenzwert etwas über dem Wert fest, den Sie gesehen haben. Wenn Ihr splash_screen_trace den Grenzwert überschreitet, erhalten Sie eine E‑Mail.
  1. Klicken Sie auf Speichern, um die Benachrichtigung zu erstellen. Scrollen Sie nach unten zur Tabelle mit Traces und klicken Sie auf den Tab Benutzerdefinierte Traces. Dort sehen Sie, dass die Benachrichtigung aktiviert ist.

2bb93639e2218d1.png

13. Glückwunsch!

Glückwunsch! Sie haben das Firebase Performance Monitoring SDK aktiviert und Traces erfasst, um die Leistung einer neuen Funktion zu messen. Sie haben wichtige Leistungsmesswerte für die Einführung einer neuen Funktion im Blick behalten und schnell reagiert, als ein Leistungsproblem entdeckt wurde. Das war alles möglich, weil wir mit Remote Config Konfigurationsänderungen vornehmen und Leistungsprobleme in Echtzeit beobachten konnten.

Behandelte Themen

  • Firebase Performance Monitoring SDK in Ihre App einbinden
  • Dem Code einen benutzerdefinierten Code-Trace hinzufügen, um eine bestimmte Funktion zu messen
  • Einrichten eines Remote Config-Parameters und eines bedingten Werts zum Steuern/Einführen eines neuen Features
  • Wissen, wie das Dashboard zur Leistungsüberwachung verwendet wird, um Probleme während eines Roll-outs zu erkennen
  • Leistungsbenachrichtigungen einrichten, damit Sie informiert werden, wenn die Leistung Ihrer App einen von Ihnen festgelegten Grenzwert überschreitet

Weitere Informationen