Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Adicionar monitoramento personalizado para solicitações de rede específicas (apps iOS e Android)

O Monitoramento de desempenho coleta traces para ajudar você a monitorar o desempenho do app. Um trace é um relatório de dados de desempenho capturado entre dois momentos no app.

Os traces de solicitação de rede coletados automaticamente pelo Monitoramento de desempenho incluem a maioria das solicitações de rede do app. No entanto, algumas delas podem não ser reportadas ou talvez você precise usar uma biblioteca diferente para fazer solicitações de rede. Nesses casos, use a API Performance Monitoring para instrumentar manualmente os traces de solicitação de rede personalizados. Os traces de solicitação de rede personalizados só são compatíveis com apps iOS e Android.

As métricas padrão de um trace de solicitação de rede personalizado são as mesmas dos traces de solicitação de rede coletados automaticamente pelo Monitoramento de desempenho, especificamente o tempo de resposta, o tamanho do payload de solicitação e resposta e a taxa de sucesso. Os traces de solicitação de rede personalizados não são compatíveis com a adição de métricas personalizadas.

No seu código, você define o início e o fim de um trace de solicitação de rede personalizado usando as APIs fornecidas pelo SDK do Monitoramento de desempenho.

Os traces de solicitação de rede personalizados aparecem no Console do Firebase ao lado das solicitações de rede que o Monitoramento de desempenho captura automaticamente (na subguia Solicitações de rede da tabela de traces).

Adicionar traces de solicitação de rede personalizados

Use a API HTTPMetric do Monitoramento de desempenho (Swift | Obj-C) para adicionar traces de solicitação de rede personalizados e, assim, monitorar solicitações de rede específicas.

Para equipar manualmente as solicitações de rede personalizadas no Monitoramento de desempenho, adicione o seguinte código:

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];
}

Os traces de solicitação de rede personalizados também aceitam a adição de atributos personalizados (Swift | Obj-C), mas não de métricas personalizadas.