Добавить настраиваемый мониторинг для определенных сетевых запросов (приложения Apple и Android)

Мониторинг производительности собирает трассировки , чтобы помочь вам контролировать производительность вашего приложения. Трассировка — это отчет о производительности, полученный между двумя моментами времени в вашем приложении.

Трассировки сетевых запросов, автоматически собираемые службой мониторинга производительности, включают большинство сетевых запросов для вашего приложения. Однако о некоторых запросах может не сообщаться, или вы можете использовать другую библиотеку для выполнения сетевых запросов. В этих случаях вы можете использовать API мониторинга производительности для ручной обработки пользовательских трассировок сетевых запросов . Пользовательские трассировки сетевых запросов поддерживаются только для приложений Apple и Android.

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

В коде вы определяете начало и конец трассировки пользовательского сетевого запроса с помощью API-интерфейсов, предоставляемых пакетом SDK для мониторинга производительности.

Пользовательские трассировки сетевых запросов отображаются в консоли Firebase вместе с сетевыми запросами, которые автоматически фиксируются мониторингом производительности (на подвкладке « Сетевые запросы » в таблице трассировок).

Добавить пользовательские трассировки сетевых запросов

Используйте HTTPMetric API мониторинга производительности ( Swift | Obj-C ), чтобы добавить пользовательские трассировки сетевых запросов для мониторинга определенных сетевых запросов.

Чтобы вручную настроить настраиваемые сетевые запросы в мониторинге производительности, добавьте код, подобный следующему:

Быстрый

Примечание. Этот продукт Firebase недоступен на macOS, Mac Catalyst и watchOS.
guard let metric = HTTPMetric(url: "https://www.google.com", httpMethod: .get) else { return }

metric.start()
guard let url = URL(string: "https://www.google.com") else { return }
let request: URLRequest = URLRequest(url:url)
let session = URLSession(configuration: .default)
let dataTask = session.dataTask(with: request) { (urlData, response, error) in
        if let httpResponse = response as? HTTPURLResponse {
         metric.responseCode = httpResponse.statusCode
        }
        metric.stop()
}
dataTask.resume()

Цель-C

Примечание. Этот продукт Firebase недоступен на macOS, Mac Catalyst и watchOS.
@property (nonatomic) FIRHTTPMetric *metric;

- (void)beginManualNetworkInstrumentation {
  self.metric =
      [[FIRHttpMetric alloc] initWithURL:[NSURL URLWithString:@"https://www.google.com"]
                              HTTPMethod:FIRHTTPMethodGET];

  [self.metric start];

  NSURLRequest *request =
      [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]];
  NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                                delegate:self];
  [connection resume];
}

- (void)connection:(NSURLConnection *)connection
    didReceiveResponse:(NSURLResponse *) response {
  NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response
  self.metric.responseCode = httpResponse.statusCode;
  [self.metric stop];
}

Настраиваемые трассировки сетевых запросов также поддерживают добавление настраиваемых атрибутов ( Swift | Obj-C ), но не настраиваемых метрик.

Следующие шаги

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