首页 > 解决方案 > Firebase 性能监控 React Native 集成

问题描述

我已经在我的 React Native 应用程序上安装了 Firebase 性能监控并成功集成。在我想跟踪我的网络请求性能并作为文档进行之后。

const trackRequest = async (url,method) => {
    // Define the network metric
    const metric = await perf().newHttpMetric(url, method);

    // Define meta details
    metric.putAttribute('testAttr', 'testValue');

    // Perform a HTTP request and provide response information
    const response = await fetch(url);
    metric.setHttpResponseCode(response.status);
    metric.setResponseContentType(response.headers.get('Content-Type'));
    metric.setResponsePayloadSize(response.headers.get('Content-Length'));

    // Stop the trace
    await metric.stop();

    return response.json();
};

我使用文档中的这个函数并在每个网络请求时间调用它

fetch("www.example.com")
trackRequest("www.example.com","GET")

谁能解释我做错了什么?

标签: androidiosfirebasereact-nativefirebase-performance

解决方案


看起来您没有正确使用 API。文档中似乎有一个很好的例子。您需要在调用start()之前调用度量标准stop()。此外,该示例显示您应该在每个方法调用上使用 await,但我真的不知道这是否有必要。

const trackRequest = async (url,method) => {
    const metric = await perf().newHttpMetric(url, method);

    // !!! Don't forget to call start()
    await metric.start();

    await metric.putAttribute('testAttr', 'testValue');

    const response = await fetch(url);

    await metric.setHttpResponseCode(response.status);
    await metric.setResponseContentType(response.headers.get('Content-Type'));
    await metric.setResponsePayloadSize(response.headers.get('Content-Length'));

    // Stop the trace only after you started it
    await metric.stop();

    return response.json();
};

推荐阅读