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


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

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

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

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

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

Как добавить специальные трассировки сетевых запросов

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

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

Swift

Примечание. Этот продукт 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 превышает заданное вами пороговое значение.