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


O Performance Monitoring 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ções de rede coletados automaticamente pelo Performance Monitoring 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, é possível usar a API Performance Monitoring para instrumentar manualmente traces de solicitação de rede personalizada. Os traces de solicitações de rede personalizados só oferecem suporte aos apps para Apple e Android.

As métricas padrão de um trace de solicitação de rede personalizada são as mesmas dos traces de solicitação de rede coletados automaticamente pelo Performance Monitoring, especificamente o tempo de resposta, o tamanho do payload de solicitação e resposta e a taxa de sucesso. Os traces de solicitações de rede personalizados não oferecem suporte à 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 personalizada usando as APIs fornecidas pelo SDK do Performance Monitoring.

Os traces de solicitação de rede personalizada aparecem no console do Firebase com as solicitações de rede que o Performance Monitoring captura automaticamente (na subguia Solicitações de rede da tabela de traces).

Adicionar traces de solicitações de rede personalizados

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

Para instrumentar manualmente as solicitações de rede personalizadas no Performance Monitoring, adicione o seguinte código:

Swift

Observação: este produto do Firebase não está disponível para destinos macOS, Mac Catalyst e 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

Observação: este produto do Firebase não está disponível para destinos macOS, Mac Catalyst e 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];
}

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

Próximas etapas

  • Configure alertas para solicitações de rede que estejam afetando o desempenho do app. Por exemplo, configure um alerta por e-mail para sua equipe que será enviado quando o tempo de resposta para um padrão de URL específico exceder um limite definido por você.