Agregue monitoreo personalizado para solicitudes de red específicas (aplicaciones de Apple y Android)

Performance Monitoring recopila seguimientos para ayudarle a monitorear el rendimiento de su aplicación. Un seguimiento es un informe de datos de rendimiento capturados entre dos puntos en el tiempo en su aplicación.

Los seguimientos de solicitudes de red recopilados automáticamente por Performance Monitoring incluyen la mayoría de las solicitudes de red para su aplicación. Sin embargo, es posible que algunas solicitudes no se informen o que usted utilice una biblioteca diferente para realizar solicitudes de red. En estos casos, puede utilizar la API de supervisión del rendimiento para instrumentar manualmente seguimientos de solicitudes de red personalizados . Los seguimientos de solicitudes de red personalizados solo son compatibles con aplicaciones de Apple y Android.

Las métricas predeterminadas para un seguimiento de solicitudes de red personalizado son las mismas que las de los seguimientos de solicitudes de red recopiladas automáticamente por Performance Monitoring, específicamente el tiempo de respuesta, el tamaño de la carga útil de la respuesta y la solicitud y la tasa de éxito. Los seguimientos de solicitudes de red personalizados no admiten la adición de métricas personalizadas.

En su código, define el principio y el final de un seguimiento de solicitud de red personalizado mediante las API proporcionadas por el SDK de Performance Monitoring.

Los seguimientos de solicitudes de red personalizados aparecen en Firebase console junto con las solicitudes de red que Performance Monitoring captura automáticamente (en la subpestaña Solicitudes de red de la tabla de seguimientos).

Agregar seguimientos de solicitudes de red personalizados

Utilice la API HTTPMetric de monitoreo de rendimiento ( Swift | Obj-C ) para agregar seguimientos de solicitudes de red personalizados para monitorear solicitudes de red específicas.

Para instrumentar manualmente solicitudes de red personalizadas en Performance Monitoring, agregue un código similar al siguiente:

Rápido

Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y 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()

C objetivo

Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y 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];
}

Los seguimientos de solicitudes de red personalizados también admiten la adición de atributos personalizados ( Swift | Obj-C ), pero no métricas personalizadas.

Próximos pasos

  • Configure alertas para solicitudes de red que degradan el rendimiento de su aplicación. Por ejemplo, puede configurar una alerta por correo electrónico para su equipo si el tiempo de respuesta para un patrón de URL específico excede un umbral que usted establezca.