Thêm tính năng giám sát tuỳ chỉnh cho các yêu cầu mạng cụ thể (ứng dụng của Apple và Android)


Performance Monitoring thu thập dấu vết để giúp bạn theo dõi hiệu suất của ứng dụng. Dấu vết là báo cáo về dữ liệu hiệu suất được ghi lại giữa hai thời điểm trong ứng dụng.

Dấu vết yêu cầu mạng do Performance Monitoring thu thập tự động bao gồm hầu hết các yêu cầu mạng cho ứng dụng của bạn. Tuy nhiên, một số yêu cầu có thể không được báo cáo hoặc bạn có thể sử dụng một thư viện khác để đưa ra yêu cầu mạng. Trong những trường hợp này, bạn có thể sử dụng API Performance Monitoring để đo lường theo cách thủ công dấu vết yêu cầu mạng tuỳ chỉnh. Dấu vết yêu cầu mạng tuỳ chỉnh chỉ được hỗ trợ cho các ứng dụng Apple và Android.

Các chỉ số mặc định cho dấu vết yêu cầu mạng tuỳ chỉnh giống với các chỉ số cho dấu vết yêu cầu mạng do Performance Monitoring tự động thu thập, cụ thể là thời gian phản hồi, kích thước tải trọng phản hồi và yêu cầu cũng như tỷ lệ thành công. Dấu vết yêu cầu mạng tuỳ chỉnh không hỗ trợ việc thêm chỉ số tuỳ chỉnh.

Trong mã, bạn xác định điểm bắt đầu và điểm kết thúc của dấu vết yêu cầu mạng tuỳ chỉnh bằng cách sử dụng các API do SDK Performance Monitoring cung cấp.

Dấu vết yêu cầu mạng tuỳ chỉnh xuất hiện trong bảng điều khiển Firebase cùng với các yêu cầu mạng mà Performance Monitoring tự động thu thập (trong thẻ phụ Yêu cầu mạng của bảng dấu vết).

Thêm dấu vết yêu cầu mạng tuỳ chỉnh

Sử dụng Performance Monitoring HttpMetric API để thêm dấu vết yêu cầu mạng tuỳ chỉnh nhằm theo dõi các yêu cầu mạng cụ thể.

Để đo lường các yêu cầu mạng tuỳ chỉnh theo cách thủ công trong Performance Monitoring, hãy thêm mã tương tự như sau:

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();

Dấu vết yêu cầu mạng tuỳ chỉnh cũng hỗ trợ việc thêm thuộc tính tuỳ chỉnh nhưng không hỗ trợ chỉ số tuỳ chỉnh.

Các bước tiếp theo

  • Thiết lập thông báo cho các yêu cầu mạng đang làm giảm hiệu suất của ứng dụng. Ví dụ: bạn có thể định cấu hình thông báo qua email cho nhóm của mình nếu thời gian phản hồi cho một mẫu URL cụ thể vượt quá ngưỡng mà bạn đặt.