Dodawanie niestandardowego monitorowania na potrzeby konkretnych żądań sieciowych (aplikacje Apple i na Androida)


Performance Monitoring zbiera ślady, które pomagają Ci monitorować wydajność aplikacji. O jest raport zawierający dane dotyczące wydajności zebrane między dwoma punktami w czasie do aplikacji.

Logi czasu żądań sieciowych zbierane automatycznie przez Performance Monitoring obejmują większość żądań sieciowych dotyczących Twojej aplikacji. Niektóre żądania mogą jednak nie być zgłaszane lub możesz używać innej biblioteki do wysyłania żądań sieciowych. W takich przypadkach możesz ręcznie zaimplementować interfejs API Performance Monitoring, aby tworzyć niestandardowe ścieżki żądań sieci. Niestandardowe logi żądań sieciowych są obsługiwane tylko w przypadku aplikacji na urządzenia z systemem iOS i Androidem.

Domyślne dane w przypadku niestandardowego logowania żądań sieciowych są takie same jak dane logowania żądań sieciowych zbierane automatycznie przez Performance Monitoring, a w szczególności czas odpowiedzi, rozmiar odpowiedzi i zapytania oraz odsetek powodzeń. Ścieżki żądań sieci niestandardowych nie obsługują dodawania danych niestandardowych.

W kodzie definiujesz początek i koniec niestandardowego śledzenia żądań sieci za pomocą interfejsów API dostępnych w pakiecie SDK Performance Monitoring.

Niestandardowe logi czasu żądań sieciowych pojawiają się w konsoli Firebase obok żądań sieciowych, które Performance Monitoring rejestruje automatycznie (na karcie Żądania sieciowe w tabeli z logami).

Dodaj niestandardowe logi czasu żądań sieciowych

Używanie interfejsu HTTPMetric API Performance Monitoring (Swift) | Obj-C) możesz dodać niestandardowe logi czasu żądań sieciowych w celu monitorowania konkretnych żądań sieciowych.

Aby ręcznie dodać niestandardowe żądania sieci do pliku Performance Monitoring, dodaj kod podobny do tego:

Swift

Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i 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

Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i 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];
}

Niestandardowe logi czasu żądań sieciowych obsługują też dodawanie atrybutów niestandardowych (Swift | Obj-C) ale nie danych niestandardowych.

Dalsze kroki

  • Skonfiguruj alerty dotyczące żądań sieciowych, które pogarszają działanie aplikacji. Możesz na przykład skonfigurować alert e-mailowy dla swojego zespołu, jeśli czas odpowiedzi na określony wzorzec adresu URL przekroczy ustawiony przez Ciebie próg.