Wprowadzenie do Monitorowania wydajności na platformach Apple

Zanim zaczniesz

Dodaj Firebase do projektu aplikacji na urządzenia Apple, jeśli nie korzystasz w nim jeszcze z tej usługi.

Krok 1. Dodaj Performance Monitoring do aplikacji

Po dodaniu pakietu SDK Performance Monitoring Firebase automatycznie zaczyna zbierać dane dotyczące renderowania ekranu aplikacji, dane związane z jej cyklem życia (np. czas rozpoczęcia aplikacji) oraz dane dotyczące żądań sieciowych HTTP/S.

Do instalowania zależności Firebase i zarządzania nimi używaj menedżera pakietów Swift.

  1. W Xcode, gdy projekt aplikacji jest otwarty, kliknij File > Add Packages (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 Other Linker Flags (Inne flagi łączące) w ustawieniach kompilacji celu.
  6. Gdy skończysz, Xcode zacznie automatycznie przetwarzać i pobierać zależności w tle.

Następnie skonfiguruj moduł Firebase:

  1. Zaimportuj moduł FirebaseCore do pliku UIApplicationDelegate oraz wszystkie inne moduły Firebase, których używa delegat aplikacji. Aby na przykład użyć właściwości 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 udostępnioną instancję FirebaseApp 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ć obiekt delegowany 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. Skompiluj ponownie aplikację.

Krok 2. Wygeneruj zdarzenia wydajności, aby wyświetlić dane początkowe

Firebase zacznie przetwarzać zdarzenia, gdy dodasz pakiet SDK do aplikacji. Jeśli nadal pracujesz nad aplikacją lokalnie, wejdź z nią w interakcję, aby wygenerować zdarzenia na potrzeby początkowego zbierania i przetwarzania danych.

  1. Kontynuuj tworzenie aplikacji, używając symulatora lub urządzenia testowego.

  2. Wygeneruj zdarzenia, kilkakrotnie przełączając aplikację między tłem a pierwszym planem, wchodząc z nią w interakcje przez przechodzenie między ekranami lub wywołując żądania sieciowe.

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

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

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

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

    1. W Xcode (w wersji co najmniej 26.2) kliknij 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 przekazywane przy uruchamianiu) dodaj -FIRDebugEnabled.
  2. Sprawdź, czy w komunikatach logu nie ma komunikatów o błędach.

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

  4. Sprawdź, czy występują te typy logów, które wskazują, że Performance Monitoring rejestruje zdarzenia związane 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. Zanim dane zostaną zaktualizowane w panelu, może minąć kilka minut.

Jeśli 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 powiązane z konkretnym kodem w aplikacji, możesz instrumentować ślady niestandardowego kodu.

Dzięki niestandardowemu śledzeniu kodu możesz mierzyć, ile czasu zajmuje aplikacji wykonanie określonego zadania lub zestawu zadań, np. wczytanie zestawu obrazów lub wysłanie zapytania do bazy danych. Domyślnym wskaźnikiem niestandardowego śladu kodu jest czas jego trwania, ale możesz też dodać wskaźniki niestandardowe, takie jak trafienia w pamięci podręcznej i ostrzeżenia o pamięci.

W kodzie definiujesz początek i koniec niestandardowego śladu kodu (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 konkretnego kodu.

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

Po zweryfikowaniu 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 Wydajność w konsoli Firebase.

Znane problemy

  • Performance Monitoring ma znane problemy ze zgodnością z GTMSQLite. Nie zalecamy używania Performance Monitoring z aplikacjami, które korzystają z GTMSQLite.
  • Podmiana metody po wywołaniu FirebaseApp.configure() może zakłócać działanie pakietu SDK Performance Monitoring.
  • Znane problemy z symulatorem iOS 8.0–8.2 uniemożliwiają usłudze Performance Monitoring rejestrowanie 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 NSURLSession będą trwały dłużej niż oczekiwano. Te połączenia są realizowane poza procesem, a czasy odzwierciedlają zdarzenia wywołania zwrotnego w procesie.

Dalsze kroki