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


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

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

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

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

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

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

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

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

Быстрый

Примечание: этот продукт 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()

Objective-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 превысит установленный вами порог.