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

O recurso 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ções 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ções de rede personalizados. 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 personalizado são as mesmas dos traces de solicitações 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çõ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 personalizado usando as APIs fornecidas pelo SDK do Monitoramento de desempenho.

Os traces de solicitações 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ções de rede personalizados

Use a API HTTPMetric do Monitoramento de desempenho (Swift | Obj-C) para adicionar traces de solicitações 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 código a seguir:

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ê.