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