Agrega supervisión personalizada en solicitudes de red específicas (apps para Apple y Android)

Performance Monitoring recopila seguimientos para ayudarte a supervisar el rendimiento de tu app. Un seguimiento es un informe de datos de rendimiento que se capturan entre dos momentos en tu app.

Los seguimientos de solicitudes de red que recopila Performance Monitoring automáticamente incluyen la mayoría de las solicitudes de red de tu app. Sin embargo, es posible que no se informen algunas solicitudes o que uses una biblioteca diferente para hacer solicitudes de red. En estos casos, puedes usar la API de Performance Monitoring para instrumentar de forma manual los seguimientos personalizados de solicitudes de red. Los seguimientos de solicitudes de red personalizados solo son compatibles con las apps para Apple y Android.

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

En el código, tú defines el inicio y el final de un seguimiento de solicitud de red personalizado con las API que proporciona 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 pestaña secundaria Solicitudes de red de la tabla de seguimientos).

Agrega seguimientos de solicitudes de red personalizados

Usa la API de HttpMetric de Performance Monitoring para agregar seguimientos de solicitudes de red personalizados a fin de supervisar solicitudes de red específicas.

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

Kotlin+KTX

val url = URL("https://www.google.com")
val metric = Firebase.performance.newHttpMetric(
    "https://www.google.com",
    FirebasePerformance.HttpMethod.GET,
)
metric.trace {
    val conn = url.openConnection() as HttpURLConnection
    conn.doOutput = true
    conn.setRequestProperty("Content-Type", "application/json")
    try {
        val outputStream = DataOutputStream(conn.outputStream)
        outputStream.write(data)
    } catch (ignored: IOException) {
    }

    // Set HttpMetric attributes
    setRequestPayloadSize(data.size.toLong())
    setHttpResponseCode(conn.responseCode)

    printStreamContent(conn.inputStream)

    conn.disconnect()
}

Java

HttpMetric metric =
        FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
                FirebasePerformance.HttpMethod.GET);
final URL url = new URL("https://www.google.com");
metric.start();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try {
    DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
    outputStream.write(data);
} catch (IOException ignored) {
}
metric.setRequestPayloadSize(data.length);
metric.setHttpResponseCode(conn.getResponseCode());
printStreamContent(conn.getInputStream());

conn.disconnect();
metric.stop();

Los seguimientos de solicitudes de red personalizados también permiten agregar atributos personalizados, pero no métricas personalizadas.

Próximos pasos

  • Configura alertas para las solicitudes de red que degraden el rendimiento de tu app. Por ejemplo, puedes configurar una alerta por correo electrónico para tu equipo si el tiempo de respuesta de un patrón de URL específico supera un umbral que estableciste.