Wprowadzenie do Monitorowania wydajności na platformach Apple

Zanim zaczniesz

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

Krok 1. Dodaj do aplikacji Performance Monitoring

Po dodaniu pakietu SDK Performance Monitoring Firebase automatycznie zacznie zbierać dane dotyczące renderowania ekranu, 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 zarządzania nimi możesz używać menedżera pakietów Swift.

  1. Po otwarciu projektu aplikacji w Xcode wybierz Plik > 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 Inne flagi linkera w ustawieniach kompilacji docelowej.
  6. Gdy to zrobisz, Xcode automatycznie zacznie wyszukiwać i pobierać zależności w tle.

Następnie skonfiguruj moduł Firebase:

  1. Zaimportuj moduł FirebaseCore w pliku UIApplicationDelegate oraz wszystkie inne moduły Firebase, których używa delegowany obiekt aplikacji. Aby na przykład użyć właściwości Cloud FirestoreAuthentication:

    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 współdzieloną instancję FirebaseApp w metodzie application(_:didFinishLaunchingWithOptions:) w delegacie 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ć obiekt delegujący aplikacji i dołączyć go do struktury App za pomocą funkcji UIApplicationDelegateAdaptor lub NSApplicationDelegateAdaptor. Musisz też wyłączyć swizlowanie zastępników aplikacji. Więcej informacji znajdziesz w instrukcjach 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. Ponowne skompilowanie aplikacji.

Krok 2. Wygeneruj zdarzenia dotyczące skuteczności na potrzeby wyświetlania początkowych danych

Firebase zaczyna przetwarzać zdarzenia, gdy dodasz pakiet SDK do aplikacji. Jeśli nadal pracujesz nad aplikacją lokalnie, generuj zdarzenia, aby umożliwić początkowe gromadzenie i przetwarzanie danych.

  1. kontynuować tworzenie aplikacji za pomocą symulatora lub urządzenia testowego;

  2. generować zdarzenia, przełączając aplikację kilka razy między tłem a płaszczyzną, nawiązując z nią interakcje przez przechodzenie między ekranami lub wywołując żądania sieci;

  3. Otwórz panel Wydajność w konsoli Firebase. Pierwsze dane powinny się wyświetlić w ciągu kilku minut.

    Jeśli nie widzisz wyświetlanych danych początkowych, zapoznaj się z wskazówkami dotyczącymi rozwiązywania problemów.

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

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

    1. W Xcode (wersja co najmniej 15.2) kliknij Produkt > Schemat > Edytuj schemat.
    2. W menu po lewej stronie kliknij Uruchom, a potem wybierz kartę Argumenty.
    3. W sekcji Argumenty przekazywane przy uruchamianiu dodaj -FIRDebugEnabled.
  2. Sprawdź, czy w logach nie ma komunikatów o błędach.

  3. Performance Monitoring oznacza swoje komunikaty logowania tagiem Firebase/Performance, aby można je było filtrować.

  4. Sprawdź, czy występują te typy dzienników, które wskazują, że Performance Monitoring rejestruje zdarzenia dotyczące skutecznoś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 chwil.

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

Krok 4. (Opcjonalnie) Dodaj niestandardowe monitorowanie określonego kodu

Aby monitorować dane o wydajności powiązane z konkretnym kodem w aplikacji, możesz użyć niestandardowych logów kodu.

Dzięki niestandardowemu śledzeniu kodu możesz mierzyć, ile czasu zajmuje aplikacji wykonanie określonego zadania lub zestawu zadań, takich jak wczytywanie zestawu obrazów czy wysyłanie zapytania do bazy danych. Domyślnym rodzajem danych dla śledzenia kodu niestandardowego jest jego czas trwania, ale możesz też dodać niestandardowe dane, takie jak trafienia do pamięci podręcznej i ostrzeżenia dotyczące pamięci.

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

Aby dowiedzieć się więcej o tych funkcjach i sposobie ich dodawania do aplikacji, przeczytaj artykuł Dodawanie monitorowania określonego kodu.

Krok 5. Wprowadź aplikację i sprawdź wyniki

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

Dane o skuteczności możesz sprawdzać w panelu Skuteczność w konsoli Firebase.

Znane problemy

  • Performance Monitoring ma znane problemy ze zgodnością z GTMSQLite. Zalecamy, aby nie używać Performance Monitoring w przypadku aplikacji korzystających z GTMSQLite.
  • Przełączanie metod po wywołaniu funkcji FirebaseApp.configure() może zakłócać działanie pakietu SDK Performance Monitoring.
  • Znane problemy z Symulatorem iOS 8.0–8.2 uniemożliwiają Performance Monitoring rejestrowanie zdarzeń związanych z wydajnością. Te problemy zostały rozwiązane w Symulatorze iOS 8.3 i późniejszych wersjach.
  • Połączenia nawiązywane za pomocą funkcji backgroundSessionConfiguration w bibliotece NSURLSession będą miały dłuższy czas nawiązywania niż oczekiwano. Te połączenia są wykonywane poza procesem, a czasy odzwierciedlają zdarzenia wywołania zwrotnego w procesie.

Dalsze kroki