特定のネットワーク リクエスト用のカスタム モニタリングを追加する(Apple アプリと Android アプリ)


Performance Monitoring では、トレースを収集してアプリのパフォーマンスをモニタリングできます。トレースとは、アプリ内の 2 つの時点の間でキャプチャされたパフォーマンス データのレポートです。

Performance Monitoring によって自動的に収集されるネットワーク リクエスト トレースには、アプリのほとんどのネットワーク リクエストが含まれます。ただし、リクエストの一部が報告されない場合や、別のライブラリを使用してネットワーク リクエストを発行する場合もあります。このような場合には、Performance Monitoring API を使用してカスタム ネットワーク リクエスト トレースを手動で計測できます。カスタム ネットワーク リクエスト トレースは、Apple アプリと Android アプリでのみサポートされています。

カスタム ネットワーク リクエスト トレースのデフォルトの指標は、Performance Monitoring によって自動的に収集されるネットワーク リクエスト トレース(具体的には応答時間、レスポンスとリクエストのペイロード サイズ、成功率)の指標と同じです。カスタム ネットワーク リクエスト トレースでは、カスタム指標の追加がサポートされていません。

コードで、Performance Monitoring SDK に用意された API を使用して、カスタム ネットワーク リクエスト トレースの開始と終了を定義します。

カスタム ネットワーク リクエスト トレースは、Performance Monitoring によって自動的にキャプチャされるネットワーク リクエストとともに Firebase コンソール(のトレース テーブルの [ネットワーク リクエスト] サブタブ)に表示されます。

カスタム ネットワーク リクエスト トレースを追加する

Performance Monitoring の HTTPMetric API(Swift | Obj-C)を使用してカスタム ネットワーク リクエスト トレースを追加し、特定のネットワーク リクエストをモニタリングします。

Performance Monitoring でカスタム ネットワーク リクエストを手動で計測するには、次のようなコードを追加します。

Swift

注: この Firebase プロダクトは、macOS、Mac Catalyst、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

注: この Firebase プロダクトは、macOS、Mac Catalyst、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];
}

カスタム ネットワーク リクエスト トレースでは、カスタム属性(Swift | Obj-C)の追加もサポートされていますが、カスタム指標はサポートされていません。

次のステップ

  • アプリのパフォーマンスを低下させるネットワーク リクエストに関するアラートを設定する。たとえば、特定の URL パターンの応答時間が設定したしきい値を超えた場合に、チームに送信するメール通知アラートを構成できます。