Wprowadzenie do Monitorowania wydajności na platformach Apple

Zanim zaczniesz

Jeśli jeszcze tego nie zrobisz, dodaj Firebase do projektu Apple.

Krok 1: Dodaj Performance Monitoring do swojej aplikacji

Gdy dodasz pakiet SDK Performance Monitoring, Firebase automatycznie zacznie zbierać dane dotyczące renderowania ekranu aplikacji, dane związane z cyklem życia aplikacji (np. czas uruchamiania aplikacji) oraz dane dotyczące żądań sieciowych HTTP/S.

Do instalacji zależności Firebase i do zarządzania nimi możesz używać menedżera pakietów Swift.

  1. Po otwarciu projektu aplikacji wybierz w Xcode kolejno File (Plik) > Add Packages (Dodaj pakiety).
  2. Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wybierz bibliotekę Performance Monitoring.
  5. Dodaj flagę -ObjC do sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji celu.
  6. Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać Twoje zależności w tle.

Następnie skonfiguruj moduł Firebase:

  1. Zaimportuj moduł FirebaseCore w UIApplicationDelegate, a także wszystkie inne moduły Firebase, których używa delegat aplikacji. Na przykład, aby używać Cloud Firestore i Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Skonfiguruj FirebaseApp współdzieloną instancję w metodzie application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Jeśli używasz SwiftUI, musisz utworzyć delegata aplikacji i dołączyć go do struktury App za pomocą UIApplicationDelegateAdaptor lub NSApplicationDelegateAdaptor. Musisz też wyłączyć swizzling delegata aplikacji. Więcej informacji znajdziesz w instrukcjach dotyczących SwiftUI.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Ponownie skompiluj aplikację.

Krok 2. Wygeneruj zdarzenia związane z wydajnością, aby wyświetlić wstępne dane

Firebase zaczyna przetwarzać zdarzenia, gdy dodasz pakiet SDK do aplikacji. Jeśli nadal pracujesz lokalnie, korzystaj z aplikacji, aby generować zdarzenia na potrzeby wstępnego zbierania i przetwarzania danych.

  1. Kontynuuj tworzenie aplikacji za pomocą symulatora lub urządzenia testowego.

  2. Generuj zdarzenia, przełączając aplikację między tłem a pierwszym planem, korzystając z niej przez przechodzenie między ekranami lub wywołując żądania sieciowe.

  3. Otwórz panel Performance (Wydajność) w konsoli Firebase. W ciągu kilku minut powinny pojawić się wstępne dane.

    Jeśli nie widzisz wstępnych danych, zapoznaj się ze wskazówkami dotyczącymi rozwiązywania problemów.

Krok 3.: (Opcjonalnie) Wyświetlaj komunikaty z dziennika dotyczące zdarzeń związanych z wydajnością

  1. Włącz rejestrowanie debugowania w ten sposób:

    1. W Xcode (co najmniej w wersji 26.2) kliknij kolejno Product (Produkt) > Scheme (Schemat) > Edit scheme (Edytuj schemat).
    2. W menu po lewej stronie kliknij Run (Uruchom), a następnie wybierz kartę Arguments (Argumenty).
    3. W sekcji Arguments Passed on Launch (Argumenty przekazane podczas uruchamiania) dodaj -FIRDebugEnabled.
  2. Sprawdź, czy w komunikatach z dziennika nie ma komunikatów o błędach.

  3. Performance Monitoring oznacza komunikaty z dziennika tagiem Firebase/Performance, dzięki czemu możesz je filtrować.

  4. Sprawdź, czy występują te typy dzienników, które wskazują, że Performance Monitoring jest rejestrowanie zdarzeń związanych z wydajnością:

    • Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
    • Logging network request trace: URL
  5. Kliknij adres URL, aby wyświetlić dane w konsoli Firebase. Aktualizacja danych w panelu może potrwać kilka minut.

Jeśli Twoja aplikacja nie rejestruje zdarzeń związanych z wydajnością, zapoznaj się ze wskazówkami dotyczącymi rozwiązywania problemów.

Krok 4.: (Opcjonalnie) Dodaj niestandardowe monitorowanie konkretnego kodu

Aby monitorować dane o skuteczności związane z konkretnym kodem w aplikacji, możesz instrumentować niestandardowe logi czasu kodu.

Dzięki niestandardowemu logowi czasu kodu możesz zmierzyć, ile czasu zajmuje aplikacji wykonanie określonego zadania lub zestawu zadań, np. wczytanie zestawu obrazów lub wysłanie zapytania do bazy danych. Domyślną metryką niestandardowego logu czasu kodu jest jego czas trwania, ale możesz też dodać metryki niestandardowe, takie jak trafienia w pamięci podręcznej i ostrzeżenia o pamięci.

W kodzie definiujesz początek i koniec niestandardowego logu czasu kodu (oraz dodajesz dowolne metryki niestandardowe) za pomocą interfejsu API udostępnianego przez pakiet SDK Performance Monitoring.

Więcej informacji o tych funkcjach i o tym, jak dodać je do aplikacji, znajdziesz w artykule Dodawanie monitorowania konkretnego kodu.

Krok 5. Wdróż aplikację i sprawdź wyniki

Gdy sprawdzisz Performance Monitoring za pomocą symulatora Xcode i co najmniej 1 urządzenia testowego, możesz wdrożyć zaktualizowaną wersję aplikacji dla użytkowników.

Dane o skuteczności możesz monitorować w panelu Performance w konsoliFirebase.

Znane problemy

  • Performance Monitoring ma znane problemy ze zgodnością z GTMSQLite. Nie zalecamy używania Performance Monitoring w aplikacjach, które korzystają z GTMSQLite.
  • Podmiana metody po wywołaniu FirebaseApp.configure() może zakłócać działanie Performance Monitoring pakietu SDK.
  • Znane problemy z symulatorem iOS 8.0–8.2 uniemożliwiają Performance Monitoring od rejestrowania zdarzeń związanych z wydajnością. Te problemy zostały rozwiązane w symulatorze iOS 8.3 i nowszych wersjach.
  • Połączenia nawiązywane za pomocą backgroundSessionConfiguration w NSURLSession będą trwały dłużej niż oczekiwano. Te połączenia są wykonywane poza procesem, a czasy odzwierciedlają zdarzenia wywołania zwrotnego w procesie.

Dalsze kroki