Начало работы с мониторингом производительности для платформ Apple

Подготовка

Если вы ещё этого не сделали, добавьте Firebase в проект для Apple.

Шаг 1. Добавьте в приложение Performance Monitoring

После того как вы добавите Performance Monitoring SDK, Firebase автоматически начнет собирать данные о рендеринге экрана, жизненном цикле приложения (например, времени запуска) и сетевых запросах HTTP/S.

Для установки зависимостей Firebase и управления ими используйте Swift Package Manager.

  1. Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Add Packages (Добавить пакеты).
  2. Когда появится запрос, добавьте хранилище Firebase SDK для платформ Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Выберите библиотеку Performance Monitoring.
  5. Добавьте флаг -ObjC в раздел Other Linker Flags (Другие флаги компоновщика) в настройках сборки целевого объекта.
  6. После этого Xcode автоматически начнет распознавать и скачивать зависимости в фоновом режиме.

Затем настройте модуль Firebase:

  1. Импортируйте модуль FirebaseCore в UIApplicationDelegate, а также любые другие модули Firebase, которые использует делегат вашего приложения. Например, чтобы использовать свойства Cloud Firestore и 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. Настройте общий экземпляр FirebaseApp в методе application(_:didFinishLaunchingWithOptions:) делегата приложения:

    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. Если вы используете SwiftUI, вам нужно создать делегат приложения и прикрепить его к структуре App с помощью UIApplicationDelegateAdaptor или NSApplicationDelegateAdaptor. Также необходимо отключить подмену делегата приложения. Подробнее о 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. Перекомпилируйте приложение.

Шаг 2. Создайте события производительности для первоначального отображения данных

Firebase начинает обрабатывать события, когда вы успешно добавляете SDK в приложение. Если вы ещё разрабатываете приложение локально, взаимодействуйте с ним, чтобы генерировать события для первоначального сбора и обработки данных.

  1. Продолжайте разрабатывать приложение, используя симулятор или тестовое устройство.

  2. Создайте события, несколько раз переключив приложение между фоновым и активным режимами, взаимодействуя с ним, переходя между экранами и/или активируя сетевые запросы.

  3. Откройте панель управления "Эффективность" в консоли Firebase. Первые данные появятся в течение нескольких минут.

    Если вы не видите исходные данные, ознакомьтесь с советами по устранению неполадок.

Шаг 3. (Необязательно.) Просматривайте сообщения журнала о событиях, связанных с производительностью

  1. Включите журнал отладки, выполнив следующие действия:

    1. В Xcode (версия 26.2 или более поздняя) выберите Product (Продукт) > Scheme (Схема) > Edit scheme (Изменить схему).
    2. В меню слева нажмите Run (Выполнить) и перейдите на вкладку Arguments (Аргументы).
    3. В разделе Arguments Passed on Launch (Аргументы, передаваемые при запуске) добавьте -FIRDebugEnabled.
  2. Проверьте, нет ли в сообщениях журнала ошибок.

  3. Performance Monitoring добавляет к сообщениям в журнале тег Firebase/Performance, чтобы вы могли их фильтровать.

  4. Проверьте, есть ли в журналах следующие типы записей, указывающие на то, что Performance Monitoring регистрирует события производительности:

    • Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
    • Logging network request trace: URL
  5. Нажмите на URL, чтобы посмотреть данные в консоли Firebase. Обновление данных на панели управления может занять несколько минут.

Если ваше приложение не регистрирует события производительности, ознакомьтесь с советами по устранению неполадок.

Шаг 4. (Необязательно.) Добавьте специальный мониторинг для определенного кода

Чтобы отслеживать данные об эффективности, связанные с определенным кодом в приложении, можно добавить трассировку пользовательского кода.

С помощью специальной трассировки кода можно измерить, сколько времени требуется приложению для выполнения определенной задачи или набора задач, например загрузки набора изображений или запроса к базе данных. По умолчанию для трассировки специального кода используется показатель продолжительности, но вы можете добавить и другие показатели, например количество попаданий в кеш и предупреждений о нехватке памяти.

В коде вы определяете начало и конец трассировки пользовательского кода (и добавляете любые нужные пользовательские показатели), используя API, предоставленный Performance Monitoring SDK.

Подробнее о том, как добавить в приложение функции мониторинга определенного кода…

Шаг 5. Разверните приложение и проверьте результаты

После того как вы проверите Performance Monitoring с помощью симулятора Xcode и одного или нескольких тестовых устройств, вы можете развернуть обновленную версию приложения для пользователей.

Данные об эффективности можно отслеживать на панели "Эффективность" в консоли Firebase.

Известные проблемы

  • Performance Monitoring имеет известные проблемы с совместимостью с GTMSQLite. Мы не рекомендуем использовать Performance Monitoring с приложениями, в которых применяется GTMSQLite.
  • Метод swizzling после вызова FirebaseApp.configure() может помешать работе SDK Performance Monitoring.
  • Из-за известных проблем с симулятором iOS 8.0–8.2 Performance Monitoring не может регистрировать события эффективности. Эти проблемы устранены в симуляторе iOS 8.3 и более поздних версий.
  • При использовании метода backgroundSessionConfiguration класса NSURLSession время подключения будет больше, чем ожидалось. Эти подключения выполняются вне процесса, а время отражает события обратного вызова в процессе.

Дальнейшие действия