Menambahkan pemantauan kustom untuk permintaan jaringan tertentu (aplikasi Apple & Android)


Performance Monitoring mengumpulkan trace untuk membantu Anda memantau performa aplikasi. Trace adalah laporan data performa yang dicatat antara dua titik waktu dalam aplikasi Anda.

Trace permintaan jaringan yang otomatis dikumpulkan oleh Performance Monitoring mencakup sebagian besar permintaan jaringan untuk aplikasi Anda. Namun, beberapa permintaan mungkin tidak dilaporkan atau Anda kemungkinan menggunakan library yang berbeda untuk membuat permintaan jaringan. Dalam hal ini, Anda dapat menggunakan Performance Monitoring API untuk menginstrumentasikan trace permintaan jaringan kustom secara manual. Trace permintaan jaringan kustom hanya didukung untuk aplikasi Apple dan Android.

Metrik default untuk trace permintaan jaringan kustom sama dengan metrik untuk trace permintaan jaringan yang otomatis dikumpulkan oleh Performance Monitoring, terutama waktu respons, ukuran payload respons dan payload permintaan, serta tingkat keberhasilan. Trace permintaan jaringan kustom tidak mendukung penambahan metrik kustom.

Dalam kode, penentuan awal dan akhir trace permintaan jaringan kustom dilakukan menggunakan API yang diberikan oleh Performance Monitoring SDK.

Trace permintaan jaringan kustom muncul di Firebase console bersama permintaan jaringan yang dicatat Performance Monitoring secara otomatis (di subtab Network requests pada tabel trace).

Menambahkan trace permintaan jaringan kustom

Gunakan Performance Monitoring HTTPMetric API (Swift | Obj-C) untuk menambahkan trace permintaan jaringan kustom untuk memantau permintaan jaringan tertentu.

Untuk menginstrumentasikan permintaan jaringan kustom secara manual di Performance Monitoring, tambahkan kode yang mirip dengan berikut:

Swift

Catatan: Produk Firebase ini tidak tersedia di target macOS, Mac Catalyst, dan 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

Catatan: Produk Firebase ini tidak tersedia di target macOS, Mac Catalyst, dan 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];
}

Trace permintaan jaringan kustom juga mendukung penambahan atribut khusus (Swift | Obj-C), tetapi tidak mendukung metrik kustom.

Langkah berikutnya

  • Siapkan pemberitahuan untuk permintaan jaringan yang menurunkan performa aplikasi Anda. Misalnya, Anda dapat mengonfigurasi peringatan email untuk tim jika waktu respons untuk pola URL tertentu melebihi batas yang Anda tetapkan.