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

Подготовка

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

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

После добавления SDK Performance Monitoring 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.
  • Подмена метода после вызова FirebaseApp.configure() может помешать работе SDK Performance Monitoring.
  • Известные проблемы с симулятором iOS 8.0–8.2 не позволяют Performance Monitoring регистрировать события производительности. Эти проблемы устранены в симуляторе iOS 8.3 и более поздних версиях.
  • Подключения, установленные с помощью backgroundSessionConfiguration NSURLSession, будут выполняться дольше, чем ожидалось. Эти подключения выполняются вне процесса, а время отражает события обратного вызова в процессе.

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